From 5a39629109e87672fc891e2f2d3cfc8b46930411 Mon Sep 17 00:00:00 2001 From: Shawn Perry Date: Thu, 15 Jun 2017 11:35:01 -0600 Subject: [PATCH 1/2] Update README.md --- README.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a91146c..ccde1e0 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@

sanoid logo

====== -Sanoid is a policy-driven snapshot management tool for ZFS filesystems. When combined with the Linux KVM hypervisor, you can use it to make your systems functionally immortal. +# Sanoid -

sanoid rollback demo
(Real time demo: rolling back a full-scale cryptomalware infection in seconds!)

+# Note that the snapshots it takes are not atomic! + +Sanoid is a policy-driven snapshot management tool for ZFS filesystems. When combined with the Linux KVM hypervisor, you can use it to make your systems functionally immortal. More prosaically, you can use Sanoid to create, automatically thin, and monitor snapshots and pool health from a single eminently human-readable TOML config file at /etc/sanoid/sanoid.conf. (Sanoid also requires a "defaults" file located at /etc/sanoid/sanoid.defaults.conf, which is not user-editable.) A typical Sanoid system would have a single cron job: - ``` * * * * * /usr/local/bin/sanoid --cron ``` @@ -38,6 +39,51 @@ And its /etc/sanoid/sanoid.conf might look something like this: Which would be enough to tell sanoid to take and keep 36 hourly snapshots, 30 dailies, 3 monthlies, and no yearlies for all datasets under data/images (but not data/images itself, since process_children_only is set). Except in the case of data/images/win7-spice, which follows the same template (since it's a child of data/images) but only keeps 4 hourlies for whatever reason. +##### Sanoid Command Line Options + ++ --cron + + This will process your sanoid.conf file, create snapshots, then purge expired ones. + ++ --take-snapshots + + This will process your sanoid.conf file, create snapshots, but it will NOT purge expired ones. + ++ --prune-snapshots + + This will process your sanoid.conf file, it will NOT create snapshots, but it will purge expired ones. + ++ --monitor-snapshots + + This option is designed to be run by a Nagios monitoring system. It reports on the health of your snapshots. + ++ --monitor-health + + This option is designed to be run by a Nagios monitoring system. It reports on the health of the zpool your filesystems are on. It only monitors filesystems that are configured in the sanoid.conf file. + ++ --version + + This prints the version number, and exits. + ++ --verbose + + This prints additional information during the sanoid run. + ++ --force-update + + This clears out sanoid's zfs snapshot listing cache. This is normally not needed. + ++ --debug + + This prints out quite alot of additional information during a sanoid run, and is normally not needed. + + +---------- + +# Syncoid + +# Note that the snapshots it takes and transfers are not atomic! + Sanoid also includes a replication tool, syncoid, which facilitates the asynchronous incremental replication of ZFS filesystems. A typical syncoid command might look like this: ``` @@ -59,3 +105,60 @@ syncoid root@remotehost:data/images/vm backup/images/vm Which would pull-replicate the filesystem from the remote host to the local system over an SSH tunnel. Syncoid supports recursive replication (replication of a dataset and all its child datasets) and uses mbuffer buffering, lzop compression, and pv progress bars if the utilities are available on the systems used. + +##### Syncoid Command Line Options + ++ --[source] + + This is the source dataset. It can be either local or remote. + ++ --[destination] + + This is the destination dataset. It can be either local or remote. + ++ -r --recursive + + This will also transfer child datasets. + ++ --compress + + Currently accepts gzip, pigz, lzo, bzip2, pbzip2, lbzip2, lzip, plzip, xz, pxz, pixz. lzo is fast and light on the processsor and is the default, if available. pigz is fast and heavy on the processor. bzip2, pbzip2, lbzip2, lzip, plzip, xz, pxz, and pixz should only be used on very low bandwidth connections. If the selected compression method is unavailable on the source and destination, no compression will be used. + ++ --source-bwlimit + + This is the bandwidth limit imposed upon the source. This is mainly used if the target does not have mbuffer installed, but bandwidth limites are desired. + ++ --target-bw-limit + + This is the bandwidth limit imposed upon the target. This is mainly used if the source does not have mbuffer installed, but bandwidth limites are desired. + ++ --nocommandchecks + + Do not check the existance of commands before attempting the transfer. It assumes all programs are available. This should never be used. + ++ --verbose + + This prints additional information during the sanoid run. + ++ --debug + + This prints out quite alot of additional information during a sanoid run, and is normally not needed. + ++ --dumpsnaps + + This prints a list of snapshots during the run. + ++ --monitor-version + + This doesn't do anything right now. + ++ --no-stream + + This argument tells syncoid to use -i incrementals, not -I. This updates the target with the newest snapshot from the source, without replicating the intermediate snapshots in between. (If used for an initial synchronization, will do a full replication from newest snapshot and exit immediately, rather than starting with the oldest and then doing an immediate -i to the newest.) + ++ --no-sync-snap + + This argument tells syncoid to restrict itself to existing snapshots, instead of creating a semi-ephemeral syncoid snapshot at execution time. Especially useful in multi-target (A->B, A->C) replication schemes, where you might otherwise accumulate a large number of foreign syncoid snapshots. + ++ --sshport + Allow sync to/from boxes running SSH on non-standard ports From 959642349bfb984679d15bfe25b64caee3e56866 Mon Sep 17 00:00:00 2001 From: Shawn Perry Date: Thu, 15 Jun 2017 11:58:16 -0600 Subject: [PATCH 2/2] Removed some things from my patch and added missing args --- README.md | 77 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index ccde1e0..5bffa68 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@

