Understanding various virtualization technologies and implementations available on GNU/Linux
Virtualization is the future. And in that path many virtualization products have been developed a large number of them either open source, or with open source releases. Before discussing the specifics of using some of these tools I thought it best to lay out some of the basics about the technologies so it becomes clearer what classes of software exist int he virtualization field and what reasons there may be to select one over another. For the purpose of this article I generally restricted myself to software: released under the GPL (excepting VMware), that runs on a GNU/Linux host, can run GNU/Linux as a guest, and is still under active development.
OS-Level Virtualization
The idea with this technology is that only 1 kernel is running and that virtualized servers are merely isolated processes under that kernel. The upside of this approach is performance which is equivalent to native performance. The downside is the possible security implications from a shared kernel and increased difficulty in providing a fuller virtualized environment with regard to CPU, IO, and even disk resources. This approach also requires the GNU/Linux kernel to be patched and that all guest operating systems use the same kernel. Some OS-level virtualization applications available for GNU/Linux are:
- FreeVPS - http://www.freevps.com/
- Linux-VServer - http://linux-vserver.org/
- OpenVZ - http://openvz.org/
The only one of these that I’ve used is Linux-VServer due to its integration into Debian. Linux-image packages that have been patched to act as Linux-VServer hosts are readily available int he repositories which makes for easy installation and testing.
Emulated Virtualization
A lot of focus is currently on this class of virtualization technologies as VMware has become quite prominent in the virtualization market. Emulation is probably the fullest virtualization environment. It has very few constraints, event being able to run code from different architectures in some implementations. The primary disadvantage is performance which can suffer. Some applications using this technology are:
- Bochs - http://en.wikipedia.org/wiki/Bochs
- QEMU - http://fabrice.bellard.free.fr/qemu/
- VirtualBox - http://www.virtualbox.org/
- VMware - http://www.vmware.com/
I’ve done quite a bit of work with VMware both personally and professionally. I’ve been investigating VirtualBox OSE (Open Source Edition) as a suitable, even favorable, alternative due to its GPL v2 license. QEMU supports the widest range of guest and host hardware and operating systems and makes a nice fallback for other virtualization techniques.
Hardware Assisted Virtualization
Both AMD and Intel have introduced virtualization extensions on their latest microprocessors. By utilizing these new instructions virtualization software can allow unmodified guest operating systems to run without any emulation techniques. The benefits of this are that guests should run at close to native speeds. This also moves a lot of the work fro the software to the hardware so the implementations can be much smaller and simpler. Since these extensions are relatively new there are not a large number of software applications that take advantage of them but here are 2 that do:
- Linux KVM - http://kvm.qumranet.com/
- Xen - http://www.xen.org/
Linux KVM was explicitly written as a lightweight virtualization solution taking advantage of hardware virtualization extensions. Xen, which was written as a paravirtualization solution has also added support so that unmodified guest operating systems can run under the Xen hypervisor.
Paravirtualization
Paravirtualization is a technique that runs modified guest operating systems under a hypervisor. The advantage of this technique is performance. The problem is the requirement that the guest operating system be modified to run on the system. However, with an implementation available under a GPL license this is not quite the drawback it would appear to be. The only paravirtualized application for GNU/Linux is:
- Xen - http://www.xen.org/
The great thing about the latest versions of Xen (3.0 and later) is that they support hardware assisted virtualization in addition to paravirtualization. This enables a person to run unmodified guest operating systems if those operating systems cannot be ported and modified versions of GNU/Linux such as those offered in packages in the Ubuntu and Debian repositories.
Further study
I’m hesitant to suggest recommendations until I’ve spent more time with some of the software applications listed above. My biggest interest at the moment is in using Xen for servers and VirtualBox OSE for desktops. Perhaps in time I’ll have some solid recommendations.
Links
- http://en.wikipedia.org/wiki/Virtualization
- http://en.wikipedia.org/wiki/Operating_system-level_virtualization
- http://en.wikipedia.org/wiki/FreeVPS
- http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
- http://en.wikipedia.org/wiki/Linux-VServer
- http://en.wikipedia.org/wiki/OpenVZ
- http://en.wikipedia.org/wiki/QEMU
- http://en.wikipedia.org/wiki/VirtualBox
- http://en.wikipedia.org/wiki/VMware
- http://en.wikipedia.org/wiki/Xen




Recent comments
8 weeks 5 days ago
12 weeks 2 days ago
14 weeks 19 hours ago
14 weeks 3 days ago
17 weeks 4 days ago
22 weeks 2 days ago
27 weeks 1 day ago
30 weeks 6 days ago
36 weeks 2 days ago
37 weeks 6 days ago