5
0
mirror of git://git.proxmox.com/git/qemu-server.git synced 2025-01-27 14:03:54 +03:00

close #2792: allow online migration with replicated snapshots

Since commit 9b6efe43 ("migrate: add live-migration of replicated
disks") live-migration with replicated volumes is possible. When
handling the replication, it is checked that all local volumes
previously detected as replicatable are actually replicated. So the
check if migration with snapshots is possible can just allow volumes
that are detected as replicatable.

Note that VM state files are also replicated.

If there is an invalid configuration with a non-replicatable volume or
state file and replication is enabled, then replication will fail, and
thus migration will fail early.

Trying to live-migrate to a non-replication target (needs --force)
will still fail if there are snapshots, because they are (correctly)
detected as non-replicated.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
Fiona Ebner 2023-01-18 14:52:40 +01:00 committed by Fabian Grünbichler
parent 252e2624dc
commit 5cbf4d727d
2 changed files with 9 additions and 4 deletions

View File

@ -433,7 +433,9 @@ sub scan_local_volumes {
# we cannot migrate shapshots on local storage
# exceptions: 'zfspool' or 'qcow2' files (on directory storage)
die "online storage migration not possible if snapshot exists\n" if $self->{running};
die "online storage migration not possible if non-replicated snapshot exists\n"
if $self->{running} && !$local_volumes->{$volid}->{replicated};
die "remote migration with snapshots not supported yet\n" if $self->{opts}->{remote};
if (!($scfg->{type} eq 'zfspool'

View File

@ -678,7 +678,7 @@ my $tests = [
'with-local-disks' => 1,
},
expected_calls => {},
expect_die => 'online storage migration not possible if snapshot exists',
expect_die => 'online storage migration not possible if non-replicated snapshot exists',
expected => {
source_volids => local_volids_for_vm(4567),
target_volids => {},
@ -1237,8 +1237,11 @@ my $tests = [
'with-local-disks' => 1,
},
target_volids => local_volids_for_vm(105),
expected_calls => {},
expect_die => "online storage migration not possible if snapshot exists",
expected_calls => {
%{$replicated_expected_calls_online},
'block-dirty-bitmap-add-drive-scsi0' => 1,
'block-dirty-bitmap-add-drive-ide0' => 1,
},
expected => {
source_volids => local_volids_for_vm(105),
target_volids => local_volids_for_vm(105),