If you have decided to use virtualization in an open source environment, it can be hard to choose the right solution. In this article I'll give an overview of the most important virtualization solutions for Linux, and describe circumstances you might want to use them in.
The first distinction is between desktop virtualization and server virtualization.
The purpose of a desktop virtualization product is to use or test another operating system from your current desktop environment. For instance, you may be using Ubuntu as your desktop operating system, and at the same time need Windows for certain situations. Think for example of the situation where a program you need is not available for the Linux environment. Desktop virtualization is also useful to set up a test environment which is portable. It may help if you are considering a new server operating system, or to bring a virtual lab with you to do demonstrations at a customer site.
Currently, there are two important solutions for desktop virtualization using Linux as the host, VMware and Virtual Box. The latter is a free product (free, not open source) that has been made available by Sun Microsystems and it allows you to install most operating systems in the virtual environment. The alternative for Virtual Box, is VMware Workstation. This is a paid solution, but the only solution that offers useful features such as snapshots of virtual machines. Making a snapshot of a virtual machine is particularly useful if you need to prepare a demo environment. With a snapshot, you freeze the current situation of a machine in a way that you can easily revert to the snapshot. This is useful if you need to demonstrate or test what the virtualized operating system will do in different scenarios. VMware also has VMware Server, which is available for free and runs on Linux as well, but this solution doesn't offer the option to work with snapshots.
Linux is becoming an increasingly more popular platform for server virtualization. The reasons are simple: Linux virtualization offers a cheap yet
When Xen was invented a few years ago, it was a revolution in the way how virtualization is handled. The unique characteristic of Xen virtualization, is that it is capable of handling virtualization in a method that is referred to as paravirtualization. As long as the kernel of the virtualized operating system supports it, you can use paravirtualization to make your virtual machine fully aware of the fact that it is virtualized. This offers the major benefit that hardware instructions that are generated by the virtual machine do not have to be translated before they can be handled, which provides a huge performance benefit. If an operating system does not support paravirtualization, you can still use it in Xen, but the performance will not be as good as on a paravirtualized operating system.
Xen uses a modified kernel, the Xen hypervisor, which is the first thing that is started when booting the virtualization host machine. On top of this specific kernel, every other operating system is started as a guest, sending its hardware instructions directly to the Xen hypervisor.
Xen virtualization is mature and enterprise ready and you can currently find it as an open source solution in Novell's SUSE Linux versions. Citrix also uses Xen in its Xenserver, but this is proprietary software that you have to pay for. There is one disadvantage to Xen: it is complicated software that is not in the Linux kernel itself, which can provide problems when updating the software on your system.
The recent upcoming virtualization technique from the Linux world itself, is KVM, the Kernel Virtual Machine Manager. Where Xen offers a complete kernel by itself, in KVM the hypervisor is implemented as a Linux kernel module and is a part of the kernel itself. The most important benefit of this approach is that it is simple, and it makes updating easy, every time you update the kernel, the virtualization components automatically are also updated. Another important fact is that KVM offers paravirtualization, and is therefore comparable to Xen in regard to performance.
At this moment, KVM is not as mature yet as Xen. There are not as many enterprise level installations of KVM solutions and the performance according to some is not as good, however, KVM seems to be the most important virtualization solution of the future, given the fact that major players such as Red Hat and Ubuntu Server have adopted it as their default virtualization solution. Even Novell, currently the most important player on the Xen market, has provided a technology preview version of KVM in their recent release of SUSE Linux Enterprise Server 11.
Another approach to virtualization, is container based virtualization. In this approach, from a host operating system multiple guest operating systems can be created. But, because the guest operating systems directly run on the kernel of the host operating system, they need to be of the same OS. OpenVZ is the most important container-virtualization-based solution for Linux that currently exists. This technique however is adopted by none of the important players on the Linux enterprise market as their default solution for virtualization, and it is not likely that it will in the near future. The reason is obvious, using container based virtualization you can just virtualize Linux. Even if this offers a very decent performance in a Linux-only environment, for many the lack of support for Windows virtual machines is important enough to use either Xen or KVM.
The Linux server virtualization market is becoming increasingly important. Where in the past, Xen was the only player that could be considered serious enough for enterprise virtualization, major Linux distributions have recently switched to KVM virtualization. The advantage of KVM is that it is provided by just one kernel module, which makes updating your systems a lot easier. A disadvantage however is that currently it lacks the stability and features of Xen virtualization. It is however most likely that in the near future, KVM will take over as the default virtualization solution for Linux.
ABOUT THE AUTHOR: Sander van Vugt is an author and independent technical trainer, specializing in Linux since 1994. Vugt is also a technical consultant for high-availability (HA) clustering and performance optimization, as well as an expert on SLED 10 administration.