[libvirt] RFC: libvirt support for QEMU live patching

Madhu Pavan kmp at linux.vnet.ibm.com
Fri Sep 15 07:57:31 UTC 2017


Hi,
QEMU live patching should be just a matter of updating the QEMU RPM package
and then live migrating the VMs to another QEMU instance on the same host
(which would point to the just installed new QEMU executable).
I think it will be useful to support it from libvirt side. After some 
searching I found a
RFC patch posted in Nov 2013. Here is the link to it
https://www.redhat.com/archives/libvir-list/2013-November/msg00372.html
Approach followed in above mentioned link is as follows:
1. newDef = deep copy oldVm definition
2. newVm = create VM using newDef, start QEMU process with all vCPUs paused
3. oldVm migrate to newVm using unix socket
4. shutdown oldVm
5. newPid = newVm->pid
6. finalDef = live deep copy of newVm definition
7. Drop the newVm from qemu domain table without shutting down QEMU process
8. Assign finalDef to oldVm
9. oldVm attaches to QEMU process newPid using finalDef
10.resume all vCPUs in oldVm

I can see it didn't get communities approval for having problems in 
handling UUID
of the vm's. To fix the problem we need to teach libvirt to manage two 
qemu processes
at once both tied to same UUID. I would like to know if there is any 
interested approach
to get this done. I would like to send patches on this.

Is there any specific reason why it is not been pursued for the last 4 year?

I plan to use postcopy along with the local migration as part of 
migration, that way the
guest need not be even paused for a busy guest.

Thanks,
Madhu Pavan.




More information about the libvir-list mailing list