Pane Relief: Virtual Operating Systems
Virtualization for Windows
On the face of it, the idea of running multiple copies of Windows on a single machine sounds like it has, at best, limited utility. After all, Windows Server is a multiuser, multitasking operating system, and even the Windows desktop operating systems, XP and XP Professional, multitask nicely. Why add the overhead of a virtual operating system?
As it happens, there are several excellent reasons to do so. One reason is separation. While virtual operating systems can’t absolutely, positively, and completely separate the client OS from the underlying hardware or other operating systems running on the same machine, most of them can come extremely close. In a virtual operating system, the client operating systems don’t have direct access to any of the hardware, although they think they do. That means that the system as a whole can be protected from any problems, intentional or not, generated by what’s running on the client OS. This feature is especially important to developers and others who routinely run less-than-stable stuff on their computers. It’s a lot easier to recover from a virtual machine crash than a real crash.
The term virtualization in this sense means an operating system that can run multiple copies of other operating systems on top of itself. Although technically these things are operating systems in their own right, they’re pretty limited. They’re designed to act simply as intermediaries between multiple copies of "real" operating systems—called guests—and the underlying hardware, not to run applications in their own right. This is why they’re commonly called hypervisors instead of operating systems.
Virtualization is nothing new, of course. Not only has it been around on computers since IBM’s VM operating systems, but virtual operating systems have been available on Windows systems for some years from VMware and others. What is new is the level of commitment—not to say hype—that these products are attracting.
The big reason for the soaring interest in virtual operating systems is efficiency—specifically, the need to get the maximum utilization of servers in the enterprise. As IT environments have become more complex, servers have proliferated. You have mail servers, print servers, file servers, network servers, security servers, backup servers, and on and on and on. Most of those servers are designed to run on their own hardware and many of them don’t play well with others. Specifically, the performance of server software tends to deteriorate if you try to run more than one server on the same machine.
At the same time, it has become increasingly obvious that most of that hardware running the servers is underutilitized. The result is a lot of expensive computing horsepower and other resources going to waste.
Virtual operating systems allow consolidation of those software servers on fewer hardware servers, reducing costs and improving return on investment—theoretically without compromising performance. VMware claims that enterprises using its ESX Server product can get server utilization up to 70–80%. This is a considerable improvement over the 15% server utilization cited for some conventional servers.
Because of these advantages, companies from Microsoft to Intel are moving into the virtual OS business, and more and more of their customers are either using virtual operating systems or looking seriously at choosing one. Some manufacturers, such as Microsoft and VMware, are offering hypervisors; chipmakers like Intel and AMD are beginning to offer processors with instruction sets to support virtualization, and a number of companies, such as Invirtus and ToutVirtual are offering tools and applications for hypervisors.
The question, of course, is which hypervisor? Unlike Windows itself, which is purely a Microsoft product (although there are emulators available, such as WINE for Linux), virtual machine operating systems don’t have to come from Microsoft to run Windows. Any of the new virtual machine operating systems will run Windows (properly licensed, of course). To Windows, the virtual OS looks like the native hardware. In fact, one of the major advantages of running operating systems as guests on virtual machines is that you don’t need special versions of your applications or (most probably) your operating systems. To the application and the guest OS, the virtual machine looks just like the real thing.
Some companies have taken advantage of this feature to offer canned demonstrations of elaborate software that doesn’t require installation or configuration. Just pop the CD or DVD into a virtual machine OS equipped system and run the application—no messing with drivers, configuration, or other hassles. The application runs in its own virtual machine, which handles everything. For example, VMware offers what it calls "virtual appliances": ready-to-run virtual machines already loaded with software such as IBM’s DB2, Oracle, and Red Hat and Ubuntu versions of Linux.
If virtualization for Windows is such a wonderful idea, how come we haven’t had it before? There are three reasons, two of them technical and one of them commercial.
The technical reasons are, first, that a virtual architecture eats resources. Even standard Windows is notoriously resource-intensive, and earlier Windows systems usually didn’t have the processing power, I/O, and such to support virtualized Windows with reasonable performance in most applications.
The other technical reason is that some peculiarities of the x86 architecture make a virtual OS difficult to implement. It can be done, of course, but it isn’t easy. Unlike some other architectures, such as Motorola’s 68000 series, Intel’s 8086 was never designed to run more than one instance of the operating system. (For that matter, it wasn’t designed to support multiuser, multitasking operating systems, but that’s gotten much better over the years.) Even the latest versions of the x86 processors from Intel and AMD are direct descendants of the 8086, and it shows. The upshot was that it requires a lot of technical savvy and just plain hard work to design a virtualizing operating system for x86 machines.
The commercial reason is the most important one. Until recently, there wasn’t an enormous demand for virtual machines on Windows systems. Administrators were content to add servers as needed.
Adding servers is a lot less popular now. Not only are most of those proliferating servers underutilized, but, underutilized or not, servers have to be managed. As system management becomes a growing expense, enterprises are looking for ways to bring those costs under control. While virtualizing servers isn’t perfect—you still have to manage the server software, after all—it does cut down the effort required to manage the hardware.