projects
/
sysadmin-cookbook
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
da333d4
)
rename variables to more descriptive names
author
Dobrica Pavlinusic
<dpavlin@rot13.org>
Thu, 21 Mar 2019 18:36:50 +0000
(19:36 +0100)
committer
Dobrica Pavlinusic
<dpavlin@rot13.org>
Thu, 21 Mar 2019 18:36:50 +0000
(19:36 +0100)
recepies/zfs/zfs-replicate-pool.pl
patch
|
blob
|
history
diff --git
a/recepies/zfs/zfs-replicate-pool.pl
b/recepies/zfs/zfs-replicate-pool.pl
index
57c94cb
..
5febad2
100755
(executable)
--- a/
recepies/zfs/zfs-replicate-pool.pl
+++ b/
recepies/zfs/zfs-replicate-pool.pl
@@
-10,8
+10,8
@@
use Time::HiRes;
my $compress = '| lzop -c';
my $decompress = 'lzop -d |';
my $compress = '| lzop -c';
my $decompress = 'lzop -d |';
-my $
arh = Net::OpenSSH->new('root@10.60.0.204
');
-my $
dev
= Net::OpenSSH->new('root@10.60.0.202');
+my $
from = Net::OpenSSH->new('root@10.60.0.90
');
+my $
to
= Net::OpenSSH->new('root@10.60.0.202');
sub on {
my ($ssh,$command) = @_;
sub on {
my ($ssh,$command) = @_;
@@
-25,16
+25,16
@@
sub on {
}
}
}
}
-print on $
arh
=> 'zpool status';
-print on $
dev
=> 'zpool status';
+print on $
from
=> 'zpool status';
+print on $
to
=> 'zpool status';
-my @
arh = on $arh
=> 'zfs list -H -o name';
-my @
dev = on $dev
=> 'zfs list -H -o name';
+my @
from = on $from
=> 'zfs list -H -o name';
+my @
to = on $to
=> 'zfs list -H -o name';
-warn "# ",dump( \@
arh, \@dev
);
+warn "# ",dump( \@
from, \@to
);
-my $from_pool = $
arh
[0];
-my $to_pool = $
dev
[0];
+my $from_pool = $
from
[0];
+my $to_pool = $
to
[0];
sub snapshots_from {
my ($ssh) = @_;
sub snapshots_from {
my ($ssh) = @_;
@@
-54,32
+54,32
@@
sub snapshots_from {
return $snapshot;
}
return $snapshot;
}
-foreach my $fs ( @
arh
) {
+foreach my $fs ( @
from
) {
my $name = $fs;
$name =~ s{^$from_pool/}{} || next; # FIXME skip top-level fs
warn "? $name";
my $name = $fs;
$name =~ s{^$from_pool/}{} || next; # FIXME skip top-level fs
warn "? $name";
- my $
arh_snapshot = snapshots_from $arh
;
- if ( ! exists( $
arh
_snapshot->{$fs} ) ) {
+ my $
from_snapshot = snapshots_from $from
;
+ if ( ! exists( $
from
_snapshot->{$fs} ) ) {
my $snapshot = $fs . '@send';
my $snapshot = $fs . '@send';
- print on $
arh
=> "zfs snapshot $snapshot";
- die $
arh->error if $arh
->error;
- $
arh_snapshot = snapshots_from $arh
;
+ print on $
from
=> "zfs snapshot $snapshot";
+ die $
from->error if $from
->error;
+ $
from_snapshot = snapshots_from $from
;
}
}
- my $max_snapshot = $#{ $
arh
_snapshot->{$fs} };
+ my $max_snapshot = $#{ $
from
_snapshot->{$fs} };
warn "$fs has ",$max_snapshot+1," snapshots\n";
warn "$fs has ",$max_snapshot+1," snapshots\n";
- my $to_
dev
= "$to_pool/$name";
+ my $to_
to
= "$to_pool/$name";
foreach my $i ( 0 .. $max_snapshot ) {
foreach my $i ( 0 .. $max_snapshot ) {
- my $snap = $
arh
_snapshot->{$fs}->[$i] || die "no snap";
+ my $snap = $
from
_snapshot->{$fs}->[$i] || die "no snap";
- my $
dev_snapshot = snapshots_from $dev
;
- if ( exists $
dev_snapshot->{$to_dev
} ) {
- if ( first { /^\Q$snap\E$/ } @{ $
dev_snapshot->{$to_dev
} } ) {
+ my $
to_snapshot = snapshots_from $to
;
+ if ( exists $
to_snapshot->{$to_to
} ) {
+ if ( first { /^\Q$snap\E$/ } @{ $
to_snapshot->{$to_to
} } ) {
warn "+ $name @ $snap exists\n";
next;
} else {
warn "+ $name @ $snap exists\n";
next;
} else {
@@
-93,35
+93,35
@@
foreach my $fs ( @arh ) {
if ( $i == 0 ) {
$snapshot = "$from_pool/$name\@$snap";
} else {
if ( $i == 0 ) {
$snapshot = "$from_pool/$name\@$snap";
} else {
- my $prev = $
arh
_snapshot->{$fs}->[$i-1] || die "no prev";
+ my $prev = $
from
_snapshot->{$fs}->[$i-1] || die "no prev";
$snapshot = "-i $from_pool/$name\@$prev $from_pool/$name\@$snap";
}
$snapshot = "-i $from_pool/$name\@$prev $from_pool/$name\@$snap";
}
- warn "zfs transfer $snapshot -> $to_
dev
\n";
+ warn "zfs transfer $snapshot -> $to_
to
\n";
my $t = time();
my $t = time();
- my $recv = "nc -w 3 -l -p 8888 | $decompress zfs receive $to_
dev
";
+ my $recv = "nc -w 3 -l -p 8888 | $decompress zfs receive $to_
to
";
warn ">> $recv\n";
warn ">> $recv\n";
- my ($rin1,$pid1) = $
dev
->pipe_in($recv);
+ my ($rin1,$pid1) = $
to
->pipe_in($recv);
warn ">> pid: $pid1";
sleep 1; # FIXME wait for netcat to start
my $send = "zfs send $snapshot $compress | nc -q 0 -w 2 10.60.0.202 8888";
warn "<< $send\n";
warn ">> pid: $pid1";
sleep 1; # FIXME wait for netcat to start
my $send = "zfs send $snapshot $compress | nc -q 0 -w 2 10.60.0.202 8888";
warn "<< $send\n";
- $
arh
->system($send);
- die $
arh->error if $arh
->error;
+ $
from
->system($send);
+ die $
from->error if $from
->error;
$t = time() - $t;
warn "took $t seconds to complete\n";
$t = time() - $t;
warn "took $t seconds to complete\n";
- $
dev
->system("zfs set readonly=on $to_pool/$name") if $i == 0;
- warn "ERROR: ",$
dev->error if $dev
->error;
+ $
to
->system("zfs set readonly=on $to_pool/$name") if $i == 0;
+ warn "ERROR: ",$
to->error if $to
->error;
sleep 1;
sleep 1;
- $
dev_snapshot = snapshots_from $dev
;
- die "can't find new snapshot $snap" unless $
dev_snapshot->{$to_dev
};
+ $
to_snapshot = snapshots_from $to
;
+ die "can't find new snapshot $snap" unless $
to_snapshot->{$to_to
};
}
}