[pve-devel] [PATCH pve-storage] Add LVM-thin storage migration
Wolfgang Link
w.link at proxmox.com
Tue Jun 7 09:10:07 CEST 2016
It is now possibel to migrate LVM-thin volumes offline from one node to an other.
Also LVM what is used by Qemu.
---
PVE/Storage.pm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/PVE/Storage.pm b/PVE/Storage.pm
index 1192ce3..22c1a4c 100755
--- a/PVE/Storage.pm
+++ b/PVE/Storage.pm
@@ -542,6 +542,41 @@ sub storage_migrate {
} else {
die "$errstr - target type $tcfg->{type} is not valid\n";
}
+
+ } elsif ($scfg->{type} eq 'lvmthin' || $scfg->{type} eq 'lvm') {
+
+ if ($tcfg->{type} eq 'lvmthin' || $tcfg->{type} eq 'lvm') {
+
+ die "$errstr - volume has to be on the same storage backend type!"
+ if $scfg->{type} ne $tcfg->{type};
+
+ die "$errstr - pool on target has not same name as source!"
+ if $tcfg->{type} ne $scfg->{type};
+
+ my (undef, $volname) = parse_volname($cfg, $volid);
+ my $size = volume_size_info($cfg, $volid, 5);
+ my $path = path($cfg, $volid);
+
+ $volname =~ m/^vm-(\d+)-/;
+ my $vmid = $1;
+
+ run_command(['/usr/bin/ssh', "root\@${target_host}",
+ 'pvesm', 'alloc', $target_storeid, $vmid,
+ $volname, $size/1024]);
+
+ eval {
+ run_command([["dd", "if=$path"],
+ ["/usr/bin/ssh", "root\@${target_host}", "dd", "of=$path"]]);
+ };
+ if (my $err = $@) {
+ run_command(['/usr/bin/ssh', "root\@${target_host}",
+ 'pvesm', 'free', $volid]);
+ } else {
+ vdisk_free($cfg, $volid);
+ }
+ } else {
+ die "$errstr - target type $tcfg->{type} is not valid\n";
+ }
} else {
die "$errstr - source type '$scfg->{type}' not implemented\n";
}
--
2.1.4
More information about the pve-devel
mailing list