Dan Smith wrote:
DL> This question comes up in other contexts than migration, too,
for
DL> example, when you want to start an image you just downloaded. I
DL> think it would make sense if there was a common baseline in
DL> libvirt that could tell you if a VM has any chance of running at
DL> all - otherwise that logic will be scattered across lots of apps.
The migration case is significantly more strict, though, at least for
Xen. A domain image may start up on two machines that are different,
but the same domain would not migrate from one to the other.
On that note, how about a libvirt function that allows you to compare
the capabilities of two hypervisors for varying levels of
compatibility? A given implementation such as Xen could analyze the
hypervisor and machine characteristics to provide a "compatible for
migration" result, as well as a "can run on" result (and perhaps
others). Something like the following:
virIsCompatible(hyp1, hyp2, COMPAT_MIGRATION);
virIsCompatible(hyp1, hyp3, COMPAT_MIGRATION | COMPAT_RUN);
The former would return true (in the Xen case) only if both machines
were the same bitness, processor revision, etc.
The latter could, potentially, return true for a given domain across
Xen and qemu, if that domain is fully-virtualized.
Couple of observations:
(1) Does this depend on the application mix? For example if you're
running applications which at start-up have detected some processor
feature (eg. SSE), they presumably won't be too happy if migrated to an
architecture which doesn't have this feature. On the other hand, if all
your applications and your operating system are compiled for baseline
i386, then presumably they'll run everywhere. [I don't know the answer
to this - please educate me if I'm completely wrong]
(2) This doesn't need to be in libvirt, but could be in another library
which is also shared between the applications that need to use it. The
only thing that libvirt needs is sufficiently detailed information from
virGetCapabilities.
Rich.
--
Emerging Technologies, Red Hat -
http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in
England and Wales under Company Registration No. 03798903