Using virtual networks
Virtualisation isn't limited to creating a one-off VM; you can also run multiple VMs simultaneously. You will, of course, need adequate resources to power the VMs – if you don't, you run the risk of bogging down the host. One reason for running a bunch of VMs is to test network software before deploying it on your real network.
To help you with that, most virtualisation apps will let you create a virtual network environment. It also serves as a great way to demo network-based software without deploying it on a real network.
Traditionally, if you want to deploy an app across several platforms, you have to develop multiple platform-specific versions of it. With virtualisation you can run the app inside a VM on any platform. Tools such as VMware Thinapp, Novell ZENworks Application Virtualisation, Microsoft App-V and Symantec Endpoint Virtualisation Suite take this one step further and just let you run any app on any platform.
The apps contain just enough virtualisation magic to encapsulate them from the host OS, which is why you can also simultaneously run two apps that would normally conflict.
Get a time machine
There's no shortage of methods by which you can bring down a machine. Trojans, viruses and even untested and unstable apps can crash your PC and lose you valuable time and data. Running your OS on a VM doesn't insulate you from these issues, but you do have the ability to run multiple states of the machine.
So you can have one snapshot of your newly installed machine and one with all the apps that you need, allowing you to instantly bring your computer back to a usable state if it does go down with an infection.
Blurring the boundaries
The fact you can run foreign OSes inside each other is cause enough for jubilation. But if all you need is a couple of apps, recent releases of popular virtualisation tools such as VirtualBox, VMware Workstation and Win4Lin let you run apps from inside the VM along with apps on your host.
In this case, the guest OS inside the VM sits in the background, and the apps appear as if they are part of the host OS.
For an increasing number of software projects and computer trainers, a screencast is an ideal replacement for the static screenshot. Some virtualisation apps let you record action inside a VM and create a moving presentation, or screencast. There are lots of screencasting tools, and you can run them inside the VM to capture all the action.
For a fantastic introduction to the concept, visit screencasts.ubuntu.com. Using virtualisation has the benefit of running the screencasting app on the physical hardware directly, which makes it faster.
Remote control PCs
You don't need a powerful machine to access a VM. You could run a VM inside a highspec computer and access it from a thin client anywhere on your network (and beyond). To enable this, VMware bundles a VNC server that pipes the VM to another machine.
VirtualBox comes with a Remote Desktop Protocol server that gives you more control over the VM, including the ability to log out and reboot it. You can also plug USB devices into your thin client and have them show up in a VM running on a remote machine.
Since the virtual machine runs independently of the host OS and is totally portable, you can carry it around on a USB stick. With virtualisation apps such as Kidara's ToGo (now owned by Microsoft) and MokaFive, you can carry VMs on USB devices and plug them into any machine to boot into your VM.
MOKAFIVE: Virtualisation makes machines so portable that you can even run them off USB drives
This is especially useful for corporations that want to run secure, corporate-approved environments on unsecured or public computers.
Optimising the hardware
While virtualisation apps create virtual hardware for VMs, they're increasingly able to squeeze as much juice as possible out of the host hardware. Most popular virtualisation apps, including VirtualBox, support advanced power management such as the ACPI standard, and can show the levels of the host machine's battery (if that applies). They can also make guest OSes span over multiple monitors if you have such a setup.
Virtual machines can also use the host machine's network card to connect to the router via Network Address Translation or bridged configurations, and virtualisation tools can also make VMs that can take over more than one processor core.
In fact, there are already processors from both Intel and AMD that have special virtualisation capabilities built in to the hardware.
Bringing down the wall
The ability to exchange information between different proprietary devices seamlessly – a concept known as 'interoperability' in the industry – is a nice buzzword, but there's little evidence of it actually becoming particularly widespread. Until recently, this information apartheid was true of virtualisation.
Different vendors created VMs in their own format, making it impossible to switch a VM between virtualisation tools. That's until various vendors collaborated and created a standard known as Open Virtualisation Format (OVF). Happily, OVF is slowly gaining traction.
In addition, the Jumpbox project produces virtual appliances that can run on any virtualisation tool – VMware, Parallels or Virtual PC.
Don't expect Firewire
Unfortunately, if you have a device connected via Firewire to your host machine (like most camcorders, for example), the guest inside the VM won't be able to see it. This is true for all virtualisation tools on all platforms. However, this doesn't include storage devices connected via Firewire, which can still be accessed.
In the early days of desktop virtualisation, Firewire support wasn't given priority because VMs didn't have the resources needed to process video, but now that things have changed, it's high time that this situation was addressed.
Most VMs are not ideal for gaming, but they are improving fast. VMware now lets you run apps that use DirectX 9 accelerated graphics with shaders up to Shader Model 2.0. VirtualBox has also introduced an experimental OpenGL driver that tunnels the 3D requests from the VM to the host.
Another option is VMGL, which lets OpenGL apps running inside a VM take advantage of the graphics hardware acceleration on the host. This works with all ATI, Nvidia and Intel cards, and across virtualisation platforms, but is still a little complicated to set up.