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