On Tue, Jul 10, 2007 at 03:01:27PM -0700, 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.
Hum, we would probably need some logic like this between 2 hypervisor
of the same type, but I'm afraid the matrix is gonna be a bit of hell
if we want to handle all cases over time. It also feels a bit low level
to me though I think I understand why you would like this :-)
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/