since Qemu 2.9, block device write access is limited to one writer unless shared_rw is set to true. there is an exception for live-migrating local disks via NBD as long as the VM is suspended.
stop the NBD server before resuming the VM accordingly to unbreak local disk live-migration. Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> (cherry picked from commit 504105c638f2234c9d4a00109c9bb41e36c47ca3) --- PVE/QemuMigrate.pm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index e6f147e..b513a67 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -884,6 +884,16 @@ sub phase3_cleanup { if !rename($conffile, $newconffile); if ($self->{livemigration}) { + if ($self->{storage_migration}) { + # stop nbd server on remote vm - requirement for resume since 2.9 + my $cmd = [@{$self->{rem_ssh}}, 'qm', 'nbdstop', $vmid]; + + eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => sub {}) }; + if (my $err = $@) { + $self->log('err', $err); + $self->{errors} = 1; + } + } # now that config file is move, we can resume vm on target if livemigrate my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock', '--nocheck']; eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, @@ -942,14 +952,6 @@ sub phase3_cleanup { } } - #stop nbd server to remote vm - my $cmd = [@{$self->{rem_ssh}}, 'qm', 'nbdstop', $vmid]; - - eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => sub {}) }; - if (my $err = $@) { - $self->log('err', $err); - $self->{errors} = 1; - } } # clear migrate lock -- 2.14.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel