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