Qemu currently implements pre-copy live migration. VM memory pages are first copied from the source hypervisor to the destination, potentially multiple times as pages get dirtied during transfer, then VCPU state is migrated. Unfortunately, if the VM dirties memory faster than the network bandwidth, then pre-copy cannot finish. `virsh` currently includes an option to suspend a VM after a timeout, so that migration may finish, but at the expense of downtime. A future version of qemu will implement post-copy live migration. The VCPU state is first migrated to the destination hypervisor, then memory pages are pulled from the source hypervisor. Post-copy has the potential to do migration with zero-downtime, despite the VM dirtying pages fast, with minimum performance impact. On the other hand, one post-copy is in progress, any network failure would render the VM unusable, as its memory is partitioned between the source and destination hypervisor. Therefore, post-copy should only be used when necessary. Post-copy migration in qemu will work as follows: (1) The `x-postcopy-ram` migration capability needs to be set. (2) Migration is started. (3) When the user decides so, post-copy migration is activated by sending the `migrate-start-postcopy` command. Qemu acknowledges by setting migration status to `postcopy-active`. Cristian Klein (6): Added qemu postcopy-active migration status Added public API to enable post-copy migration Added new public API virDomainMigrateStartPostCopy Added domainMigrateStartPostCopy in qemu driver Added domainMigrateStartPostCopy in remote driver virsh: added migrate --postcopy-after include/libvirt/libvirt.h.in | 3 ++ src/driver.h | 4 +++ src/libvirt.c | 44 +++++++++++++++++++++++++++ src/libvirt_public.syms | 5 +++ src/qemu/qemu_driver.c | 44 +++++++++++++++++++++++++++ src/qemu/qemu_migration.c | 44 +++++++++++++++++++++++++++ src/qemu/qemu_migration.h | 3 +- src/qemu/qemu_monitor.c | 21 ++++++++++++- src/qemu/qemu_monitor.h | 3 ++ src/qemu/qemu_monitor_json.c | 21 ++++++++++++- src/qemu/qemu_monitor_json.h | 1 + src/qemu/qemu_monitor_text.c | 14 ++++++++- src/qemu/qemu_monitor_text.h | 2 ++ src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 12 +++++++- tools/virsh-domain.c | 72 ++++++++++++++++++++++++++++++++++++++++++-- tools/virsh.pod | 5 +++ 17 files changed, 292 insertions(+), 7 deletions(-) -- 1.9.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list