Operating System Virtualization
In this second article of my series about virtualization, I'll describe what used to be the typical meaning of the word "virtualization" for me until recently: virtual operatig systems.
The virtualization software creates virtualized hardware, in which the guest operating system and its applications run. So there can be mutiple "virtual PCs" (pieces of virtualized hardware) running on one physical PC. There are actually two sub-types in this category: the virtualization software can either run on a host operating system (VMware Workstation, Microsoft Virtual PC) or directly on the hardware (VMware Server, Microsoft Virtual Server).
The virtual PCs are isolated from each other and from the host operating system, but can communicate via (virtual) network adapters or drive shares, and can access devices on the host machine such as the CD-ROM drive or USB devices (there's no USB support in Virtual PC).
The advantage of this technology is that you can run any operating systems side by side: you can run a Linux and a Windows Vista guest on a Windows XP host for instance. VMware even supports Linux as a host.
Virtual machines can easily be reset to their previous configuration which makes them a great tool for testing software in a reproducible configuration. It also helps to test your (setup) program on older versions of Windows and on different service pack levels. And if your setup wrecked the operating system, just reset and you're ready for another try.
For a systems administrator, running multiple operating systems on one piece of hardware can reduce IT costs by consolidating multiple servers into one machine. Virtual machines can also easily be moved from one physical machine to another, for instance in case of a hardware failure.
The disadvantages of operating system virtualization are the disk space and memory use and CPU load they create. All the virtual machines share the resources of the host machine with each other and with the host itself. Another disadvantage is a result of isolation: by default applications in virtual machines can't read or write to the physical hard disk in a way that the host or other virtual machines can share the data. Also an application running in the virtual machine can't integrate or interact with applications on the host (as an office add-in for instance).
Note that there are ways for an application to detect that it is running in a virtual machine, so that it might refuse to run to avoid by-passing of license enforcement tools. It's also possible that malware behaves differently on virtual machines to make it harder for anti-virus experts to analyze it. Malware authors also found ways to escape the virtual glass tube and to infect the host operating system.
You may also need to acquire additional licenses for each operating system instance you install in a virtual machine, depending on the respective license agreement. Therefore it's typically not an option for ISVs to ship their (Windows) software in form of a virtual machine, because they would have to redistribute the operating system with it. Microsoft however uses this technology to make pre-release builds of products like the next version of Visual Studio (code named Orcas) available for download as virtual disk images.
This was part two of my series about virtualization technologies. Here are links to all parts (will be updated when additional articles are published):