June 16, 2008

A virtual appliance primer

Author: Mayank Sharma

Virtual machines are virtually taking over the world. By itself a virtual machine is just a container that describes various resources such as memory, disk space, processor, and network card, and allocates them from a physical machine. As with a physical machine, it's the software bits (the operating system and applications) that make a virtual machine usable. When you mix a virtual machine with real software you get a virtual appliance. Some complete Linux distributions as well as specialized apps are available as virtual appliances. Thanks to the ease in packaging one, there's no shortage of virtual appliances around, if you know where to look.

Deploying a pre-installed and pre-configured application appliance is far easier than preparing a system, installing the app, and configuring and setting it up. But the ease of use has a drawback -- virtual appliances are several times the size of the app itself, primarily because appliances also bundle an operating system to support the app. In the days when application appliances were just catching on, developers would bundle their 10MB apps with 700MB distros and offer 700MB+ appliances.

Today, virtual appliances are becoming a de-facto means of software distribution and have spawned a new type of business -- the virtual appliance vendor. Along with software vendors and virtualization software companies, appliance vendors are putting in the extra effort to streamline the distros that power the apps. So, for example, Bugzilla, the popular bug tracking app, is available as a 2.4MB download tarball from Mozilla, as well as a 150MB appliance from appliance vendor Jumpbox. Mathematically, this is 62.6 times the size of the app, but in 150MB you're also getting an operating system, stripped to the bone and optimized to run only that particular app.

Looking for virtual appliances

Several software vendors distribute their products as ready-to-roll appliances, in addition to regular tarball downloads, including TrixBox, DimDim, and Ubuntu. So the first place to look for virtual appliances for a particular app or distro is the developer itself.

Additionally there are lots of Web sites that host virtual appliances of popular apps and distros. The popular place to look for appliances is VMware's virtual marketplace. A majority of the appliances listed there are available as free downloads. The appliances you have to pay for either bundle proprietary apps or are certified by VMware as enterprise-ready. All appliances listed on VMware's marketplace make use of and run on VMware's virtualization technology, so you'll need the freely available VMware Player to run these appliances.

Since VMware is the most popular virtualization software, there are several one-man Web sites that offer virtual appliances which are generally built around a particular distro or a particular category of distros. VMwhere serves Gentoo and Slackware appliances, ThoughtPolice has CentOS, Debian, Fedora, Ubuntu, and FreeBSD appliances, Jcinacio specializes in all appliances Ubuntu, and VMachines hosts appliances for desktop, server, and firewall/security distros.

VMware might be the most popular virtualization software, but by no means is it the only one. You can also find free appliances for Xen, VirtualBox, and QEMU.

Xen is a popular open source virtual machine monitor or hypervisor. You can find a slew of Linux distributions modified to run on Xen at Jailtime.org. That site has 32-bit versions of popular distros such as Debian, CentOS, Fedora, Gentoo, Slackware, and Ubuntu, as well as 64-bit versions of some of them.

Another popular virtualization software is VirtualBox, developed by Innotek and recently acquired by Sun. VirtualBox produces one feature-restricted open source edition of its client, while all its full-featured clients are available as free downlods. You need one of these versions to run VirtualBox appliances.

Several sites offer VirtualBox appliances of various Linux distributions. On HelpdeskLive you'll find appliances of popular distros (Fedora, Ubuntu, and more) as well as some modified ones like Ubuntu Studio with Cinelerra, and GNOME CentOS 5 with GCC. veeDee-Eyes doles out modified and default versions of all kinds of distros, including their alpha and beta releases as well. You'll also find lots of distribution appliances at the VirtualBox Images project on SourceForge.net.

Before there were VMware, VirtualBox, Xen, and the likes, there was QEMU, the open source processor emulator. Combined with its accelerator component, KQEMU, it's popular with people who prefer to use a 100% free and open source virtualization software. If you want to test Linux and *BSD distributions using QEMU, head over to FreeOsZoo. The site provides 70 ready-to-run appliances of various new, old, full-featured, and live distributions. You'll need QEMU to run these appliances, and the best place to get it is from your distrbution's software repository.

