IT managers are abuzz about virtualization as a way to optimize and simplify their sprawling IT infrastructures. Although currently more widespread in enterprise test labs than in actual production, Virtual Machines (VMs) offer an effective way of "carving-up" a single physical system to make it appear and work like multiple
systems. In today's under-utilized Windows server environments, this is a real boon.
Here's why: Client-server technology historically deployed just one task or workload per server. This suited Windows as it grew up from a desktop to a server OS but stands in direct contrast to the multiple-workloads-per-server approach more typical of Unix and bigger systems. Over time, as computing power increased with every new x86 system, many Windows servers rolled off the assembly line loaded to just 2% to 20% of their capacity. For enterprises, that meant upward of 80% of server
resources going unused.
Virtual Machines allow IT to recapture a sizeable portion of this unused power through server consolidation. They create the illusion of totally separate physical machines, even though, in fact, they are running side-by-side on just one piece of hardware. VM technologies isolate the software running in one VM from that running in all other VMs on the same machine. In fact, a VM does not know of the existence of any other VM except through the same networking mechanisms that independent
physical systems use to talk to each other. Moreover, each of these VMs can contain a totally different OS environment -- Windows, Linux, etc. -- from its siblings.
One could, of course, just start putting more than one job on every Windows server. Tools like the Windows System Resource Manager (WSRM) in Windows Server 2003 certainly help, but Windows was not really designed with "many workloads per system" as its focal point, so trying to deploy many jobs per server can be a bit messy.
This is where Virtual Machines really shine. VMs provide the management tools and workload isolation needed to make server consolidation straightforward. VMs can help administrators reduce the total number of physical servers that need to be purchased and maintained, while creating the appearance and much of the function of the separate systems to which they're accustomed.
For power to spare, rearrange the landscape
Workload management is another benefit. Each VM is represented by one or more "container files." These files can be easily moved or copied from one system to another -- even across systems coming from different vendors or running different revs of Windows. So if your VM is running on an old system that has run out of gas, or on one that needs to be serviced, that workload can be quite easily moved to a different system that has power to spare, providing an easy mechanism for workload balancing.
These files also give the ability to "snapshot" VM running an active workload as a way of providing disaster recovery or rollback capability. The entire state of the active VM -- OS, applications and local data alike -- can be frozen and copied for future restoration. VMs provide a level of hardware independence that has seldom been seen in the Windows world. Cloning -- copying a set of VM container files and then firing up the copy -- is another plus for easy deployments, including tweaked
files and configurations.
Of course, any new technology also has tradeoffs. Using VMs to consolidate many physical servers, for example, multiplies the impact should a server fail. This is mitigated by the ever-increasing availability of x86 servers, by fault-tolerant servers and clusters and by the relative ease of moving VM workloads around a datacenter. But VMs do encourage putting multiple eggs in one basket -- so the basket has to be better constructed and protected.
Moreover, for server consolidation to make sense, you have to have spare horsepower. If two servers are already more than 50% loaded, for example, they would be poor candidates for consolidation. VMs introduce their own overhead, which can range from just a couple percentage points up to 25%. Very I/O-intensive workloads are not generally good candidates, because I/O has to pass though multiple additional layers of virtualization code, slowing performance.
Virtualization is never free. As with any new technology, its tradeoffs have to be understood and accommodated. While Virtual Machines impose their own overhead and tradeoffs, they are worth considering for their substantial consolidation and management advantages.