[libvirt] some questions about libvirt features and limitations

Florian Vichot florian.vichot at hynesim.org
Tue Mar 3 17:31:41 UTC 2009

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,

More information about the libvir-list mailing list