Virtualization Shootout: VMware Server vs. VirtualBox vs. KVM
KVM is the Kernel-based Virtual Machine, and it is a virtualization technology that's fully open source and integrated into Linux. Ubuntu ships its distribution to be KVM-ready out of the box, and several other distros do as well. KVM isn't quite as simple as the other two products...yet, but it is very capable.
Ease of Installation
KVM isn't as easy as VirtualBox or VMware to install. First, you must ensure that your hardware is compatible with KVM. Although VirtualBox and VMware will install on most machines with x86 processors, KVM requires that the processor support Intel-VT or AMD-VT extensions, and that those extensions are enabled in the BIOS. Once that's confirmed, you need to install some packages. Because my host machine is Ubuntu 9.04, I just run apt-get:
$ sudo apt-get install kvm \ libvirt-bin \ ubuntu-vm-builder \ qemu \ bridge-utils \ virt-manager
Next, you need to add your user to the libvirtd group, and log out and back in for your group membership to take effect:
$ sudo adduser bill libvirtd
To confirm that your system is ready, run virsh, a shell interface to manage virtual machines. If you get a connection error, your system isn't ready to run KVM yet:
$ virsh -c qemu:///system list Connecting to uri: qemu:///system Id Name State ----------------------------------
The default network configuration in KVM is NAT. If you want to use a bridged interface, you need to perform the additional step of manually setting up a br0 device on the host machine. (See Resources for a link to how to do this on an Ubuntu host.) You may need to do several more steps, depending on what you're trying to achieve.
Ease of installation score: 1. Compared to VMware and VirtualBox, KVM requires way too much work. Setting up bridged networking should be a drop-down in a dialog box and not require part of its own wiki page.
KVM's administration tool on Ubuntu is called virt-manager (Figure 5). In order for virt-manager to address things like bridged interfaces correctly, it should be run as root. virt-manager is fairly nice and easy to use, and it presents you with a wizard-based interface for virtual machine creation. Unfortunately, only the basics are supported for virtual machine creation and configuration. KVM also allows you to get a console on the virtual machine via the virt-manager tool, but it doesn't provide you with headless RDP or VNC abilities like the others. To enable some of the more-advanced features on your guest machines, you need to edit the XML definitions for those VMs.
Administrative tools score: 1. If it were possible to give a 1.75, I would. The tools are adequate for the task but still need a bit of work before I'd call them average. However, KVM is a rapidly developing target, so things most likely will improve with time.
KVM's capabilities aren't yet on a level with the other two packages in this shootout. The framework for the functionality may be there, in some cases, but it may be hard to configure and use. KVM doesn't implement virtual USB ports or some of the other hardware that VMware and VirtualBox do. The lack of a headless capability also limits its usefulness in certain situations, such as a collocated environment.
Capabilities score: 2. KVM is adequate for most virtualization tasks, but it doesn't particularly shine at any of them due to the current limitations on what it can virtualize. The ability to have virtualized USB ports and headless connection options would beneficial.
KVM's shining point is its licensing model. It's completely open source—most parts are GPL or LGPL licenses. This means it's truly free (as in speech), and your favorite Linux distributions are free to package it and ship it as a ready-to-run feature.
Licensing score: 3. It's hard to beat open source.
KVM total score: 7.
And the winner is...VirtualBox! The combination of ease of installation, its excellent feature set, top-notch admin tools and flexible licensing nudged this contender ahead of the rest. Of course, any of these three tools probably will meet your virtualization needs, but if you're starting off fresh, give VirtualBox a try. You'll be pleasantly surprised, and who knows...you may just start virtualizing everything!
Bill Childers is the Virtual Editor for Linux Journal. No one really knows what that means.