sanoid logo

====== -# Sanoid +Sanoid is a policy-driven snapshot management tool for ZFS filesystems. When combined with the Linux KVM hypervisor, you can use it to make your systems functionally immortal. -# Note that the snapshots it takes are not atomic! - -Sanoid is a policy-driven snapshot management tool for ZFS filesystems. When combined with the Linux KVM hypervisor, you can use it to make your systems functionally immortal. +

sanoid rollback demo
(Real time demo: rolling back a full-scale cryptomalware infection in seconds!)

More prosaically, you can use Sanoid to create, automatically thin, and monitor snapshots and pool health from a single eminently human-readable TOML config file at /etc/sanoid/sanoid.conf. (Sanoid also requires a "defaults" file located at /etc/sanoid/sanoid.defaults.conf, which is not user-editable.) A typical Sanoid system would have a single cron job: ``` @@ -45,9 +43,13 @@ Which would be enough to tell sanoid to take and keep 36 hourly snapshots, 30 da This will process your sanoid.conf file, create snapshots, then purge expired ones. ++ --configdir + + Specify a location for the config file named sanoid.conf. Defaults to /etc/sanoid + + --take-snapshots - This will process your sanoid.conf file, create snapshots, but it will NOT purge expired ones. + This will process your sanoid.conf file, create snapshots, but it will NOT purge expired ones. Note that snapshots are not atomic relative to one another. + --prune-snapshots @@ -61,18 +63,22 @@ Which would be enough to tell sanoid to take and keep 36 hourly snapshots, 30 da This option is designed to be run by a Nagios monitoring system. It reports on the health of the zpool your filesystems are on. It only monitors filesystems that are configured in the sanoid.conf file. ++ --force-update + + This clears out sanoid's zfs snapshot listing cache. This is normally not needed. + + --version This prints the version number, and exits. ++ --quiet + + Supress non-error output. + + --verbose This prints additional information during the sanoid run. -+ --force-update - - This clears out sanoid's zfs snapshot listing cache. This is normally not needed. - + --debug This prints out quite alot of additional information during a sanoid run, and is normally not needed. @@ -82,8 +88,6 @@ Which would be enough to tell sanoid to take and keep 36 hourly snapshots, 30 da # Syncoid -# Note that the snapshots it takes and transfers are not atomic! - Sanoid also includes a replication tool, syncoid, which facilitates the asynchronous incremental replication of ZFS filesystems. A typical syncoid command might look like this: ``` @@ -122,7 +126,7 @@ Syncoid supports recursive replication (replication of a dataset and all its chi + --compress - Currently accepts gzip, pigz, lzo, bzip2, pbzip2, lbzip2, lzip, plzip, xz, pxz, pixz. lzo is fast and light on the processsor and is the default, if available. pigz is fast and heavy on the processor. bzip2, pbzip2, lbzip2, lzip, plzip, xz, pxz, and pixz should only be used on very low bandwidth connections. If the selected compression method is unavailable on the source and destination, no compression will be used. + Currently accepts gzip and lzo. lzo is fast and light on the processsor and is the default. If the selected compression method is unavailable on the source and destination, no compression will be used. + --source-bwlimit @@ -136,22 +140,6 @@ Syncoid supports recursive replication (replication of a dataset and all its chi Do not check the existance of commands before attempting the transfer. It assumes all programs are available. This should never be used. -+ --verbose - - This prints additional information during the sanoid run. - -+ --debug - - This prints out quite alot of additional information during a sanoid run, and is normally not needed. - -+ --dumpsnaps - - This prints a list of snapshots during the run. - -+ --monitor-version - - This doesn't do anything right now. - + --no-stream This argument tells syncoid to use -i incrementals, not -I. This updates the target with the newest snapshot from the source, without replicating the intermediate snapshots in between. (If used for an initial synchronization, will do a full replication from newest snapshot and exit immediately, rather than starting with the oldest and then doing an immediate -i to the newest.) @@ -160,5 +148,36 @@ Syncoid supports recursive replication (replication of a dataset and all its chi This argument tells syncoid to restrict itself to existing snapshots, instead of creating a semi-ephemeral syncoid snapshot at execution time. Especially useful in multi-target (A->B, A->C) replication schemes, where you might otherwise accumulate a large number of foreign syncoid snapshots. ++ --dumpsnaps + + This prints a list of snapshots during the run. + + --sshport - Allow sync to/from boxes running SSH on non-standard ports + + Allow sync to/from boxes running SSH on non-standard ports. + ++ --sshkey + + Use specified identity file as per ssh -i. + ++ --quiet + + Supress non-error output. + ++ --verbose + + This prints additional information during the sanoid run. + ++ --debug + + This prints out quite alot of additional information during a sanoid run, and is normally not needed. + ++ --version + + Print the version and exit. + ++ --monitor-version + + This doesn't do anything right now. + +Note that the snapshots it takes and transfers are not atomic relative to one another