This year it seems like every other computing news story has discussed virtualization, and if you haven't yet got a grip on what it means, you probably feel a little left-out. Virtualization seems to defy common sense, and it can be hard to understand why there's a rush of interest surrounding it.
For this end of year posting I've taken time-out to explain virtualization in everyday, simple language, using analogies with existing technologies. As always with any attempt to explain things in without getting too technically involved, it's impossible to be exact. More knowledgeable readers will have to forgive me if it seems I cut a few corners.
Virtualization is the practice of running several operating systems at the same time on a single computer.
The multiple operating systems are unaware they're virtual, and are usually unaware of each other. Each believes it's running exclusively on the computer.
Why would anybody want to do this? Do you recall the scene in Fantasia where Mickey Mouse chops the broom in half, only to find it makes more brooms?
That's what virtualization allows businesses to do. One computer can be "chopped" into many bits, usually referred to as a virtual machine, or VM. Each VM can run its own OS and have a specific task, such as web serving, or providing email functionality.
Previously a computer could run any number of programs at the same time, of course, but virtualization is fundamentally more secure because each OS is confined to its own VM. If a hacker compromises a program running on one VM, he won't have access to the other programs running on the other VMs.
In terms of costs and overhead, not only is there only one computer to administer but electricity bills are also reduced and there's no need to provide as much air conditioning in data centers. (Typically a business will employ several servers each running as many virtualized operating systems as they can get onto them bearing in mind RAM, CPU and storage limitations, but this is still cheaper than each having its own computer.)
You can run virtual machines on your own server computers in your own premises, of course, but lots of people either install or rent physical computers in data centers and run them there. They then access them across the Internet.
A recent survey suggested that, on average, every physical server used for virtualization runs 16 virtual machines. The limiting factor is usually the amount of RAM installed in the computer, although these are usually extremely powerful computers utilizing dual-socket quad-core processors and 50GB of RAM, with terabytes of storage.
Amazon's Elastic Compute Cloud (EC2) service allows users to rent ready-made virtual machines (known as ‘instances'), which can be used for just about any task the user requires. The instances are rented by the hour, with a cost based on how much computing power is needed and which operating systems are required. Windows is more expensive than Linux, for obvious reasons, but some of the instances come with software preinstalled, such as databases.
Renting virtual computing power in this way is sometimes known as Infrastructure as a Service (IaaS).
It's not just servers where virtualization is useful. Some people use virtualization to run a second instance of Windows on top of their everyday Windows installation, in order to test software, for example. The virtualized operating system desktop appears in a program window, or can be switched to full-screen mode, so it looks and feels to the user as if the operating system is running natively.
I use this type of virtualization when writing my computing books: I keep a word processor open in my everyday operating system, and use a virtualized operating system installation as a testbed. Most good virtualization software allows ‘snapshots' to be taken of the OS, so if I make a mess, I can ‘rollback' to a previous snapshot when everything was sweet.
Mac and Linux users are able to virtualize Windows in this way, so they can run Windows-only software.
Running virtual operating systems on top of another operating system is known as Type 2 (hosted) virtualization. Free-of-charge examples include VMware Player and Oracle's VirtualBox.
Companies like VMware also produce Type 1 (bare metal) virtualization software. This doesn't need to run on an operating system. It's effectively a simple operating system in itself that does nothing more than host virtualized OSes. Type 1 virtualization is found on servers. Examples include the open source Xen software, and VMware's ESX products.
Virtualization is spreading beyond servers and desktop computers, and onto mobile phones, where a user can have a "work" OS alongside a "home" OS, and can flip between them as need be. This allows IT managers to ensure that any work data is secure. The same type of virtualization is almost sure to spread to tablet computers too, for the same reasons; users will be able to have home and work states on the same hardware, with work data protected in its own virtual machine.
The software required for virtualization is sometimes called a hypervisor, especially when referring to Type 1 virtualization. This is an archaic term, seemingly derived from IBM mainframe computers.