Merge branch 'pr788' into pr-merger
This commit is contained in:
commit
b3d32d9394
14
CHANGELIST
14
CHANGELIST
|
@ -1,8 +1,8 @@
|
||||||
2.1.0 [overall] documentation updates, small fixes (@HavardLine, @croadfeldt, @jimsalterjrs, @jim-perkins, @kr4z33, @phreaker0)
|
2.1.0 [overall] documentation updates, small fixes (@HavardLine, @croadfeldt, @jimsalterjrs, @jim-perkins, @kr4z33, @phreaker0)
|
||||||
[syncoid] do not require user to be specified for syncoid (@aerusso)
|
[syncoid] do not require user to be specified for syncoid (@aerusso)
|
||||||
[syncoid] implemented option for keeping sync snaps (@phreaker0)
|
[syncoid] implemented option for keeping sync snaps (@phreaker0)
|
||||||
[syncoid] use sudo if neccessary for checking pool capabilities regarding resumeable send (@phreaker0)
|
[syncoid] use sudo if necessary for checking pool capabilities regarding resumable send (@phreaker0)
|
||||||
[syncoid] catch another case were the resume state isn't availabe anymore (@phreaker0)
|
[syncoid] catch another case were the resume state isn't available anymore (@phreaker0)
|
||||||
[syncoid] check for an invalid argument combination (@phreaker0)
|
[syncoid] check for an invalid argument combination (@phreaker0)
|
||||||
[syncoid] fix iszfsbusy check for similar dataset names (@phreaker0)
|
[syncoid] fix iszfsbusy check for similar dataset names (@phreaker0)
|
||||||
[syncoid] append timezone offset to the syncoid snapshot name to fix DST collisions (@phreaker0)
|
[syncoid] append timezone offset to the syncoid snapshot name to fix DST collisions (@phreaker0)
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
2.0.2 [overall] documentation updates, new dependencies, small fixes, more warnings (@benyanke, @matveevandrey, @RulerOf, @klemens-u, @johnramsden, @danielewood, @g-a-c, @hartzell, @fryfrog, @phreaker0)
|
2.0.2 [overall] documentation updates, new dependencies, small fixes, more warnings (@benyanke, @matveevandrey, @RulerOf, @klemens-u, @johnramsden, @danielewood, @g-a-c, @hartzell, @fryfrog, @phreaker0)
|
||||||
[sanoid] changed and simplified DST handling (@shodanshok)
|
[sanoid] changed and simplified DST handling (@shodanshok)
|
||||||
[syncoid] reset partially resume state automatically (@phreaker0)
|
[syncoid] reset partially resume state automatically (@phreaker0)
|
||||||
[syncoid] handle some zfs erros automatically by parsing the stderr outputs (@phreaker0)
|
[syncoid] handle some zfs errors automatically by parsing the stderr outputs (@phreaker0)
|
||||||
[syncoid] fixed ordering of snapshots with the same creation timestamp (@phreaker0)
|
[syncoid] fixed ordering of snapshots with the same creation timestamp (@phreaker0)
|
||||||
[syncoid] don't use hardcoded paths (@phreaker0)
|
[syncoid] don't use hardcoded paths (@phreaker0)
|
||||||
[syncoid] fix for special setup with listsnapshots=on (@phreaker0)
|
[syncoid] fix for special setup with listsnapshots=on (@phreaker0)
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
[sanoid] implemented monitor-capacity flag for checking zpool capacity limits (@phreaker0)
|
[sanoid] implemented monitor-capacity flag for checking zpool capacity limits (@phreaker0)
|
||||||
[syncoid] Added support for ZStandard compression.(@danielewood)
|
[syncoid] Added support for ZStandard compression.(@danielewood)
|
||||||
[syncoid] implemented support for excluding datasets from replication with regular expressions (@phreaker0)
|
[syncoid] implemented support for excluding datasets from replication with regular expressions (@phreaker0)
|
||||||
[syncoid] correctly parse zfs column output, fixes resumeable send with datasets containing spaces (@phreaker0)
|
[syncoid] correctly parse zfs column output, fixes resumable send with datasets containing spaces (@phreaker0)
|
||||||
[syncoid] added option for using extra identification in the snapshot name for replication to multiple targets (@phreaker0)
|
[syncoid] added option for using extra identification in the snapshot name for replication to multiple targets (@phreaker0)
|
||||||
[syncoid] added option for skipping the parent dataset in recursive replication (@phreaker0)
|
[syncoid] added option for skipping the parent dataset in recursive replication (@phreaker0)
|
||||||
[syncoid] typos (@UnlawfulMonad, @jsavikko, @phreaker0)
|
[syncoid] typos (@UnlawfulMonad, @jsavikko, @phreaker0)
|
||||||
|
@ -118,12 +118,12 @@
|
||||||
replicating to target/parent/child2. This could still use some cleanup TBH; syncoid SHOULD exit 3
|
replicating to target/parent/child2. This could still use some cleanup TBH; syncoid SHOULD exit 3
|
||||||
if any of these errors happen (to assist detection of errors in scripting) but now would exit 0.
|
if any of these errors happen (to assist detection of errors in scripting) but now would exit 0.
|
||||||
|
|
||||||
1.4.12 Sanoid now strips trailing whitespace in template definitions in sanoid.conf, per Github #61
|
1.4.12 Sanoid now strips trailing whitespace in template definitions in sanoid.conf, per GitHub #61
|
||||||
|
|
||||||
1.4.11 enhanced Syncoid to use zfs `guid` property rather than `creation` property to ensure snapshots on source
|
1.4.11 enhanced Syncoid to use zfs `guid` property rather than `creation` property to ensure snapshots on source
|
||||||
and target actually match. This immediately prevents conflicts due to timezone differences on source and target,
|
and target actually match. This immediately prevents conflicts due to timezone differences on source and target,
|
||||||
and also paves the way in the future for Syncoid to find matching snapshots even after `zfs rename` on source
|
and also paves the way in the future for Syncoid to find matching snapshots even after `zfs rename` on source
|
||||||
or target. Thank you Github user @mailinglists35 for the idea!
|
or target. Thank you GitHub user @mailinglists35 for the idea!
|
||||||
|
|
||||||
1.4.10 added --compress=pigz-fast and --compress=pigz-slow. On a Xeon E3-1231v3, pigz-fast is equivalent compression
|
1.4.10 added --compress=pigz-fast and --compress=pigz-slow. On a Xeon E3-1231v3, pigz-fast is equivalent compression
|
||||||
to --compress=gzip but with compressed throughput of 75.2 MiB/s instead of 18.1 MiB/s. pigz-slow is around 5%
|
to --compress=gzip but with compressed throughput of 75.2 MiB/s instead of 18.1 MiB/s. pigz-slow is around 5%
|
||||||
|
@ -241,4 +241,4 @@
|
||||||
|
|
||||||
1.0.1 ported slightly modified iszfsbusy sub from syncoid to sanoid (to keep from thinning snapshots during replications)
|
1.0.1 ported slightly modified iszfsbusy sub from syncoid to sanoid (to keep from thinning snapshots during replications)
|
||||||
|
|
||||||
1.0.0 initial commit to Github
|
1.0.0 initial commit to GitHub
|
||||||
|
|
12
README.md
12
README.md
|
@ -95,7 +95,7 @@ For more full details on sanoid.conf settings see [Wiki page](https://github.com
|
||||||
|
|
||||||
+ --quiet
|
+ --quiet
|
||||||
|
|
||||||
Supress non-error output.
|
Suppress non-error output.
|
||||||
|
|
||||||
+ --verbose
|
+ --verbose
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ Will be executed before the snapshot(s) of a single dataset are taken. The follo
|
||||||
| ----------------- | ----------- |
|
| ----------------- | ----------- |
|
||||||
| `SANOID_SCRIPT` | The type of script being executed, one of `pre`, `post`, or `prune`. Allows for one script to be used for multiple tasks |
|
| `SANOID_SCRIPT` | The type of script being executed, one of `pre`, `post`, or `prune`. Allows for one script to be used for multiple tasks |
|
||||||
| `SANOID_TARGET` | **DEPRECATED** The dataset about to be snapshot (only the first dataset will be provided) |
|
| `SANOID_TARGET` | **DEPRECATED** The dataset about to be snapshot (only the first dataset will be provided) |
|
||||||
| `SANOID_TARGETS` | Comma separated list of all datasets to be snapshoted (currently only a single dataset, multiple datasets will be possible later with atomic groups) |
|
| `SANOID_TARGETS` | Comma separated list of all datasets to be snapshotted (currently only a single dataset, multiple datasets will be possible later with atomic groups) |
|
||||||
| `SANOID_SNAPNAME` | **DEPRECATED** The name of the snapshot that will be taken (only the first name will be provided, does not include the dataset name) |
|
| `SANOID_SNAPNAME` | **DEPRECATED** The name of the snapshot that will be taken (only the first name will be provided, does not include the dataset name) |
|
||||||
| `SANOID_SNAPNAMES` | Comma separated list of all snapshot names that will be taken (does not include the dataset name) |
|
| `SANOID_SNAPNAMES` | Comma separated list of all snapshot names that will be taken (does not include the dataset name) |
|
||||||
| `SANOID_TYPES` | Comma separated list of all snapshot types to be taken (yearly, monthly, weekly, daily, hourly, frequently) |
|
| `SANOID_TYPES` | Comma separated list of all snapshot types to be taken (yearly, monthly, weekly, daily, hourly, frequently) |
|
||||||
|
@ -232,7 +232,7 @@ 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.
|
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 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.
|
||||||
If ZFS supports resumeable send/receive streams on both the source and target those will be enabled as default.
|
If ZFS supports resumable send/receive streams on both the source and target those will be enabled as default.
|
||||||
|
|
||||||
As of 1.4.18, syncoid also automatically supports and enables resume of interrupted replication when both source and target support this feature.
|
As of 1.4.18, syncoid also automatically supports and enables resume of interrupted replication when both source and target support this feature.
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ As of 1.4.18, syncoid also automatically supports and enables resume of interrup
|
||||||
|
|
||||||
+ --target-bwlimit <limit t|g|m|k>
|
+ --target-bwlimit <limit t|g|m|k>
|
||||||
|
|
||||||
This is the bandwidth limit in bytes (kbytes, mbytesm etc) per second imposed upon the target. This is mainly used if the source does not have mbuffer installed, but bandwidth limits are desired.
|
This is the bandwidth limit in bytes (kbytes, mbytes, etc) per second imposed upon the target. This is mainly used if the source does not have mbuffer installed, but bandwidth limits are desired.
|
||||||
|
|
||||||
+ --no-command-checks
|
+ --no-command-checks
|
||||||
|
|
||||||
|
@ -334,7 +334,7 @@ As of 1.4.18, syncoid also automatically supports and enables resume of interrup
|
||||||
|
|
||||||
+ --no-resume
|
+ --no-resume
|
||||||
|
|
||||||
This argument tells syncoid to not use resumeable zfs send/receive streams.
|
This argument tells syncoid to not use resumable zfs send/receive streams.
|
||||||
|
|
||||||
+ --force-delete
|
+ --force-delete
|
||||||
|
|
||||||
|
@ -370,7 +370,7 @@ As of 1.4.18, syncoid also automatically supports and enables resume of interrup
|
||||||
|
|
||||||
+ --quiet
|
+ --quiet
|
||||||
|
|
||||||
Supress non-error output.
|
Suppress non-error output.
|
||||||
|
|
||||||
+ --debug
|
+ --debug
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ sanoid (2.1.0) unstable; urgency=medium
|
||||||
[overall] documentation updates, small fixes (@HavardLine, @croadfeldt, @jimsalterjrs, @jim-perkins, @kr4z33, @phreaker0)
|
[overall] documentation updates, small fixes (@HavardLine, @croadfeldt, @jimsalterjrs, @jim-perkins, @kr4z33, @phreaker0)
|
||||||
[syncoid] do not require user to be specified for syncoid (@aerusso)
|
[syncoid] do not require user to be specified for syncoid (@aerusso)
|
||||||
[syncoid] implemented option for keeping sync snaps (@phreaker0)
|
[syncoid] implemented option for keeping sync snaps (@phreaker0)
|
||||||
[syncoid] use sudo if neccessary for checking pool capabilities regarding resumeable send (@phreaker0)
|
[syncoid] use sudo if necessary for checking pool capabilities regarding resumable send (@phreaker0)
|
||||||
[syncoid] catch another case were the resume state isn't availabe anymore (@phreaker0)
|
[syncoid] catch another case were the resume state isn't available anymore (@phreaker0)
|
||||||
[syncoid] check for an invalid argument combination (@phreaker0)
|
[syncoid] check for an invalid argument combination (@phreaker0)
|
||||||
[syncoid] fix iszfsbusy check for similar dataset names (@phreaker0)
|
[syncoid] fix iszfsbusy check for similar dataset names (@phreaker0)
|
||||||
[syncoid] append timezone offset to the syncoid snapshot name to fix DST collisions (@phreaker0)
|
[syncoid] append timezone offset to the syncoid snapshot name to fix DST collisions (@phreaker0)
|
||||||
|
@ -39,7 +39,7 @@ sanoid (2.0.2) unstable; urgency=medium
|
||||||
[overall] documentation updates, new dependencies, small fixes, more warnings (@benyanke, @matveevandrey, @RulerOf, @klemens-u, @johnramsden, @danielewood, @g-a-c, @hartzell, @fryfrog, @phreaker0)
|
[overall] documentation updates, new dependencies, small fixes, more warnings (@benyanke, @matveevandrey, @RulerOf, @klemens-u, @johnramsden, @danielewood, @g-a-c, @hartzell, @fryfrog, @phreaker0)
|
||||||
[syncoid] changed and simplified DST handling (@shodanshok)
|
[syncoid] changed and simplified DST handling (@shodanshok)
|
||||||
[syncoid] reset partially resume state automatically (@phreaker0)
|
[syncoid] reset partially resume state automatically (@phreaker0)
|
||||||
[syncoid] handle some zfs erros automatically by parsing the stderr outputs (@phreaker0)
|
[syncoid] handle some zfs errors automatically by parsing the stderr outputs (@phreaker0)
|
||||||
[syncoid] fixed ordering of snapshots with the same creation timestamp (@phreaker0)
|
[syncoid] fixed ordering of snapshots with the same creation timestamp (@phreaker0)
|
||||||
[syncoid] don't use hardcoded paths (@phreaker0)
|
[syncoid] don't use hardcoded paths (@phreaker0)
|
||||||
[syncoid] fix for special setup with listsnapshots=on (@phreaker0)
|
[syncoid] fix for special setup with listsnapshots=on (@phreaker0)
|
||||||
|
@ -102,7 +102,7 @@ sanoid (2.0.0) unstable; urgency=medium
|
||||||
[sanoid] implemented monitor-capacity flag for checking zpool capacity limits (@phreaker0)
|
[sanoid] implemented monitor-capacity flag for checking zpool capacity limits (@phreaker0)
|
||||||
[syncoid] Added support for ZStandard compression.(@danielewood)
|
[syncoid] Added support for ZStandard compression.(@danielewood)
|
||||||
[syncoid] implemented support for excluding datasets from replication with regular expressions (@phreaker0)
|
[syncoid] implemented support for excluding datasets from replication with regular expressions (@phreaker0)
|
||||||
[syncoid] correctly parse zfs column output, fixes resumeable send with datasets containing spaces (@phreaker0)
|
[syncoid] correctly parse zfs column output, fixes resumable send with datasets containing spaces (@phreaker0)
|
||||||
[syncoid] added option for using extra identification in the snapshot name for replication to multiple targets (@phreaker0)
|
[syncoid] added option for using extra identification in the snapshot name for replication to multiple targets (@phreaker0)
|
||||||
[syncoid] added option for skipping the parent dataset in recursive replication (@phreaker0)
|
[syncoid] added option for skipping the parent dataset in recursive replication (@phreaker0)
|
||||||
[syncoid] typos (@UnlawfulMonad, @jsavikko, @phreaker0)
|
[syncoid] typos (@UnlawfulMonad, @jsavikko, @phreaker0)
|
||||||
|
|
12
sanoid
12
sanoid
|
@ -130,7 +130,7 @@ sub monitor_snapshots {
|
||||||
|
|
||||||
my ($config, $snaps, $snapsbytype, $snapsbypath) = @_;
|
my ($config, $snaps, $snapsbytype, $snapsbypath) = @_;
|
||||||
my %datestamp = get_date();
|
my %datestamp = get_date();
|
||||||
my $errorlevel = 0;
|
my $errlevel = 0;
|
||||||
my $msg;
|
my $msg;
|
||||||
my @msgs;
|
my @msgs;
|
||||||
my @paths;
|
my @paths;
|
||||||
|
@ -169,7 +169,7 @@ sub monitor_snapshots {
|
||||||
my $dispcrit = displaytime($crit);
|
my $dispcrit = displaytime($crit);
|
||||||
if ( $elapsed > $crit || $elapsed == -1) {
|
if ( $elapsed > $crit || $elapsed == -1) {
|
||||||
if ($crit > 0) {
|
if ($crit > 0) {
|
||||||
if (! $config{$section}{'monitor_dont_crit'}) { $errorlevel = 2; }
|
if (! $config{$section}{'monitor_dont_crit'}) { $errlevel = 2; }
|
||||||
if ($elapsed == -1) {
|
if ($elapsed == -1) {
|
||||||
push @msgs, "CRIT: $path has no $type snapshots at all!";
|
push @msgs, "CRIT: $path has no $type snapshots at all!";
|
||||||
} else {
|
} else {
|
||||||
|
@ -178,7 +178,7 @@ sub monitor_snapshots {
|
||||||
}
|
}
|
||||||
} elsif ($elapsed > $warn) {
|
} elsif ($elapsed > $warn) {
|
||||||
if ($warn > 0) {
|
if ($warn > 0) {
|
||||||
if (! $config{$section}{'monitor_dont_warn'} && ($errorlevel < 2) ) { $errorlevel = 1; }
|
if (! $config{$section}{'monitor_dont_warn'} && ($errlevel < 2) ) { $errlevel = 1; }
|
||||||
push @msgs, "WARN: $path newest $type snapshot is $dispelapsed old (should be < $dispwarn)";
|
push @msgs, "WARN: $path newest $type snapshot is $dispelapsed old (should be < $dispwarn)";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -196,7 +196,7 @@ sub monitor_snapshots {
|
||||||
if ($msg eq '') { $msg = "OK: all monitored datasets \($paths\) have fresh snapshots"; }
|
if ($msg eq '') { $msg = "OK: all monitored datasets \($paths\) have fresh snapshots"; }
|
||||||
|
|
||||||
print "$msg\n";
|
print "$msg\n";
|
||||||
exit $errorlevel;
|
exit $errlevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -913,7 +913,7 @@ sub init {
|
||||||
# for sections directly when they've already been defined recursively, without starting them over from scratch.
|
# for sections directly when they've already been defined recursively, without starting them over from scratch.
|
||||||
if (! defined ($config{$section}{'initialized'})) {
|
if (! defined ($config{$section}{'initialized'})) {
|
||||||
if ($args{'debug'}) { print "DEBUG: initializing \$config\{$section\} with default values from $default_conf_file.\n"; }
|
if ($args{'debug'}) { print "DEBUG: initializing \$config\{$section\} with default values from $default_conf_file.\n"; }
|
||||||
# set default values from %defaults, which can then be overriden by template
|
# set default values from %defaults, which can then be overridden by template
|
||||||
# and/or local settings within the module.
|
# and/or local settings within the module.
|
||||||
foreach my $key (keys %{$defaults{'template_default'}}) {
|
foreach my $key (keys %{$defaults{'template_default'}}) {
|
||||||
if (! ($key =~ /template|recursive|children_only/)) {
|
if (! ($key =~ /template|recursive|children_only/)) {
|
||||||
|
@ -1161,7 +1161,7 @@ sub check_zpool() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Tony: Debuging
|
# Tony: Debugging
|
||||||
# print "Size: $size \t Used: $used \t Avai: $avail \t Cap: $cap \t Health: $health\n";
|
# print "Size: $size \t Used: $used \t Avai: $avail \t Cap: $cap \t Health: $health\n";
|
||||||
|
|
||||||
close(STAT);
|
close(STAT);
|
||||||
|
|
2
syncoid
2
syncoid
|
@ -861,7 +861,7 @@ sub syncdataset {
|
||||||
}
|
}
|
||||||
if ($debug) { print "DEBUG: $bookmarkcmd\n"; }
|
if ($debug) { print "DEBUG: $bookmarkcmd\n"; }
|
||||||
system($bookmarkcmd) == 0 or do {
|
system($bookmarkcmd) == 0 or do {
|
||||||
# fallback: assume nameing conflict and try again with guid based suffix
|
# fallback: assume naming conflict and try again with guid based suffix
|
||||||
my $guid = $snaps{'source'}{$newsyncsnap}{'guid'};
|
my $guid = $snaps{'source'}{$newsyncsnap}{'guid'};
|
||||||
$guid = substr($guid, 0, 6);
|
$guid = substr($guid, 0, 6);
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ function checkEnvironment {
|
||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
echo "you should be running this test in a"
|
echo "you should be running this test in a"
|
||||||
echo "dedicated vm, as it will mess with your system!"
|
echo "dedicated vm, as it will mess with your system!"
|
||||||
echo "Are you sure you wan't to continue? (y)"
|
echo "Are you sure you want to continue? (y)"
|
||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue