LXDoNe – Lightweight Virtualization for OpenNebula

Operating system (OS) level virtualization is a technology that has recently emerged into the cloud services paradigm. It has the advantage of providing better performance, elasticity and scalability than para-virtualization or full virtualization. This happens because HVM hypervisors need to emulate hardware and use a new kernel for each virtual machine that will be deployed. OS level virtualization follows a completely different approach. This technology allows you to share the kernel with the virtual portion of the system, in other words, the kernel is the same for the host and the “virtual machines” running on top of it. A container is a virtual environment, with its own process and network space that makes use of Linux kernel Control Groups and Namespaces to provide hardware isolation. Containers have their own view of the OS, process ID space, file system structure and network’s interfaces. Since they use kernel features, and there’s no emulation of hardware at all, the impact on performance is minimal.

hyp2

LXD is not just an Operating system level virtualization technology, it’s a hypervisor technology for containers. This means LXD containers look and act like virtual machines, but have the lightweight performance and scalability of process containers [1]. LXD has proven dramatic improvements over HVM hypervisors such as KVM [2] and ESX [3] in aspects such as density, speed and latency. 

LXDoNe-logo

LXDoNe is an add-on that allows OpenNebula  to manage LXD containers. It contains a virtualization and monitoring drivers. Right now it’s deployed in Universidad Tecnológica de La Habana José Antonio Echeverría‘s Data Center, alongside with KVM for special cases that implies a different kernel. We are actively working on adding more features and any reported bug will be prioritized by our team.

Features and Limitations.

Right now, the driver has the following features:

  • Life cycle control: deploy, shutdown, restart, reset, suspend and resume containers.
  • Support for Direct Attached Storage (DAS) filesystems such as ext4 and btrfs.
  • Support for Storage Area Networks (SAN) implemented with Ceph.
  • Monitor hosts and containers.
  • Limit container’s resources usage: RAM and CPU.
  • Support for VNC sessions.
  • Deploy containers with several disks and Network Interface Cards (NICs)
  • Support for dummy and VLAN network drivers.
  • Full support for OpenNebula’s contextualization in LXD containers (using special LXD images that will be uploaded to the market).

Features we are currently working on, most of them should be ready in the next couple of weeks:

  • Migration.
  • Snapshots.
  • Hot attach and detach NICs and disks.
  • LVM support.
  • Bandwidth limitation.

Known bugs:

  • VNC session only works with the first machine on each node. This is the reason for this behavior.

The driver has been released here. You can check there the installation guide for start using LXD with OpenNebula.

Contributions, feedback and issues are very much welcome by interacting with us in the GitHub repository or writing a mail:

  • Daniel Clavijo Coca: dann1telecom@gmail.com
  • José Manuel de la Fé Herrero: jmdelafe92@gmail.com
  • Sergio Vega Gutiérrez: sergiojvg92@gmail.com
5 replies
  1. dann1
    dann1 says:

    Hey we recently added a container creation automation script, check it out. Virtual Appliance will soon be uploaded to the Marketplace.

  2. jmdelafe
    jmdelafe says:

    New release! (1707)
    – VNC fixed (issue #6)
    – Performance improved
    – vmm scripts execution times reduced 40-60%
    – Contextualization reworked
    – Log system reworked
    – Allow use of LXD feaures in VM Template:
    – create privileged or unprivileged containers
    – create containers inside containers (nesting virtualization)

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *