Review: Virtual Machine Software For The Desktop

We rounded up major virtual machine apps for individual users from VMware, Microsoft, and Sun Microsystems, as well as Fabrice Bellard's QEMU 0.9.1, and found that licensing types, features, and drawbacks vary widely.

Serdar Yegulalp, Contributor

July 15, 2008

13 Min Read

Hypervisor-style virtualization is quickly becoming all the rage in the server closets and data centers these days, but desktop-level virtualization is also experiencing something of a golden age. The vast majority of the products in that space are free -- much as some of the best hypervisor products are -- and hugely useful in this age of relatively cheap memory, processor power and disk space.

Here's a quick survey of four major virtual machine (VM) applications for individual users, each of widely varying licensing types, capacities, features, and drawbacks.

VMware Workstation 6

Trial Price: Free for 30 days
Licensing: $189 (download), $209 (packaged); other licensing options available
Vendor: VMware, Inc.
Link: VMware.com

Chances are VMware was the first virtual-machine product you used, especially since it was the first commercial VM solution to come to market. It's facing serious competition from a slew of open source and even proprietary products in the same space -- especially since Workstation is a for-pay product compared to the open-source VirtualBox or the free-to-use Virtual PC -- but VMware's makers have made efforts to keep their product useful and relevant, so the cost for the product shouldn't be dismissed out of hand. (30-day trial licenses are also available.) It's also one of a galaxy of other products the company offers, but Workstation is likely to be most immediately useful to desktop users.

A paused Fedora 9 session in VMware, with two processor cores enabled.

(click for image gallery)

The gamut of supported hardware within a VMware machine is at least as good as VirtualBox and in some respects better. Networking is handled in roughly the same way -- bridged, NAT, host-only, or nonexistent -- and disk controllers can be IDE or either BusLogic or LSI Logic brand SCSI controllers (although no SATA).

There's also support for USB devices attached to the host, and support for multiple monitors for machines with guest extensions installed. One major hardware-support bonus is the ability to support up to two processors in a guest. My Intel Core 2 Quad Q6600 2.40 GHz showed up in a Vista guest as the same processor with two cores active.

Installing VMware Tools (i.e., guest OS support) in Windows is as easy as installing an application, but for Linux it's a bit trickier. You'll typically need to install the gcc / make / header files packages needed by the system to build kernel modules, but the build process itself is excellently documented as you go. By the time you're done, you know exactly what has been configured and what hasn't, and how to activate it.

Those upgrading from a previous version of VMware who want to work with both current and earlier editions of virtual machines, take heart: machines newly created in VMware Workstation 6 can be forced to be backwards-compatible with older VMware products if needed; the default is the 6.0 edition of the VMware.

VMware's carved out a name for itself by offering a broad spate of management features for virtual machines. One example is "teams" of VMs -- gangs of virtual machines that can be powered on and off together, networked together automatically, and interact in predefined ways. An obvious application for this is multitier client/server/database setups. Another such feature is "appliance mode," which lets you run a machine headlessly and connect to it on a given port with a web browser. Both team and appliance functions are included in VMware Workstation.

The more you use VMware, the more useful little features you'll discover. Virtual disks can be parceled up into 2GB chunks to avoid legacy file-system limitations. If you want to automate actions to a given virtual machine, you can log and replay them, and even capture output from a given virtual machine as a movie file. Finally, VMware also supports Linux kernels that have para-virtualization interfaces, and publishes performance counters to aid Windows hosts gather stats about virtual machine behavior.

Another of VMware's big draws is its gallery of virtual appliances -- pre-made virtual machine images loaded with operating system stacks, applications, or combinations of the two. Trying one out is as easy as downloading one and firing it up, although this is more of an application of VMware's technology in another realm rather than a feature of VMware per se.

Microsoft Virtual PC 2007 Service Pack 1

Price: Free
Vendor: Microsoft Corporation
Link: Microsoft Virtual PC

Originally developed by Connectix and later purchased by Microsoft, Virtual PC was one of the other original virtualization apps. It's limited in its feature set, and some of the management functions are clumsy, but it does use hardware-assisted virtualization and supports both 32- and 64-bit hosts. Its biggest problem is that it has aged poorly, and is badly in need of an upgrade.

Virtual PC running a Windows Vista guest on a 64-bit host. Note the guest only has a single CPU core.

(click for image gallery)

One of Virtual PC's widely-touted advantages, as you can imagine, is its integration with Windows systems as a guest OS, but that advantage has been eroded very quickly -- and (as you can also well imagine) there's no integration support with Linux, period. Also, while Microsoft Virtual PC may be free to download and run, there's a bit of a catch in that it will only work on certain editions of Windows as the host OS. Vista Home, for instance, isn't allowed as a host, only Vista Business, Enterprise, and Ultimate.

Managing virtual disks is mostly done through a wizard interface -- easy to follow the steps, but not as easy if you just want to accomplish a specific action quickly. If you're into scripting and batch files, though, just about the whole gamut of Virtual PC functions can be invoked from the command line. "You can create up to four network devices per virtual machine -- your choice of local networking between virtual machines, a shared NAT interface, a direct connection to the host’s adapter, or Microsoft’s Virtual Loopback adapter driver."

The rest of the hardware isn't as impressive: a maximum of three hard disks (IDE only, no SATA), one CD/DVD drive, and no support for USB devices at all. This has been a major source of complaints, and it's something that VirtualBox (for instance) not only supports natively but supports very well. There's also no support for emulating guest machines with multiple CPU cores on hosts with same, not even if the virtual machine extensions are installed. (The guest will report having the same processor type as the host, but only a single core will be available.) Worse, the only video emulation available in the supported guests is the horribly outdated S3 Trio32/64 chipset. One key feature Virtual PC does provide is "undo disks." They let you take snapshots of a virtual machine's state and then roll back to that state later.

My suspicion is that future editions of Virtual PC will simply be a "junior" version of Microsoft's Hyper-V technology, with those capabilities and many more rolled in. But for now, Virtual PC is still behind the curve, and it shows more than ever. Sun xVM VirtualBox 1.6.2

Price: Free for personal use
Vendor: Sun Microsystems, Inc.
Link: Sun xVM VirtualBox

I'll own up to a prejudice right away: VirtualBox is my personal favorite of all the applications listed here. It's open source, it's freely available for personal use, it has a great range of smartly designed features, and it runs transparently on multiple architectures.

VirtualBox, running an instance of Fedora 9 with Guest Additions not yet installed.

(click for image gallery)

Up until recently VirtualBox was a sovereign project, but it's since been acquired by Sun. That doesn't mean the core free-to-use edition is going away, fortunately. In fact, the most recent edition of VirtualBox under Sun's aegis is quite good, and apart from some rebranding here and some polish there it's pretty much the same program.

When you configure a new virtual machine, you're allowed to create a new virtual hard drive to go with it (IDE or SATA, your choice) or pair it with an existing drive. However, to avoid data corruption, all virtual drives are locked to a specific virtual machine when paired with it. If you want to use a given drive with another machine, you need to unpair it from the old machine (which must be completely shut down) before you can pair it with the new one. ISO images also have to be added to VirtualBox's disk manager tool before they can be used, although obviously more than one VM can use the same .ISO. I was also able to mount .VMDK-format disks natively in VirtualBox, although the current version of the program doesn't support snapshots and can only operate in write-through mode with .VMDK disks.

Adding guest additions in Windows is as simple as installing a program; in Linux, it requires a bit more work but the process is well-documented. If you have USB device support set up, any USB device connected to the host can be connected to the guest with only a few clicks. The required USB driver on the host is only loaded when a machine is booted that requires it (at least when you're using Windows as the host). Keep in mind that when you connect a USB device to a guest, it is not available for use on the host computer; it's in essence being unplugged and re-plugged into that machine.

If you want to use an existing hard disk for a guest OS -- what the VirtualBox docs refer to as "raw hard disk access" -- you'll need to do a little command-line geekery to make this happen. It's also best to do this with disks and partitions that are not mounted in the host OS, to minimize the chances of data corruption. This is probably the most direct way to do any P2V work, barring making an image of a hard drive to a supported VirtualBox drive format, but beyond that you're more or less on your own. QEMU 0.9.1

Price: Free
Vendor: Fabrice Bellard
Link: QEMU

While nowhere nearly as user-friendly as the other programs described here, QEMU is still important and worth mentioning. It's a free and open-source program that performs not only virtualization but cross-platform emulation (i.e., running software intended for different hardware). Ports exist for various platforms -- Windows, Linux, and OpenSolaris among them -- but Windows and Linux are the best-supported. The default interface for the program is the command line, and although you can obtain various graphical front-ends for it such as QGui, you're going to need to accrue at least some knowledge of the way the command line works to get the most from the program.

DamnSmallLinux running in a QEMU instance. The right-hand window is the command line from which this QEMU session was invoked.

(click for image gallery)

As with the other programs discussed here, QEMU works with disk images -- either existing .ISO images or hard disk images provided by the user. The qemu-img utility lets you create blank hard drive images to be populated by the user later (for instance, with an OS install). It's also possible to attach a physical CD/DVD drive in QEMU as a virtual drive, or to mount a physical hard drive partition within the program as well -- although be careful using this, as you could inadvertently trash the partition in question if you're careless.

QEMU's performance can be given a boost thanks to an accelerator driver, which allows QEMU to run in full virtualization mode to execute guest code directly on the host CPU. The driver runs on both 32- and 64-bit hosts; in Windows this driver is installed as a system service so it's relatively easy to add, remove, start and drop. USB support right now only extends to seamless mouse capture, but connecting a host OS to the network is as easy as supplying a command-line option. There's even support for temporary system states or snapshots: you can boot from a disk image, write changes to a scratch file, and then ditch the scratch file when you're done.

One thing that QEMU definitely lends itself to is "portable OS" applications, such as placing an instance of Linux on a USB stick and being able to run that from within Windows (or even another instance of Linux) without rebooting. QEMU also doesn't require any formal installation (apart from the aforementioned and optional device drivers) to get up and running; it works in any directory, albeit with a command-line switch to provide the path to the program's components.

A number of people have created pre-packaged versions of QEMU with various OS images, something like VMware's appliances although without the licensing restrictions you might encounter with VMware. One such item is QEMU-Puppy, a repackaging of the Puppy Linux distro with QEMU.

Conclusions
While VMware sports the best overall range of features, both big and small, VirtualBox is rapidly becoming a serious contender if it isn't one already. Its licensing is far less restrictive, and it only differs in functionality in ways that will be important to a minority of users. QEMU is best for advanced tinkerers or the more adventurous, but with a little work it can do quite a bit.

Finally, it's somewhat depressing how far behind the curve Microsoft's Virtual PC has already fallen: it's missing key features implemented by the competition, has licensing that doesn't allow it to run on all current versions of Windows, and in general needs to be replaced by a newer and better offering. Looking at the competition, some might say it already has been.

About the Author(s)

Serdar Yegulalp

Contributor

Follow Serdar Yegulalp and BYTE on Twitter and Google+:

Never Miss a Beat: Get a snapshot of the issues affecting the IT industry straight to your inbox.

You May Also Like


More Insights