As we wrote recently, KVM has a lot to recommend it as a virtualization solution in Ubuntu 10.04, especially in the server room. But how ready is it for the desktop, and can it contend with applications like VirtualBox when it comes to ease-of-use? Read on for a comparison of two of the Ubuntu world's most popular virtualization products, and some thoughts on which one is better for desktop users.
If you haven't yet tried KVM, you should, whether you're using Ubuntu on a server or a desktop. As Linux's built-in virtualization hypervisor, KVM can run a wide variety of guest operating systems with impressive efficiency. On some platforms, it can also take advantage of paravirtualization to make things even faster.
VirtualBox, meanwhile, has long been established as a popular and free (thought not entirely Free) virtualization platform, especially for desktop users. And the project, which was originally owned by Innotek, then acquired by Sun and consequently now owned by Oracle, continues to push out innovative features.
While KVM and VirtualBox are both excellent products, I wanted to determine which of them was better suited for the desktop. Here's what I found.
For desktop users--especially the non-geeky ones--simple and intuitive management tools are essential for running virtual machines. To this end, VirtualBox comes with a pretty well designed GUI for creating and running guest machines. If you can point and click, you can use VirtualBox.
KVM, in contrast, doesn't have any official management interface. A variety of third-party tools, however, are capable of managing KVM domains. The most popular of these is RedHat's virt-manager, which offers a simple but efficient graphical interface.
I like virt-manager, especially because it can manage both local virtual machines and those running elsewhere on the Internet (although that's not a very relevant feature for most desktop users).
On the other hand, adding virtual hardware to a guest is not as easy as it could be. In older versions of virt-manager, the terminology could also be confusing; for example, powering down a virtual machine was referred to as "destroying" it, which was a bit ambiguous.
Convirt, from Convirture, is another GUI tool for managing KVM virtual machines. It's similar to virt-manager and also supports remote machines as well as local ones. Unfortunately, I've found it pretty buggy on my Lucid desktop, to the point that it was not usable.
When it comes to graphical management applications, then, VirtualBox beats KVM. If you like the command-line, however, KVM wins hands-down; although VirtualBox does offer a CLI interface, it's not as comprehensive as KVM's virsh. There's also no way to launch VirtualBox virtual machines directly from bash, as can be done with KVM.
On the other hand, most non-geeks are probably not very interested in CLI management tools. Ultimately, therefore, VirtualBox really comes out ahead in terms of ease-of-management on the desktop.
More than management utilities, features are paramount for desktop users--and on this front, KVM and VirtualBox both have their strengths and weaknesses.
KVM offers a wide range of advanced virtualization functionality, such as live migration and optional paravirtualization. VirtualBox also offers some of these features, but it comes up short on the paravirtualization front. These advanced operations, however, are mostly not the type that are very useful to desktop users.
Both VirtualBox (in its closed-source version) and KVM support passing hardware devices directly to guest operating systems, a feature that can be very useful in a variety of circumstances. KVM can handle PCI passthrough as well as direct access to the USB bus, however, a feature that remains unimplemented in VirtualBox. As a plus, this functionality can now be easily configured in recent versions of virt-manager. But again, functionality like this is beyond the scope of what most desktop users are interested in.
One feature that is important to many desktop users, in contrast, is video acceleration in guest operating systems. This is a central prerequisite for Ubuntu users who dream of playing Windows games without having to dual-boot. As we wrote last winter, VirtualBox in principle offers such support, although in practice it doesn't always work well. KVM currently lacks 3D-acceleration support, however, so VirtualBox still comes out ahead on this front.
Similarly, VirtualBox's "Guest Additions" feature makes it easy to integrate guest machines into their host environment by sharing the mouse and even the clipboard. Although some drivers can be installed in certain types of KVM guests to improve performance, none of KVM's management tools makes integration with the host so seamless.
In absolute terms, it's hard to choose between KVM and VirtualBox when it comes to the features offered. With respect to the functionality that desktop users are likely to want, and the ease with which it can be accessed, however, VirtualBox comes out on top.
So which virtualization solution is best for the Ubuntu desktop? For the time being--and this is to say nothing of the various options which I've not discussed, such as VMware's products and Xen--VirtualBox is probably the better choice for users who want a simple application for running mainstream operating systems without ever having to touch a configuration file or open a terminal.
For those interested in cutting-edge virtualization functionality, or who actually prefer the command-line, however, KVM has a lot to offer. At the least, although its developers are clearly focused on the enterprise, it should not be ruled out as a virtualization solution for normal desktop users, especially when it's combined with GUI management tools.
Our advice: don't apt-get remove VirtualBox from your Ubuntu desktop yet, but keep your eye on KVM as it continues to develop.