VMware, VirtualBox and KVM

This will be an unscientific comparison of three popular virtualization programs. My hope is that it might aid someone who is thinking, Hrrm, which one should I try?

Everyone has different needs, so I will take a minute to explain mine. It might help the reader judge if my opinions are of any use to them. For example, I'm neither gamer nor graphic artist, so I don't know how well any of them would work for such resource intensive use. This article covers using a Linux host. I haven't tried it on a Windows host.

I use Windows to access my company's VPN. I also will play around with various distributions, and virtualization makes that easy. Lastly, at work, I run Fedora on my workstation. Although I also have a Windows machine, it's sometimes easier to just open Windows in a virtual machine (VM.) More importantly, we run CentOS on our servers, so I have a CentOS VM on that machine as well. It still doesn't do anything intensive. I use it for testing before we put something on a server.

My work machine is a Dell P4, probably 1.5 gig with only 512 megs of RAM. My laptop is a T2330 Core Duo which doesn't support virtualization at kernel level. My home server/workstation is an Intel quad core with 4 gigs of RAM. That's the only machine I have that supports kernel level virtualization.

At work and on the laptop, I only run VirtualBox. On the home server, I use VirtualBox, KVM and VMware server 1.0.6-x. I run Windows and play with other systems from time to time, such as the latest OpenSolaris.

Because of my fairly limited needs, I haven't tested sound, USB support or various other things that the reader might find of interest. I don't have much need for such things, as I can do them in Linux or FreeBSD. I haven't deeply examined things like possible GUI tools for KVM because I don't use them. Hopefully, this casual comparison may still be of use.

KVM and VirtualBox are both constantly improving, so this article may be dated very quickly. It's being written in early May of 2008.

VMware

VMware has been around for quite awhile. I'm using the free, as in Free Diet Mountain Dew, server version 1.0.6.

Their 2.0 beta version seems to be going in a different direction. It uses a web interface and you don't see the desktop of the guest O/S by default. I suspect it's aimed more at the enterprise, and would probably be more useful for a server running several VM's. As I've explained my use of VM's above, I find it less convenient than 1.0.6, which will put you in a screen where you're looking at a machine as if you were at its console.

Note that there is now a 1.0.7 version as well. I haven't yet tried it. I haven't tried VMware Workstation in a couple of years. I imagine that it has many features lacking in Server, as it costs $199 and Server is free. Server is enough for my needs.

It requires filling out a rather annoying questionaire to get a serial number, but considering what they are giving away, it's not really asking too much.

It runs Windows 2000 at near native speed, once you install the VMware tools. One advantage it has over the others is that it does bridged networking by default. This means that the guest system will have an IP address on your LAN and will appear as if it were another host on your network.

Another advantage is that it supports SMP systems with an option to give the guest 2 CPUs. It's quite easy to install and configure. I would say it ran the Solaris live CD better than either of the others, but seemed bit slower running Windows 2000 when compared to VirtualBox, even though I was able to give the VM multiple processors in VMware.

It has a larger footprint than either of the others, and on an older machine can start slowing down the entire system. On my machine at work, the one with 512 MB of RAM, it was rather slow.

It can have trouble with some later Linux kernels. I cover this in another page. It often requires a vmware-any-any patch, which, last time I used it on the laptop, broke wireless networking. There's a patch to fix that breakage, also covered on the abovementioned page.

It's a good choice if you have a powerful machine, want 64 bit and SMP support, and want bridged networking to work out of the box. It might not be the best choice on an older machine.

KVM

KVM takes advantage of modern CPUs that support virtualization and can, therefore, be very fast. It uses qemu, which still has various mouse issues, so even though it's quite fast, the mouse lags a little bit with a Windows 2000 guest. I have't seen the lag with Linux or Solaris guests. It supports 64 bit and SMP guests. VMware server only supports 2 CPU SMP, KVM supports up to 4.

To see if your processor supports KVM virtualization, you can run, on an Intel system
grep vmx /proc/cpuinfo

On an AMD machine, the command is
grep svm /proc/cpuinfo

If you don't get anything back from either of those commands, your processor doesn't have built in virtualization support.

It can support almost any kind of system that will run on x86 or x86_64 systems. It can make use of qemu's convert tool to make an image that can be used in some versions of VMware workstation and VirtualBox.

Its default is to use NAT networking. (Am I the first to have thought of the term, NATworking?) This means that the guest is not visible on the LAN. The guest will get an address of 10.2.x.x, regardless of the LAN's address scheme. It will be able to reach the Internet as well as hosts on the LAN but pinging and some other things will not work.

