The virtualization community has been hearing quite a bit about KVM or Kernel-based Virtual Machine since it was included in Version 2.6.20 of the Linux kernel. It was interesting that this technology was included in the kernel relatively shorty after it first emerged while Xen still has not been included.
This means that KVM has joined the ranks of UML (User Mode Linux), OpenVZ (the open source version of SWsoft's Virtuozzo), Xen and a few others as different forms of virtual processing software. The question that immediately comes to mind is why is there so many of these virtualization projects in the open source community today?
Different tools for different needs
When we take a look at each of the technologies, what becomes clear is that many people are grappling with how to make the most use of powerful industry standard microprocessors from Intel, AMD and others. Let's take a quick look at each of the three projects that have been mentioned and try to make some sense of why they exist. For those who favor some other virtualization project, I know that many such projects exist. I just don't have the space to examine them all in this post.
- Operating system partitioning - UML and OpenVZ can both been seen as ways to segment the resources managed by a single operating system to make it possible for individual applications or workloads to be isolated from one another. Each workload runs in its own "virtual server." Since there is really only one copy of the operating system running, this approach is very efficient. This approach works well if the organization has no need to mix operating systems on a single machine. UML and OpenVZ (and it's commercial cousin SWsoft's Virtuozzo) fit into this category.
- Operating system-based virtualization - KVM is a Linux kernel module that supports full virtualization, that is it can run guest operating systems as tasks under a host operating system. The guest operating systems can be another copy of Linux or a copy of Windows. KVM requires that the microprocessor includes either Intel VT or AMD-V. In this case, a general purpose host operating system, Linux, is managing the underlying system. This makes a great deal of sense when the majority of applications all run under a single operating system.
- Para virtualization - Xen manages the underlying physical system and allows Linux, Solaris, NetWare, FreeBSD, OpenBSD, NetBSD and/or Windows guest operating systems to run on a Xen hypervisor. In this approach the general purpose operating systems (Linux and Windows in this case) are all guests. Hypervisors are very small, highly optimized operating systems that are designed from the ground up to host other operating systems rather than being general purpose.
Interesting side note
What's interesting is that Xen, which has been aiming for Linux kernel inclusion for nearly two years has not become part of the Linux kernel. KVM, which was created and is maintained by technology start-up Qumranet, has quickly part of the kernel.
It appears that each of these approaches has its place. Each is targeting a different set of user requirements. Each may have its place in an organization's data center.
KVM Developer Conference
If you're a developer and interested in learning more about contributing to the KVM project, Qumranet is hosing a KVM Developer Forum. Here's a pointer to the event. http://www.qumranet.com/KVMForum2007.php This conference, by the way, is intended to be a purely technical event for developers who are currently using KVM for a project or are interested in doing so.