bwlimit: add parameter for QemuMigrate::phase2

used for online local disks via qemu_drive_mirror

Add TODO comment for offline disks, as clone_disk calls `qemu-img
convert`, which does not have a bandwidth limit parameter.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
Stoiko Ivanov 2019-04-01 11:31:02 +02:00 committed by Thomas Lamprecht
parent 15a37695b6
commit d189e5901b
2 changed files with 10 additions and 2 deletions

View File

@ -661,6 +661,8 @@ sub phase2 {
my $start = time(); my $start = time();
my $opt_bwlimit = $self->{opts}->{bwlimit};
if (defined($self->{online_local_volumes})) { if (defined($self->{online_local_volumes})) {
$self->{storage_migration} = 1; $self->{storage_migration} = 1;
$self->{storage_migration_jobs} = {}; $self->{storage_migration_jobs} = {};
@ -669,9 +671,14 @@ sub phase2 {
die "The number of local disks does not match between the source and the destination.\n" die "The number of local disks does not match between the source and the destination.\n"
if (scalar(keys %{$self->{target_drive}}) != scalar @{$self->{online_local_volumes}}); if (scalar(keys %{$self->{target_drive}}) != scalar @{$self->{online_local_volumes}});
foreach my $drive (keys %{$self->{target_drive}}){ foreach my $drive (keys %{$self->{target_drive}}){
my $nbd_uri = $self->{target_drive}->{$drive}->{nbd_uri}; my $target = $self->{target_drive}->{$drive};
my $nbd_uri = $target->{nbd_uri};
my $source_sid = PVE::Storage::Plugin::parse_volume_id($conf->{$drive});
my $target_sid = PVE::Storage::Plugin::parse_volume_id($target->{volid});
my $bwlimit = PVE::Storage::get_bandwidth_limit('migrate', [$source_sid, $target_sid], $opt_bwlimit);
$self->log('info', "$drive: start migration to $nbd_uri"); $self->log('info', "$drive: start migration to $nbd_uri");
PVE::QemuServer::qemu_drive_mirror($vmid, $drive, $nbd_uri, $vmid, undef, $self->{storage_migration_jobs}, 1); PVE::QemuServer::qemu_drive_mirror($vmid, $drive, $nbd_uri, $vmid, undef, $self->{storage_migration_jobs}, 1, undef, $bwlimit);
} }
} }

View File

@ -6940,6 +6940,7 @@ sub clone_disk {
my $sparseinit = PVE::Storage::volume_has_feature($storecfg, 'sparseinit', $newvolid); my $sparseinit = PVE::Storage::volume_has_feature($storecfg, 'sparseinit', $newvolid);
if (!$running || $snapname) { if (!$running || $snapname) {
# TODO: handle bwlimits
qemu_img_convert($drive->{file}, $newvolid, $size, $snapname, $sparseinit); qemu_img_convert($drive->{file}, $newvolid, $size, $snapname, $sparseinit);
} else { } else {