[pve-devel] [PATCH] implement offline migration on zfs
Wolfgang Link
w.link at proxmox.com
Fri Apr 24 13:27:26 CEST 2015
Signed-off-by: Wolfgang Link <w.link at proxmox.com>
---
PVE/Storage.pm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/PVE/Storage.pm b/PVE/Storage.pm
index e46bc77..6fe0953 100755
--- a/PVE/Storage.pm
+++ b/PVE/Storage.pm
@@ -490,6 +490,35 @@ sub storage_migrate {
} else {
die "$errstr - target type '$tcfg->{type}' not implemented\n";
}
+ } elsif ($scfg->{type} eq 'zfspool') {
+
+ if($tcfg->{type} eq 'zfspool'){
+
+ die "$errstr - pool on target has not same name as source!"if $tcfg->{pool} ne $scfg->{pool};
+
+ my $zfspath = $volid ;
+ $zfspath =~ /(vm\-\d+\-disk\-\d+)/;
+ $zfspath = "$scfg->{pool}\/$1";
+
+ my $snap = "zfs snapshot $zfspath\@mig";
+
+ my $send = "zfs send -v $zfspath\@mig \| ssh root\@$target_host zfs recv $zfspath";
+
+ my $destroy_target = "ssh root\@$target_host zfs destroy $zfspath\@mig";
+ run_command($snap);
+ eval{
+ run_command($send);
+ };
+ my $err;
+ if ($err = $@){
+ run_command("zfs destroy $zfspath\@mig");
+ die $err;
+ }
+ run_command($destroy_target);
+
+ } else {
+ die "$errstr - target type $tcfg->{type} is not valid\n";
+ }
} else {
die "$errstr - source type '$scfg->{type}' not implemented\n";
}
--
1.7.10.4
More information about the pve-devel
mailing list