mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-05-03 01:29:13 +00:00
sync_disks: use allow_rename to avoid collisions on the target storage
This makes it possible to migrate a VM with volumes store1:vm-123-disk-0 store2:vm-123-disk-0 to some targetstorage. Also prevents migration failure when there is an orphaned disk with the same volid on the target. To avoid confusion, the name should not change for 'vmstate'-volumes. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
97ece9ddce
commit
cc1a3820db
@ -389,6 +389,8 @@ sub sync_disks {
|
|||||||
|
|
||||||
$local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
|
$local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
|
||||||
|
|
||||||
|
$local_volumes->{$volid}->{is_vmstate} = $attr->{is_vmstate} ? 1 : 0;
|
||||||
|
|
||||||
if ($attr->{cdrom}) {
|
if ($attr->{cdrom}) {
|
||||||
if ($volid =~ /vm-\d+-cloudinit/) {
|
if ($volid =~ /vm-\d+-cloudinit/) {
|
||||||
$local_volumes->{$volid}->{ref} = 'generated';
|
$local_volumes->{$volid}->{ref} = 'generated';
|
||||||
@ -552,6 +554,7 @@ sub sync_disks {
|
|||||||
'bwlimit' => $bwlimit,
|
'bwlimit' => $bwlimit,
|
||||||
'insecure' => $opts->{migration_type} eq 'insecure',
|
'insecure' => $opts->{migration_type} eq 'insecure',
|
||||||
'with_snapshots' => $local_volumes->{$volid}->{snapshots},
|
'with_snapshots' => $local_volumes->{$volid}->{snapshots},
|
||||||
|
'allow_rename' => !$local_volumes->{$volid}->{is_vmstate},
|
||||||
};
|
};
|
||||||
|
|
||||||
my $new_volid = PVE::Storage::storage_migrate($storecfg, $volid, $self->{ssh_info},
|
my $new_volid = PVE::Storage::storage_migrate($storecfg, $volid, $self->{ssh_info},
|
||||||
|
@ -4323,6 +4323,7 @@ sub foreach_volid {
|
|||||||
foreach my $snapname (keys %{$conf->{snapshots}}) {
|
foreach my $snapname (keys %{$conf->{snapshots}}) {
|
||||||
my $snap = $conf->{snapshots}->{$snapname};
|
my $snap = $conf->{snapshots}->{$snapname};
|
||||||
$test_volid->($snap->{vmstate}, 0, 1, $snapname);
|
$test_volid->($snap->{vmstate}, 0, 1, $snapname);
|
||||||
|
$volhash->{$snap->{vmstate}}->{is_vmstate} = 1 if $snap->{vmstate};
|
||||||
PVE::QemuConfig->foreach_volume($snap, sub {
|
PVE::QemuConfig->foreach_volume($snap, sub {
|
||||||
my ($ds, $drive) = @_;
|
my ($ds, $drive) = @_;
|
||||||
$test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, $drive->{shared}, $snapname);
|
$test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, $drive->{shared}, $snapname);
|
||||||
|
Loading…
Reference in New Issue
Block a user