If you're using Microsoft Windows at school or work but want to run Linux, take a look at Bagvapp's virtualized Linux distributions optimized for Windows hosts. The site lists dozens of virtual appliances built around Linux distributions big and small, such as Fedora, Ubuntu, Debian, Slackware, openSUSE, Mandriva, CentOS, Pardus, Vector Linux, and Xubuntu. All Bagvapp appliances are available for free but only run on VMware Player.

If you use a Mac, Parallels hosts tons of appliances, including various Linux distributions, development suites, servers, and communication software for its virtualization products. But Parallels virtualization software is proprietary and commercial, though there is a trial version available for Parallels Workstation for Linux.

As you can see, there aren't many application-specific appliances available for virtualization products, apart from ones for VMware. But there are a couple of appliance vendors that provide virtual appliances that run across a variety of virtualization software. One such vendor is Virtual Appliances, which has four freely available streamlined stacks that deploy popular development environments including Tomcat, Linux-Apache-MySQL-PHP, Linux-Apache-PostegreSQL-PHP, and Cacti to build or host software. The stacks are built around Ubuntu's JeOS (Just enough Operating System) release and are available for VMware, Xen, Virtual Iron, and Microsoft's Virtual PC.

Also available, and in fact gaining popularity as the best way to deploy open source content management systems, is Jumpbox. Its Web site has virtual appliances built around almost every type of open source software, including WordPress, Joomla!, Bugzilla, Mantis, Drupal, Alfresco, SugarCRM, OTRS, Redmine, and others. The best part is that the same Jumpbox appliance will run on various virtualization platforms; versions for VMWare, Parallels, Microsoft Virtual PC/Server, Virtual Iron, and Xen and are offered as free downloads.

Converting appliances

Suppose you've downloaded one of the appliances listed above for your favorite virtualization software and are using it build and test network software or deploying network services. What if you then have to switch to another virtualization software? You may or may not find that appliance for your new virtualization software, but what about the configuration and the customization you've made to that appliance?

Migrating appliances is tricky business. In fact, apart from VMware, no virtualization software has released easy-to-use tools that help you migrate appliances created or deployed on one virtualization platform to another. VMware Converter is a free tool that helps you convert physical Windows-based machines into virtual ones, as well as migrate complete virtual machines created with third-party software such as Microsoft Virtual Server, Microsoft Virtual PC, Symantec Backup Exec System Recovery, Norton Ghost 10, and Norton Save & Restore.

Although there are no official conversion tools, with some command-line sorcery and thanks to QEMU, you can also convert VMware and QEMU appliances into VirtualBox, VMware appliances to Xen, and VMware appliances to Parallels.

Once you've tried converting a couple of appliances, you'll notice that the process is a pain-filled process with no guarantees. But things are looking up. The Distributed Management Task Force (DMTF), jointly created by Dell, Hewlett-Packard, IBM, Microsoft, VMware, and XenSource, is working to release the final specification of the Open Virtual Machine Format. Among other benefits, appliances created in OVF will run across any virtualization software that supports OVF. VMware has already created an OVF tool to help import appliances created with OVF. But I haven't yet seen any OVF appliances available for download, nor have I seen any tools from other virtualization software vendors that will export existing appliances to or from OVF apart from the VMware tool.

In summary

Once you are sold on the idea of running virtual appliances, you'll find virtual appliances for almost any open source application, as well as several Linux and *BSD distributions. The range and number of appliances you'll find depends on the virtualization software you choose to run them on. VMware is by far the most popular but it is closely followed by VirtualBox and Xen. QEMU seem to be distant fourth, popular mainly with developers who care more for its processor emulation skills.

There are a couple of virtualization software-neutral sources as well that offer appliances that run on a variety of virtualization platforms, either as individual releases for each virtualization software or all-in-ones that run across platforms.

Converting virtual appliances from one platform to another still remains a gray area, although some virtualization software vendors are working on finalizing an open format that'll help create vendor-neutral appliances. Until that happens, you'll have to prowl through the Internet looking for appliances for your virtualization software. Happy hunting!


  • Desktop Software
  • Tools & Utilities
Click Here!