A comparison of three virtualization solutions: VMware Server, VirtualBox and KVM—each has its strengths and weaknesses.
Virtualization is a buzzword that's been making its way around the corporate IT circles for a few years. On paper, virtualization sounds great—you can make full use of those unused CPU cycles, leverage a particular machine to its fullest potential, and save power and space at the same time. Many people think virtualization is good only in the corporate data center; however, several software packages run just fine on desktop- and laptop-class Linux machines, as well as servers. In this article, I put three of them through their paces: VMware Server, VirtualBox and KVM.
“But wait!” you may exclaim, “Why aren't you evaluating Xen too?” The answer is simple. Xen, although extremely powerful, is more of an enterprise-class virtualization solution and may be overkill for the average Linux user. If you're going to be building a data center or a service that will be exposed to customers on the Internet, that's when you should consider Xen. This is one of the reasons Ubuntu officially supports KVM, rather than Xen, as its open-source virtualization solution, and I follow that reasoning here.
First, I should define a couple terms for the purposes of this article. A host is a physical machine running one of the virtualization solutions. A guest, virtual machine or VM is the virtual machine running inside the virtualized container provided by the host.
Because this is a shootout, I assign point values to categories, and the product with the most points wins the shootout. The values range from 1 to 3, with 1 being poor, 2 being average and 3 being excellent. All of the virtualization packages are installed on an Ubuntu 9.04 host. The categories are as follows:
Ease of installation.
VMware has been providing virtualization solutions for ten years, and as such, is the virtual 800-pound gorilla in the marketplace. With at least six virtualization products that span both the desktop and server markets, VMware has a package that will fit your needs. The product I review here is VMware Server 2.0. It's free (as in beer) and is very feature-rich.
Ease of Installation
VMware Server ships as a 507MB Windows executable, a 465MB RPM or a 466MB tarball. Because I'm installing on an Ubuntu machine, I use the tarball. Kicking off the installation is fairly straightforward on Ubuntu. Simply ensure that you've got the build-essential package installed, along with the headers for whatever kernel you're running. Then, untar the tarball and run ./vmware-install as root, and follow along with the prompts. The installer will prompt you for the paths to where you want to install various things. It's acceptable to choose the defaults, as the installer chooses fairly sane locations.
One thing to note is that due to VMware's “free as in beer” license, you must get a serial number from the VMware site before you can run it. Make sure you have registered on the VMware site and have your serial number handy, as the installer will ask you for it near the end of the installation process.
Ease of installation score: 2. This is mostly due to VMware requiring some packages and asking many questions in the installer. It works well once you get it installed, and you can take the defaults on just about every question, but it is a little tedious.
If you've used VMware Server 1.0 and haven't looked at 2.0 yet, you're in for a surprise. The 2.0 version of the product uses a Web-based administrative panel, compared with the “fat client” approach that the 1.0 product used (Figure 1).
Everything in the admin console is easy to use. Creating a virtual machine is a simple matter, thanks to VMware's excellent form-based wizards. Simply fill in the blanks, and VMware will create an appropriate VM and get it ready for its first boot. VMware Server provides a virtual console via its Web interface to the virtual machine as well (Figure 2). It requires installing a Firefox plugin, but the console works well and doesn't require a fat client. Unfortunately, the plugin doesn't work on the Mac version of Firefox.
VMware also allows you to console to the machine remotely via VNC. This requires adding the lines RemoteDisplay.vnc.enabled = "TRUE" and RemoteDisplay.vnc.port = 5900 to the virtual machine's configuration file (named <hostname>.vmx in the virtual machine storage directory).
In short, the VMware administrative console is excellent. The Web-based GUI is easy to navigate, and the tools work well on Linux or Windows. The ability to enable VNC access to a virtual machine's console without using the Web GUI could prove invaluable in certain administrative cases.
Administrative tools score: 3. VMware's experience in the field shows here, and VMware Server's historical connections to the GSX commercial product mean that the tools are best of breed.
VMware Server is an extremely capable virtualization platform. Its ancestor is VMware's first-generation commercial server product, VMware GSX, so it has a great pedigree. VMware Server's key features include:
The ability to run on standard x86 hardware, with or without hardware virtualization extensions.
Two-processor Virtual SMP, allowing a single virtual machine to span two processors.
A snapshot feature, allowing you to capture the state of a VM and then roll it back to that state.
64-bit support, on both the host and guest operating systems.
Support for bridged, NAT and host-only network interfaces.
Support for USB devices and controllers.
All these features mean that VMware Server is a great platform for personal experimentation or light business use. I've personally had a VMware Server host with a couple guest machines running continuously since 2007.
Capabilities score: 3. VMware has been building its feature set for years, and it shows here.
VMware Server has a proprietary license with appropriate EULA for this software. Although it's technically free, it's “free as in beer”, meaning that though it costs nothing, you can't actually modify it. VMware does make some source code available, but it's not the entire source tree, only the parts that are GPL that VMware modifies. In order to use the software, you need to register on the VMware Web site and get a serial number in your name. Although this is available at no cost, it isn't “free” in the open-source sense.
Licensing score: 1. VMware's proprietary license and EULA mean you can't lift the hood and tweak it as you see fit, nor can you analyze the code for vulnerabilities. You're at the mercy of VMware. If Free Software is important to you, this license will give you fits.
VMware Server total score: 9.
VirtualBox is a relative newcomer to the virtualization market, with its initial release in early 2007. VirtualBox originally was created by Innotek, but it has since been acquired by Sun Microsystems. Version 3.0 of the software was released recently and includes many new features.
Ease of Installation
VirtualBox ships for Linux hosts as a native package for most distributions. There are packages for Ubuntu, Debian, OpenSUSE, Fedora, Mandriva, Red Hat, Turbolinux and PCLinuxOS 2007. Installing the software is as simple as downloading the package for your OS, then using your native package manager to install the package. On Ubuntu 9.04, the binary package is 43MB, and installation required the additional packages of libcurl3, libqt4-network, libqtcore4, libqtgui4 and python2.5, all of which are easily fetched via apt-get. Double-clicking on the package in Nautilus launches the Ubuntu Package Installer, which pulls in the dependencies automagically. In all, installation is straightforward, quick and easy. VirtualBox also maintains a repository for Debian-based distributions that you can add to your apt sources. Then you simply can apt-get the package (virtualbox-3.0) and its dependencies.
Ease of installation score: 3. The only way VirtualBox could be easier to install is if it were included in the Ubuntu apt sources out of the box.
VirtualBox includes a native “fat client” for your host OS that allows you to manage your virtual machines (Figure 3). The client is easy to use, and it's wizard-based—much like the VMware admin console. Creating virtual machines is a snap, and VirtualBox gets kudos for making it as easy as VMware to spin up new virtual machines.
If you want to run your guest machines in headless mode, VirtualBox has that covered too. There is a VBoxHeadless management binary that will bypass the admin GUI and start an RDP server running for that particular VM. Once your VM is running in headless mode, you can point an RDP client to your physical host's port 3389 (by default, the port is also configurable), and you'll see the virtual machine's console. This is very handy if you're not at the physical machine or can't tunnel X easily. Figure 4 shows a VM running with VirtualBox.
Administrative tools score: 3. VirtualBox includes excellent tools for creating and managing virtual machines. The fact that it's a native “fat client” rather than a Web GUI is slightly less convenient for multiplatform access, as compared to VMware, but every bit of functionality is there and easy to use.
VirtualBox may be a young project, but it certainly doesn't lack features. It compares with VMware handily in many areas, such as the following:
Support for bridged, NAT and host-only networking.
Two-processor virtualized SMP.
64-bit support for both hosts and guests.
Snapshot capability for easy capture and rollback.
Unlike VMware, VirtualBox is available in both a proprietary and open-source edition. The open-source edition is released under GPL, but it doesn't include the following features that are available only in the proprietary version:
The headless RDP server is not available in the open-source edition.
There is no virtualized USB support in the open-source edition.
Because USB and RDP support aren't included, the proprietary version's USB-over-RDP feature isn't in the open-source edition.
The virtualized serial ATA disk controller isn't in the open-source edition. Disks appear as either SCSI or IDE devices.
Capabilities score: 3. VirtualBox nearly matches VMware Server feature for feature.
As mentioned above, VirtualBox ships two different versions of its product: a proprietary version and an open-source edition. The proprietary version is licensed under the VirtualBox Personal Use and Evaluation License (PUEL), and although you are asked to register the software when it's first launched, it's not required. The open-source edition is covered under the GPL, and it's truly open source, though it does omit the four features I mentioned previously. If you do decide to run the open-source edition, be advised that it doesn't come as a binary package, only source code, so you will have to build it yourself. Building it yourself isn't terribly painful, as the folks at VirtualBox have supplied fairly good instructions.
Licensing score: 2. VirtualBox's PUEL license on the more feature-rich version isn't open source, but VirtualBox does make most of the source code available and provides instructions on how to build the code if you don't want to succumb to the evils of proprietary licensing.
VirtualBox total score: 11.
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!