For as long as Windows has existed, applications have been prohibited from communicating directly with hardware. This is because one of the major principles behind the Windows operating system is that it acts as a level of abstraction between hardware apps. Applications never communicate with the hardware directly. Instead, they communicate with Windows, which in turn uses various device drivers to enable it to communicate with the physical hardware.
Recently, however, this philosophy has started to change -- at least when it comes to server virtualization. Let's start with a little history.
A look back at Virtual Server 2007
Prior to the release of Windows Server 2008, Microsoft's primary virtualization solution was Virtual Server 2007. Virtual Server used the standard philosophy, that is, that apps were not allowed to communicate directly with the system hardware, taking something of a monolithic approach to server virtualization.
Windows treated Virtual Server 2007 pretty much the same as any other Windows application in that the host operating system ultimately retained control of all of the system's resources. That meant guest operating systems all shared system resources, such as memory, network communications, video processing and so on.
This sharing of resources is both inefficient and risky. It's inefficient because guest operating systems do not have a dedicated pool of system resources. Instead, the host operating system acts sort of like a dictator, telling the guest OS if or when it can have access to certain resources. Both Windows and Virtual Server 2007 act as a bottleneck for guest operating systems.
This is a risky approach because of the way that resources are shared between guest and host operating systems. Suppose for a moment that the host OS had a buggy NIC driver, and that bug eventually made it so the host OS could not communicate on the network. Because the guest operating systems are completely dependent on the host, they would not be able to communicate across the network either.
Enter the hypervisor
With the release of Hyper-V, Microsoft took a completely different approach to server virtualization in that virtual machines are now allowed to communicate directly with the hardware (well, sort of). The exception is disk I/O, which is still coordinated through the host operating system. Guest servers running on Hyper-V completely bypass the host OS and communicate directly with the server's hardware. The reason why Microsoft is able to take such a radically different approach to server virtualization is that Hyper-V is based on some relatively recent changes to server hardware.
The latest server hardware supports something called hardware-assisted virtualization. For example, Intel servers offer Intel VT (Virtualization Technology), while AMD has AMD-V. Hyper-V absolutely requires that your server be equipped with one of these two technologies. It is also worth noting that I recently deployed a server that was equipped with Intel VT, but I had to enable virtualization at the BIOS level before I was allowed to install Hyper-V.
So what else makes Hyper-V different from previous virtualization technologies? Unlike Virtual Server 2007, Hyper-V is a very small application. This size reduction is due to the fact that it's really the hardware that is doing most of the virtualization work.
Hyper-V creates special partitions for guest operating systems. These are different from disk partitions, because the partitions include memory and other system resources. Each virtual machine functions solely within its own partition, which greatly reduces the chances that a failure with the host OS or with a different guest could impact a guest operating system. It also makes virtualization much more secure since the virtual machines are physically isolated from each other.
Hardware-assisted virtualization is a technology that is really worth paying attention to. I have been using Hyper-V on a few different servers in my lab, and guest operating systems seem to perform much better than they do in a Virtual Server 2007 environment. In fact, they tend to perform so well that I sometimes forget that they are virtual servers instead of physical ones.
ABOUT THE AUTHOR
Brien M. Posey, MCSE, has received Microsoft's Most Valuable Professional Award four times for his work with Windows Server, IIS and Exchange Server. He has served as CIO for a nationwide chain of hospitals and healthcare facilities, and was once a network administrator for Fort Knox. You can visit his personal Web site at www.brienposey.com.
This was first published in August 2008