[libvirt] some questions about libvirt features and limitations

Florian Vichot florian.vichot at diateam.net
Tue Mar 3 17:59:56 UTC 2009

Hash: SHA1

Hello everyone,

I'm working on a open source project (http://www.hynesim.org) in which
we needed libvirt-like functionalities. As at the time, libvirt did not
support OpenVZ, and it did not support VirtualBox, we went and
implemented our own wrappers around Kvm/Qemu, VirtualBox and OpenVz
(Honeyd too, but our wrapper is such an ugly hack that it doesn't really
deserve mention).
Now that time has passed, we'd would like to stop duplicating efforts,
and use libvirt instead, and concentrate on more innovating
functionalities for Hynesim. Also our wrappers are terrible hacks, and
do a lot less error checking than libvirt :)

But before I can replace our wrappers with libvirt, we're missing some
functionalities (that I will propose a patch for if required), and there
are a few questions concerning libvirt I've not managed to find an
answer for, so I'd be very grateful if I could get some advice on them.
Here goes:


Is it possible to add a device for any type of domain that would
correspond to a TAP device on the host, and would be seen as a regular
ethernet interface with a specific MAC address in the virtualized domain ?
The "raw" commands to achieve that in OpenVZ and Qemu, for example, are:

# kvm ... -net nic,macaddr=00:11:22:33:44:55 -net tap,ifname=tap0,script=no
# vzctl set 100 --netif_add eth0,00:11:22:33:44:55,tap0

Is that doable in every driver supported by libvirt ?

Is the libvirtd daemon necessary for drivers other than Qemu ?
I've been using the openvz driver alone for some tests (by connecting to
"openvz:///system"), and yet I get warning messages:

# sudo ./hellolibvirt openvz:///system
Attempting to connect to hypervisor
libvir: Remote error : unable to connect to
'/var/run/libvirt/libvirt-sock': No such file or directory
libvir: warning : Failed to find the network: Is the daemon running ?
libvir: Remote error : unable to connect to
'/var/run/libvirt/libvirt-sock': No such file or directory
libvir: Remote error : unable to connect to
'/var/run/libvirt/libvirt-sock': No such file or directory
libvir: warning : Failed to find a node driver: Is the libvirtd daemon
running ?
Connected to hypervisor at "openvz:///system"
Hypervisor: "OpenVZ" version: 3.0.22
There are 0 active and 1 inactive domains
Inactive domains:
Disconnected from hypervisor

The libvirtd daemon is indeed not running, as I don't see why it should
be: I thought it was only useful for qemu guests. Am I right ?
What is the role of the daemon exactly ?


Apparently the only way to start an OpenVZ domain is by specifying a
template. Only problem is, when the VE is stopped, and undefined, all
modifications are lost in the "private" file system of the VE (as it is
deleted). The way we circumvented this in Hynesim is by specifying the
- --private option to  "vzctl create" instead of the --ostemplate one.
That way one can specify a dir that will be used directly as the
filesystem for the VE.

I was thinking maybe adding something along the lines of:

    <filesystem type='directory'>
      <source name='/path/to/ve/filesystem' />
      <target dir='/'/>

would do the trick. It looks simple enough to implement, so should I ?


Is there support in libvirt of "cloning" (duplicating a VM disk
/filesystem) ?

Someone mentioned a VirtualBox driver. I'm highly interested in this.
How is it going ? I'd be more than happy to beta test if required. Will
it work with both PUEL and OSE versions ? When will it be ready for
inclusion in libvirt ? How will you handle RDP access, as from what I
saw only VNC is supported in libvirt currently ?


And last but not least, what are "node devices" ? The two pages about it
are blank in the documentation. Are they the host machine, or a device
of the host machine ?

I think that's all.

Thank you for reading all this,

Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


More information about the libvir-list mailing list