It isn't difficult to set up bridged networking. I give instructions in a page I have on KVM in CentOS 5.1. I haven't tried it with wireless bridged networking, but as that was fairly simple in VirtualBox, which also uses NAT by default, and was fairly simple even before VirtualBox 2.1.0 which sets up host networking with a single button click, I imagine it's pretty easy.

I think there are some GUI configuration tools around, but I haven't used them. Ubuntu plans to incorporate KVM, so I'm sure that they will create some if they don't exist. RedHat may also add it as a virtualization option.

Although it requires some command line use, the commands aren't very complex. There are various howtos, including my own mentioned above, that make it simple.

It's a good choice if you have a CPU that supports virtualization, dislike VMware for any reason, and want SMP and 64 bit support. On Fedora Forums, someone posted the results of running super_pi on KVM and VirtualBox.

He found that KVM was actually a little faster than native speed. KVM is under development and constantly improves.

If you don't mind a little easy command line work and setting up a bridged network (assuming you need such networking) on a machine with a supported CPU it will probably be faster and use less resources than VMware Server.

One nice thing about it is that you can easily try out a live CD. Download the iso to your hard drive. If the iso was called linux.iso you can try out the live CD by typing qemu-kvm -boot d -cdrom linux.iso. (That command is for the CentOS rpm version. The source uses something like qemu-system_x86 or something similar.)

If you don't have a supported CPU then you're probably better off with another choice.

VirtualBox

VirtualBox is my personal favorite. Relatively new, it has rapidly improved. When I first used it, I felt it was slower than VMware Server, now I find it noticeably faster on older hardware.

Like VMware, it's quite easy to install and configure. Like KVM, its default networking is NAT, but as of version 2.1.0, it is easily configured to use bridged networking.

There is one bug. If one uses wireless networking, as of version 2.1.0, the guest will complain of an address conflict on the network. (See ticket 2757. However, this complaint can be safely ignored.

I have a page about it which also covers wireless bridged networking. The page is no longer necessary for VirtualBox, but it is still applicable for KVM.

It's less mature than VMware, but is far smaller and lighter.

I find that it gives the impression of running Windows 2000 faster than the other two, even though it's the only one without SMP support. On the slower machine at work, CentOS runs much faster on VirtualBox than on VMware Server. The later 2.0 versions now support 64 bit guests in some circumstances.

In that same thread on Fedora Forums, the person found that it was only slightly slower than native speed. Although KVM is faster with raw computing, due to the minor mouse issues with KVM, VirtualBox actually seems faster running Windows, at least to me. It also has a seamless mode, where you have your host machine's desktop and the Windows task bar. (Or vice versa, I imagine, I've never run it on a Windows host.) Windows applications will have their own window on your Linux desktop.

For 32 bit bit, single processor machines, especially less powerful ones, it is probably the best choice. In such a case, there is little advantage offered by VMware Server.

If you need SMP support, then you're better off using one of the others.

Virtualization isn't perfect. Any of these will gradually use up your host machine's resources. For example, if I run a CentOS server in VirtualBox on my Fedora workstation, the system starts to gradually slow down. Running the top command will show that VirtualBox is hogging CPU time. There are various workarounds and solutions, but the problem will occur with any of these virtualization programs.

Summary

On a lower end machine, where out of the box bridged networking isn't important, VirtualBox is probably the best choice. As of 2.1.0, bridged networking requires one click of the mouse

If you want SMP support, at present, VMware and KVM are your choices. KVM may be a bit lighter on resources. A very subjective impression is that it was a bit better with Linux guests while VMware was better with Windows guests. (Judging by a Windows 2000 32 bit system.)

VMware has an easy to use GUI configuration tool, as well as out of the box bridged networking. KVM has support for up to 4 processors, while VMware-server only has support for 2.

KVM will continue to improve. As mentioned above, VMware, at least with their free of charge server edition, seems to be going in a different direction more suited to the enterprise than the single home user.

VMware and VirtualBox are probably easier to configure. Neither one requires command line work. KVM isn't hard to set up either, however, sometimes it can be difficult to find proper documentation. KVM is the only one that stil reuires manual setup of bridged networking.

All of these can be easily installed and uninstalled on most Linux systems. The reader can try them all and see which one works best for their needs.

I should probably also make mention of Linux-VServer. Unlike the others, it's more of a sophisticated chroot environment, useful for adding a layer of separation to something like Apache or an FTP server. See the linked page for more explanation, as well as further links to more detailed pages about it. There is another program, similar to VServer, OpenVZ, but I've never used it.