[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] some questions about libvirt features and limitations

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,

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]