Nils Cant
2010-Aug-30 08:49 UTC
[libvirt-users] Is it possible to live migrate guest OS'es between different versions of kvm/qemu-kvm with libvirt?
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? Thanks in advance, Nils
Chris Lalancette
2010-Sep-21 15:27 UTC
[libvirt-users] Is it possible to live migrate guest OS'es between different versions of kvm/qemu-kvm with libvirt?
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