[libvirt-users] Is it possible to live migrate guest OS'es between different versions of kvm/qemu-kvm with libvirt?

Chris Lalancette clalance at redhat.com
Tue Sep 21 15:27:13 UTC 2010


On 08/30/10 - 10:48:16AM, Nils Cant wrote:
> Hi,
> 
> I currently have a couple of Debian KVM servers with all a different
> version of kvm or qemu-kvm.
> I can live migrate a guest OS from one server to the other just
> fine, as long as the version of qemu-kvm is the same.
> 
> However, when I try to migrate a guest to a server running a newer
> (or older) version of qemu-kvm, I run into problems. I think this is
> because the xml configuration differs slightly between version.
> 
> For example, if I try to migrate from a server running qemu-kvm
> 0.11.0 to one running qemu-kvm 0.12.4, I get the following error:
> 
> virt01:~# virsh migrate --live testserver qemu+ssh://192.168.1.7/system
> error: internal error unable to reserve PCI address 0:0:3
> 
> When migrating from kvm 85 to qemu-kvm 0.11.0:
> 
> virt02:~# virsh migrate --live testserver qemu+ssh://192.168.1.2/system
> error: Unknown failure
> 
> Migrating one from 0.12.4 to 0.11.0 just completely breaks libvirt,
> forcing me to kill -9 libvirtd and the kvm instance, etc.
> 
> I believe this is caused in part because different versions of
> qemu-kvm need different xml configurations. To run my testserver on
> 0.12.4 for example, I need to delete the lines with the PCI id's,
> just to be able to start it.
> 
> So, is there a way to make this work? Perhaps tell libvirt to not
> send the config file when doing a live migrate, and use the xml in
> /etc/libvirt/qemu instead somehow?

In general, no, this isn't going to work.  In the first place, you see that
libvirt detects the version of qemu/kvm that is in use, and customizes the
command-line flags for that particular version.  Qemu sometimes deprecates
options, so certain options may not exist between different versions.

Even if you were to overcome that at the libvirt level, migration between
different versions at the qemu level is also not going to work.  There are
limitations in the protocol that qemu uses to do this, and qemu upstream has
not classically been interested in migration between different versions.

-- 
Chris Lalancette




More information about the libvirt-users mailing list