Linux Desktop Virtualization Shootout
Computer Virtualization has many uses, from increasing server capacity and reducing power consumption to making it easier to test and develop software or to simply run a different Operating System on your computer. Virtualization has become an important aspect of the functionality of todays computers and computer Operating Systems. Many that are new to Linux or new to Virtualization often are overwhelmed by the number of Virtualization options the Linux Desktop has and often ask: "What Virtualization Solution is best suited for my needs". This article will hopefully answer this question and others like it.
Linux Virtualization has come along way in the past few years. New Virtualization Solutions have been released while some have been discontinued or simply haven't been worked on in the past few years. For instance, KVM and Xen are somewhat new on the scene (Xen was first released in 2003 and KVM in 2007), while virtualization projects like Plex86 haven't been updated in years, even commercial products like Win4Lin are no longer available as a Desktop Product.
This article will cover the most popular Linux Desktop Virtualization Solutions available today, meaning that we will cover features that are suitable for Desktop users: ease of use, performance, features, etc. Since we will be focusing on Desktop Virtualization, we reduced the number of solutions down to 4, which are (in alphabetical order):
Parallels Desktop: Parallels Desktop is one of the most popular Virtualization Products for a Mac and Parallels has returned to the Windows and Linux Operating Systems with an incarnation of Parallels Desktop for Linux. For this article we will be using Parallels Desktop version 4.0.6630. Note that Parallels Desktop does require Processors with hardware virtualization support.
QEMU/KVM: The Kernel-based Virtual Machine (KVM) is a relatively new solution in the Virtualization market and was first released in Feb 2007. It currently needs to be incorporated with Qemu to perform virtualization. For this article we will be using KVM from Linux Kernel version 2.6.33 and Qemu version 0.12.3. Note that KVM does require Processors with hardware virtualization support.
Virtualbox: Virtualbox was originally developed by innotek, which was purchased by Sun Microsystems in Feb 2008 and Sun was subsequently purchased by Oracle in January 2010. Virtualbox comes in two different versions, one released under a VirtualBox Personal Use and Evalutation Licence (PUEL) and one version released under the GNU GPL. The main differences between the two versions is the inclusion of USB and RDP support in the PUEL release.
In this article we will be using the Virtualbox Open Source Edition, which is the version released under the GNU GPL.
VMware Workstation / Player: VMWare Workstation's first release was back in 1999 and was VMWare's first product. In 2005 they released the cost-free (for personal use) VMWare Player. VMWare entered the Virtualization Market early and gained a strong foothold and has become probably the biggest player in the Virtualization Market Today. In this article we will be focusing on VMWare Workstation version 7.0.1 and Player version 3.0.1 (which is bundled with VMWare Workstation).
A Note on Xen: While deciding which Virtualization Solutions to include in this article, we took a good look at Xen. Xen is a little different than the other solutions that we looked at, first it is a pain to get going on a Linux Distribution unless the distribution includes it for you (such as Suse Linux Enterprise Server) or you utilize a Linux Distro specifically for Xen, such as from Xensource (now Citrix). The second reason that we decided not to include it in this article is the fact that it is primarily focused on Enterprise Level Server Virtualization, and used in this matter, Xen simply rocks. (Imagine moving a Virtual Machine from one datacenter to another while the machine is running)
A Note on Linux: Linux is actually only the kernel of a complete system. Many contributors like to call a complete Linux system a GNU/Linux system. The GNU stands for GNU's Not Unix (a recursive acronym) and is the system first started by Richard Stallman, then later developed with the coordination of the Free Software Foundation. The idea of GNU/Linux is to get the point of freedom across when you discuss the operating system. We have decided that our site will use the generic name Linux to signify the whole system, but please, keep software freedom in mind when reading our Linux articles.
Installation, Interface and Features
We will first take a look at how easy it is to install each utility, as well as take a quick look at the features each provide and show the differences in the GUI interfaces on each of these Linux Desktop Virtualization Tools.
First up is Parallels Desktop, Parallels installs from a single file that you download from their website. It is a straightforward shell script that includes all the required files, you simply select the 32 or 64 bit version, download it and execute it as root. Upon first launching the tool you are required to enter a registration / serial number (you can get a 15 day trial from their website).
Parallels Desktop works by utilizing Linux Kernel Modules and a Linux System Service that must be running in order to work (usually "/etc/init.d/parallels-desktop start"). As of this writing, the Kernel Modules will not build on Linux Kernel Version 2.6.32 and later, we had to test it on a 2.6.31 Kernel.
Parallels Desktop provides 3 utilities; Parallels Desktop, Parallels Transporter and Parallels Image Tool.
Parallels Transporter allows you to convert a physical machine or a virtual machine from another vendor to a Parallels Virtual Machine.
Parallels Image Tool allows you to manipulate the virtual disk images of your virtual machines. This tool allows you to increase the size of the disks, defrag/compact the disks, etc.
The main Parallels Desktop Interface provides you an easy to use way to switch between the various virtual machines you have installed, as well provides a quick view of the virtual machine's configuration. The interface is somewhat similar to VMware Workstaion, but is quite a bit stripped down to provide a cleaner interface. For instance, instead of having "Favorites" on the left side, all the availabe VMs are listed and instead of having the different VMs in the tabs like VMWare Workstation, the tabs provide the different views of the active Virtual Machine. It is also nice to have the CPU/Memory stats readily accessible.
One feature that Parallels Desktop has that no other one provides is "Shared Profile". This feature "merges" the Linux Host's Desktop, Documents, Music and Pictures folders with the Virtual Machines, meaning the VM can access all the files within these folders on your host computer. This is a nice feature, although it does take a slight performance hit while running the VM, as well as fills all the Linux Host's folders with $RECYLCLE.BIN files when running a Windows Client.
Qemu / KVM
Since the Linux Kernel based Virtual Machine (KVM) is a relatively new technology, it must be paired with the Qemu project in order to work properly. Because of this, the installation procedure varies from Distribution to Distribution. Overall, you must compile support for KVM within the kernel, install Qemu-KVM and all the required packages. Furthermore, there is no "official" GUI interface, if you wish to use a Graphical Interface you must also install/compile one. Fortunately most modern Linux Distributions now include all the required libraries, modules and applications needed to run Qemu/KVM.
Once you get all the required libraries and apps installed, the next step is to get the network infrastructure on the host machine configured to work with Qemu/KVM. To accomplish this, Qemu/KVM utilizes the Linux TUN/TAP interfaces and VLAN, which means that these modules must be included with your Kernel Modules. Again, fortunately most modern distributions already provide these modules. Once the modules are present, you must then configure these interfaces and enable a bridged interface - consult your Linux Distribution's Documentation for more information.
So, a quick rundown, first you must have the KVM modules, then all the libraries and apps needed for Qemu/KVM, then all the modules and utilities for the network to work, finally, you must start the "libvirtd" service. If everything started without any errors, you should now be ready to use Qemu/KVM.
Qemu/KVM does not provide a GUI Interface directly, but allows you to pretty much do anything you need to do from the command line. Most ordinary people like nice GUIs, so a few projects have started to provide a nice Interface to Qemu/KVM for Linux Desktops (note that there are also quite a few web based management tools for those utilizing Qemu/KVM in the enterprise). The first and arguably most popular GUI is Virtual Machine Manager, virt-manager. This one is written in GTK and Python and is included in most Linux Distributions that include Qemu/KVM.
Virt-manager provides a nice overview of all the Machines you have installed, as well as provides a nice interface where you control the Virtual Machine and also provides a nice interface where you to easily View/Adjust how the machine is configured.
Another popular interface that you can utilize with Qemu/KVM is AQemu. AQemu is written using QT, which is the basis for the KDE Desktop. Like Virt-Manager, AQemu provides a nice interface that allows you to create, edit and run Qemu/KVM virtual machines on your machine.
Again Qemu/KVM is a relatively new technology, so even though it seems stable and the performance is good, there really aren't any additional Desktop Virtualization features yet.
Sun (now Oracle) provides Virtualbox binary packages for nearly all the popular modern Linux Distributions, this makes installing Virtualbox a breeze. If there are no prebuilt packages for your Distribution, Sun also provides a shell script installation package, as well as the source code so you can compile Virtualbox yourself.
Once Virtualbox is installed, it utilizes a few Kernel Modules like the other Virtualization Solutions here, but unlike the others, Virtualbox does not need a system service in order to work properly, which is nice. This also allows you to run Virtualbox Virtual Machines while having other virtualization services running (as long as no other virtual machines are running). The other solutions here require you to shutdown all the other virtualization services in order to work.
When you first start Virtualbox, you are presented with their main screen which shows all the Virtual Machines that you installed on your system and their configuration details. When you start a Virtual Machine, a new Window opens displaying the Virtual Machine. This view allows you to not only view the Virtual Machine, but also allows you to quickly change the CD, floppy and network devices on the fly. From this view you can also switch to Virtualbox's "Seamless Mode". Their Seamless Mode allows you to run various applications from the Virtual Machine through the Host's Machine. For instance, on a GNOME Desktop, you can run Windows applications from a running Windows Virtual Machine. When using this view mode, a Windows Taskbar is displayed above the GNOME Statusbar (as shown in the image below).
Although the Seamless Mode is a nice feature, currently their are some display anomalies that appear, such as graphic glitches around some Windows applications and around the Windows Taskbar.
Another feature that Virtualbox offers is "Shared Folders", which is an easy way to share files between the host computer and the virtual guest. Virtualbox also includes the ability to "Export" and "Import" your virtual machines to easily backup/restore or give the VM to someone else.
VMware Workstation / Player
VMware provides a single file to install both VMware Workstation and VMware Player. The file is a shell script which includes all the files needed for the program, to install the app, just run "sh ./VMware-Workstation*.bundle" to initiate the installation routine. VMware workstation works by utilizing various Kernel Modules and a few system services, if the Kernel Modules are not present, for instance the Kernel was updated, the program will automatically attempt to compile the modules when you launch the program - this is a nice feature as you used to have to manually initiate the building of the modules from the command line.
When you first start VMWare Workstation and try to run a machine, it will ask you to enter a Serial number (you can get a trial from vmware's webiste). Once that is done, you can start installing/running Virtual Machines. VMWare Workstation's GUI is a single Window Interface with "favorites" along the left, while the main portion shows the Virtual Machine when running or a Summary view when the machine is off. Also, the virtual machines will open in tabs, which allows you to quickly move between the v machines when running multiple machines.
If you are running VMware's Player, the interface is a very stripped down interface showing the recent machines that you had opened/created. When you run a machine with VMware Player the interface changes to show the running machine. One nice feature of VMware Player is the fact that the Virtual Machine is automatically "suspended" when you close the application, and when you reopen the machine it is restored to where you left off (this is really helpful when you create Desktop Icons that automatically open specific Virtual Machines). Another good feature of VMware Player is the fact that you can now create virtual machines with VMWare Player.
Some of the features that both products offer include "Shared Folders" which allows you to share files from the Host computer to the Virtual Machines and both products also have a "Unity View" which is similar to Virtualbox's Seamless Mode, but instead of putting the entire taskbar on the Host's Desktop, VMware jsut shows the Virtual Machine's application menu (start menu) on the Host computer.
When using VMware Workstation, you also have advanced features such as "Virtual Teams", which is a simple way to manage multiple Virtual machines and their Network Interfaces, this is extremely useful when testing network servers (such as samba) and how network clients interact with it without needing all the hardware for a full blown network. The Workstation Product also allows you to utilize "snapshots" while the VMware Player does not.
Virtual Hardware and Guests
Now we will cover how easy it is to install various Operating Systems as Virtual Machines and take a look at the various hardware that is "virtualized" when using each Virtualization Solution.
Basically, Virtual Machines are complete computer systems "virtualized" on your computer. This means that you start with a blank "hard drive" where you need to install an Operating System in order for it to be useful. To aid you in installing an Operating System, each solution offers a "Wizard" to step you through configuring the Virtual Machine and installing an Operating System. To give you a good overview of each solution's wizard, we will try to show you the most important steps of the wizards.
Parallels Desktop's New Virtual Machine Wizard allows you to quickly configure your new Virtual Machine. If you are installing a Windows Virtual Machine you can even use the "Express Install Mode" which automatically installs Windows for you as well as automatically install their "client tools" within the virtual machine.
Qemu / KVM
When using Virt-Manager as a GUI for Qemu/KVM you can utilize Virt-Manager's "New VM" Wizard which steps you through the process of creating the Virtual Machine. One thing of note is the fact that by default Virt-Manager will create a new Virtual Disk within the /var/lib/libvirt directory instead of the user's home folder.
If you are using AQemu as the GUI for Qemu/KVM, it also includes a New Virtual Machine Wizard, although it is not as polished as "Virt-Managers", it does the job, although you will probably need to adjust the boot order after the machine is installed so it won't boot from the CD.
Virtualbox's New Virtual Machine Wizard is pretty straight forward, and although it doesn't include an "Express Install Mode", it allows you to fine tune the storage volume without having to re-configure the machine after it is created.
VMware's New Virtual Machine Wizard gives you 2 options of creating the Virtual Machine, a Typical and an Advanced. Most of the time the Typical option will allow you to configure most Virtual Machines, but if you are doing some exotic testing, it is nice to have the options of the Advanced Wizard.
VMware's Wizard will also detect if it will allow you to use an "Express Install", which will automatically install the Client Operating System as well as automatically installing the Client Tools within the Virtual Machine.
Since Virtual Machines usually don't have direct access to the hardware on the physical machine, the hardware must be "virtualized" in order for the Virtual Machine to use them. For instance, your physical computer might have a nVidia Video Card in it, but any Virtual Machine you run won't "see" the video card as that, it will "see" a Cirrus card when running KVM, a VMware SVGA adapter when running VMware Workstation, etc. Most of the time, the virtual hardware doesn't really matter much, but in certain instances it does make a huge difference. We will cover these issues here.
One thing of note, since both Virtualbox OSE and Qemu/KVM are Free (as in freedom) Software Projects, both of these projects allow you to have fine control over the virtual hardware. For instance, you can select different virtual sound cards, video cards and network cards to use within the Virtual Machines when running these tools. Another benefit of these being Free Software projects, the Distribution packagers can fine tune these apps to be optimized for their Distribution, for instance you can build Pulseaudio support into the binaries to ensure sound works perfectly with Pulseaudio instead of relying on an ALSA emulation layer (which can cause problems).
Parallels Desktop probably has the least configurability of the Virtualization Solutions here, but where it does provide adjustment they hit it out of the park. For instance, if you switch between using a Wireless Network Adapter and a Wired Network Adapter it can be difficult to get a bridged network working when switching between the two. The way Parallels handles this problem is they allow you to easily select which Physical Network Adapter is used for the Bridged Network Adapter. Parallels also allows you to select the exact sound device to use on Host Machine, which can be a problem area when running virtual machines.
Even though you cannot change the Virtual Hardware that is used with the Virtual Machine, Parallels does a good job at selecting well supported hardware for each Operating System. For instance, with Windows Vista clients, it utilizes a virtual Intel Network Adapter, but when running Ubuntu Linux Clients it will utilize a better supported Realtek network adapter.
Parallels Desktop provides "Parallels Tools" to install within the Client Machines to take full advantage of the Virtual Hardware. Unfortunately, as of this writing Linux Guests with Linux Kernel versions greater than 2.6.31 cannot install the Parallels Tools since the modules don't compile correctly.
Qemu / KVM
Qemu/KVM is by far the most configurable Virtualization Solution here, not only do you have quite a bit of control of what hardware is virtualized, you have nearly total control of how the Virtual Disks are handled. For instance, you have a half dozen disk image types, as well as the abiltiy to utilize LVM Volumes or physical partitions on the host machine.
This configurability may dissuade beginning/intermediate users from using Qemu/KVM. Fortunately, the most popular GUI, Virt-Manager, hides most of the configuration options and utilizes the best for the Operating System that is going to be installed. If you really want to see all the configuration options, use AQemu as the GUI frontend to Qemu/KVM.
Qemu/KVM does not provide "Client Tools" to be utilized (yet?), because of this, you cannot resize the Virtual Machine like you can with the other solutions here. Also, even though Qemu/KVM does not support 3D out of the box, you may want to try using VMGL which may or may not work for your Linux Distribution (we briefly tried but couldn't get it working). It will be interesting how this project grows in the future.
Virtualbox provides "Vbox Guest Additions" to optimize the virtual hardware support with the Virtualbox Virtual Machines. Virtualbox also allows you to specify which virtual sound and virtual network adapters that are utilized. For sound, you can chose an "ICH AC97" compatible device or a "Soundblaster 16" which helps when virtualizing older Operating Systems. For the network adapter, you can choose between a few Intel or a few PCNet adapters.
Virtualbox also provides 3D support within the Virtual Machines and you can specify the amount of memory the Virtual Video Card utilizes. The 3D support is limited to openGL support, unless you install the "Guest Additions" in safe mode (or use the procedure below).
Another benefit of using Virtualbox is the fact that it does include Pulseaudio support out of the box, which means you should not have any sound issues with any modern Linux Distributions as the Host computer.
Virtualbox's Virtual Networking allows you to add various types of Network Connections, such as Bridged, NAT and Host Only connections, as well as providing a way to create Virtual Networks that can provide connections between multiple Virtual Machines.
Virtualbox's Disk Subsystem is handled through it's Media Manager. Here you are able to create virtual disks as well as load Virtual Disks from other Virtualization Products, including ones from Microsoft, VMware and Parallels. One thing to note is the fact that if you wish to add a Virtual Disk to a Machine you must first add/create the volume through the Virtual Media Manager before you can add it to a Virtual Machine. One downfall of Virtualbox's Media Manager is the fact that you cannot "Defrag" or "Shrink" a disk through it's interface. In order to accomplish these tasks you must download/install additional utilities, mount the virtual disk and run those utilities on the mounted image, then finally run a Virtualbox command to compact the disk (instructions here). I am totally surprised that this maintenance task is not part of the Media Manager tool.
VMware Workstation / Player
To get the Virtual Hardware to work optimally, VMWare provides "VMWare Tools" which includes a few Drivers (such as Video and Sound) that gets installed within the Guest. VMWare does not allow you to choose which Virtual Device gets used, but utilizes a well supported device for each Virtual Machine OS Type. For instance it emulates a "Intel Network Card" under Windows Vista, etc.
VMWare also provides "3D Support" out of the box, including rudimentary Direct3D support, although you still cannot utilize the Windows Aero Interface under Vista. Another interesting Video Emulation feature is the fact that you can implement multiple monitors within a VMWare virtual Machine. This is nice to test how various apps work with multiple monitors.
VMWare Workstation also has the best "Virtual Networking" support with their "Virtual Teams", which provides an easy way to implement "Virtual Switches or Hubs" between your Virtual Machines (although you can manually configure these on most of the other Virtual Solutions listed here).
For Virtual Disks, VMWare has it's own format and it gives you a few tools, such as Defrag and Compact to ensure the disk file(s) remains somewhat small. VMWare also has experimental support for using physical devices, but we did not test this feature at this time.
The only drawbacks that we found with the Virtual Hardware are Sound issues, where the Virtual Machine could not connect to the sound card if it was being used at the time (this should be fixed if they implement Pulseaudio support in the future) and a few issues with some USB Devices where some devices would not even work with the Host unless all VMWare Virtual Machines were closed.
Note on Direct3D Support: One of the easiest ways to see if a Virtual Machine provides 3D support is to install an OpenGL game, such as Quake3 into a Windows Virtual Machine and see if it runs in 3D. If it does support 3D, an easy way to get Direct 3D support is to utilize the WineD3D Direct3D wrapper (must install within Safe Mode). This tool converts all Direct3D calls into openGL calls. This allows you to run DirectX 10 (and other Direct3D) games in a Windows XP Virtual Machine without needing specific Video Drivers. Note that we could not get this to work under Vista as Vista would not allow the new files to overwrite the existing ones.
All of the Virtualization Solutions here are relatively close on the performance of the Guest machines. We do show the results of the Vista Performance Tool on some of the screenshots of the Installation, Interface and Features page of this article.
If you routinely "suspend" and "restore" your virtual machines, both Parallels and Virtualbox are extremely quick at suspend/restore, while VMWare's suspend/restore seems to take forever in certain instances.
Also, on paper VMWare should have the best performance (the way it handles certain emulation), but when running quite a few system intensive apps (adobe products) within the virtual machine, both the virtual machine and the Host machine seemed to slow to a crawl, so much so that we wanted to do a hard reset. The other Solutions here were nowhere near as bad when the guest was running those apps. But then again, YMMV.
To finish up, here are a few final thoughts on each solution, as well as a table covering all the basic Virtualization features.
|Quick Look at Virtualization Features|
|Parallels||Qemu/KVM||Virtualbox OSE||VM Wksta||VM Player|
|Reqs CPU Virt. Support||X||X|
|Includes Guest Tools||X||X||X||?|
|Support "Shared Folders"||X||X||X||X|
|Guest 3D Support||3rd party addon||X||X||X|
|Net between Guests||Manual Setup||Manual Setup||Virtual Teams||Manual Setup|
|Guest Desk. Integration||Seamless Mode||Unity View||Unity View|
|"Snapshot" support||X||? LVM Disks||X||X|
|Phy to Virt tools||X||add.dwnld||add. dwnld|
|open other vdisks||X||X||X||X||X|
|Use Physical Disks||X||X||experimental||experimental|
|Support SMP Guests||X||X||X||X||X|
|Command Line Interface||X||X||Minimal|
|Guest OS Support||Win, Lin||Win, Lin, Solaris, BSD||Win, Lin, Solaris, BSD, OS/2||Win, Lin, BSD, Solaris(exp), Netware|
To be honest, we were totally disappointed at the fact that Parallels did not include 3D support in Parallels Desktop for Linux. Their Mac product has the best Direct 3D support in any Virtualization product on the market. We were hoping they would bridge the gap so Gamers would simply run Virtual Machines on Linux for their fix instead of dual booting back into Windows.
Even without the lack of 3D support, Parallels probably has the best interface for new virtualization users or for people that simply want to run Windows on their Linux desktop. Hopefully Parallels will do more work on their Parallels Desktop for Linux in the future. If they add the 3D support and ensure their tools and products stay updated with new Linux releases we would definitely recommend the product to casual users and Gamers, even at the $80 price, but until then, we recommend Virtualbox for these users.
Even though KVM is relatively new technology, the virtualization base is very stable and it has the added benefit of being included in the Standard Linux Kernel, which pretty much means that all the major Distributions already are, or will soon provide it as an installation option.
Currently, support for Desktop Virtualization is minimal, but work is being done to fix this. For instance, Red Hat is looking at improving the performance of video playback and other Desktop related areas. Unfortunately, in the current form, Qemu/KVM as a Desktop Virtualization Tool is not it's strong suit. It doesn't quite feel right in this aspect. It feels as if you are remoting into another computer to do work. Hopefully in the near future additional features will be added to fix this fact, but for now Qemu/KVM is probably best suited for Server Virtualization.
VMWare Workstation / Player
VMWare has been the "Big Dog" in Desktop Virtualization for some time now. Part of this is the fact that they have been around for so long, and another part (we feel) is the fact that it is very easy to distribute VMWare VMachines especially with the release of the Free VMWare Player.
VMWare still has a very good product with their VMWare Workstation, especially if you are a Network Admin and want to fully test a "Virtual Network". However, we feel that it's performance is gradually going down as they add more and more features (bloat?).
Will VMWare stay at the top, only time will tell. One thing for sure, is that they want to stay on top, especially since they incorporated so many features into the cost Free VMWare Player. Because of this, there are less and less reasons to use the expensive VMWare Workstation when you can get most of the features with their cost free product.
Virtualbox pretty much blew us away during our testing, it had been quite a while since any of us tested it and we were totally surprised at the improvements that were made. Although Virtualbox doesn't excel at any one aspect of Virtualization, it seems to be the most well rounded of the Virtualization Solutions here, we were especially surprised at the inclusion and quality of the 3D support.
Even though most of us here are long-time VMWare users, we all decided that we would at least give Virtualbox a chance to change that, especially since there is a Free (as in freedom) version with Virtualbox Open Source Edition.
For pre-packaged Virtualbox Machines, visit http://virtualboxes.org/images/