[Libguestfs] [PATCH 2/2] Use an internal representation of domain metadata

Richard W.M. Jones rjones at redhat.com
Tue Mar 15 13:36:22 UTC 2011


On Tue, Mar 15, 2011 at 01:32:06PM +0000, Matthew Booth wrote:
> On 15/03/11 11:47, Richard W.M. Jones wrote:
> >On Fri, Mar 11, 2011 at 01:34:48PM +0000, Matthew Booth wrote:
> >[...]
> >
> >You seem to be convinced this is better, and I'm not going to argue
> >with that, so ACK to the patch in general.
> >
> >I have specific comments on the fields you are (not) preserving below.
> >
> >>+%
> >>+  name          The name of the domain
> >
> >I think you need to include the /domain/description free text field
> >here too.
> >
> >Also /domain/uuid seems pretty important.
> 
> Ok.
> 
> >Is there nothing /domain/os which is important?  How about
> >/domain/os/sysinfo (SMBIOS information).
> 
> For more esoteric stuff like this, I would prefer to wait until it's
> actually shown to be a problem in practise.

Dan ^^ ?

> >>+  memory        The memory assigned to the domain, in bytes
> >
> >I'm assuming that virt-v2v no longer runs on 32 bit architectures (or
> >else sizes in bytes tend to get converted to floats and rounded
> >awkwardly).  Is there a check for this, like the one in virt-resize?
> >
> >http://git.annexia.org/?p=libguestfs.git;a=blob;f=tools/virt-resize;h=4beb45b57df315e551ecb4be8b3748e2a565eeb0;hb=HEAD#l33
> 
> Nice. I hadn't actually considered this at all. Is there any way to
> make perl do 64-bit integers?

There's probably a CPAN module for it, but AFAIK 32 bit Perl cannot
natively do anything useful with 64 bit numbers without having it
convert them to floats which causes additional problems.

> >>+  cpus          The number of cpus assigned to the domain
> >
> >CPU topology?  This appears to be important for performance -- we
> >recently discovered that the performance of 1 [virtual] socket with 4
> >[virtual] cores is quite a lot worse than the performance of 4
> >[virtual] sockets each with 1 core, because the guest OS schedules
> >things differently.
> 
> I'm currently completely ignoring topology for libvirt targets, and
> defining N single-core CPUs for RHEV targets. How important do you
> think this is? I don't see this as a major issue to include, but I'd
> prefer the simplest possible solution.

N x single core CPUs should be OK (it would be a problem if you were
defining it the other way around).  However I guess some people will
have specially set up topologies and won't want to lose them.  Unclear ...

> >I would also preserve libvirt's lifecycle actions,
> >/domain/on_poweroff, /domain/on_reboot and /domain/on_crash, unless
> >you know otherwise.
> 
> I can include these.
> 
> >>+  arch          The architecture of the domain (eg i686,x86_64)
> >>+  features[]    An array containing 'features', as defined by libvirt
> >>+  disks[]       An array containing hashrefs of disk descriptions
> >>+    device          The name of the disk as seen by the guest (eg sda)
> >>+    path            The path to the device's storage, as known to the source
> >>+                      or target hypervisor. This will probably not be a valid
> >>+                      local path
> >>+    (local_path)    A local path to the device's storage, as usable by
> >>+                      libguestfs during conversion. This is populated by
> >>+                      copy_storage()
> >>+    is_block        1 if the device uses block storage, 0 if it uses a file.
> >>+    format          The file format used by the underlying storage, as known to
> >>+                      qemu (eg raw,qcow)
> >
> >I have no idea if we should be trying to preserve the
> >/domain/devices/controller elements and/or
> >/domain/devices/disk/address (to avoid Windoze reactivation).
> 
> I don't think so. Windows reactivation is basically unavoidable as
> so much changes.
> 
> >>+  removables[]  An array containing hashrefs of removable media devices
> >>+    name            The name of the device, as seen by the guest (eg fd0)
> >>+    type            The device type, as defined by libvirt (eg floppy,cdrom)
> >>+  nics[]        An array containing hashrefs of NIC descriptions
> >>+    mac             The mac address
> >>+    vnet            The name of the virtual network the NIC will connect to
> >>+    vnet_type       The type of virtual network the NIC will connect to, as
> >>+                      defined by libvirt (eg network,bridge)
> >
> >Sound cards?
> 
> Well they're specifically a source of problems ;) The current code
> removes them explicitly. I'm happy to leave these out for the
> moment.
> 
> It's also worth mentioning that Dan Berrange suggested on IRC that
> serial and parallel devices should be preserved.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list