It sounds kinda dumb to some of us, but I always try to start at the beginning, so let's start with defining Virtualization. Wikipedia does a good job of defining Virtualization:
In computing, virtualization is a broad term that refers to the abstraction of computer resources. Virtualization hides the physical characteristics of computing resources from their users, be they applications, or end users.[1] This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple virtual resources; it can also include making multiple physical resources (such as storage devices or servers) appear as a single virtual resource.
That makes sense, Right? OK, maybe we need to dig a little deeper, but the bottom line is that Virtualization let's us take one computer or server and give it multiple "personalities". Why would we do this? What problems are we trying to solve? There are multiple ways to virtualize, but right now we're going to focus on hardware virtualization. We'll talk about the other forms of virtualization at a later time, but back to the questions. Why? and What are we trying to solve?
- Most servers today only reach 40-50% utilization; if we're lucky! Some of our most "critical servers" are only averaging 20% utilization.
- Server bloat. If you run a data center, how many computers do you have? Do you have enough floor and rack space, Air Conditioning and Electricity? I have had a few customers tell me that the A/C people will not let them put any more servers in their server room because there is no more A/C capacity.
If we can find a way to increase the utilization of each server we have, can we have fewer servers? That's our goal! If we can add multiple personalities to each server (the hardware), each piece of hardware can get closer to fully utilized. Multiple personalities??? While that's something that we might have to seek professional help for, but it's actually a good thing for our server hardware if it's managed properly.
Let's define a few terms:
Host computer - this is the physical computer that you have racked up sucking electricity and generating heat.
Guest Operating system - this is one of "personalities" that can be running on your host computer.
Workload - I'll refer to workload as opposed to server or server application, because our goal is to separate the workload from the hardware. We can create multiple workloads, each workload can contain the operating system and the server application.
Hypervisor - the generic name for the Virtualization architecture. I'll talk more about the hypervisor below.
System Center Virtual Machine Manager (SCVMM) - With virtual machines, comes the risk of virtual machine sprawl. Remember that someone has to manage and secure all of these machines. SCVMM does a great job at managing the host computer and the guest operating systems seamlessly and it even manages VMWare servers AND V-Motion.
There are multiple server virtualization solutions, VMWare is the most popular, XenServer offered by Citrix is gaining traction, and Virtual Server 2005 offered by Microsoft. Microsoft has now released our new virtualization solution, Hyper-V. Hyper-V is built into Server 2008. While Server 2008 released a few months ago, the RTM bits of Hyper-V are releasing today.
There has been a lot of debate about the architecture of the virtualization solutions, the term you will hear a lot from all of the virtualization vendors is the HyperVisor. The big question is "should the device drivers be part of the HyperVisor or not?". Microsoft's view is that the device drivers should not be included in the HyperVisor itself, but need to be made available to the HyperVisor (of course). Device drivers are the number one cause of operating system failures. I'm not saying our plan will eliminate all of these failures, we know better; but our goal is to minimize the risk of a device driver failure impacting the overall host machine. By removing the device drivers from the Hypervisor, we can also reduce the size of our HyperVisor. The smaller the HyperVisor, the smaller the attack surface. The smaller the Hypervisor, the smaller the code base, and statistically speaking, the smaller code bases have fewer bugs. I agree that this is a bit out there, but the reality is that the larger code bases are more difficult to fully test and debug.
The Hyper-V team has done a very good job of keeping the Hypervisor small and fast and regression testing it from every angle they could find. I've seen incredible performance improvements over Virtual Server 2005 R2, but we all expected that... Right? Performance is so much better than Virtual Server 2005 that I doubt you'll see many serious benchmarks against Virtual Server 2005. I expect to see more benchmarks against actual workloads. One nice tid-bit about our confidence in Hyper-V, we've been running all of our MSDN and Technet sites on Hyper-V servers for over two months, and over 25% of Microsoft.com is also running on Hyper-V machines. I'm very comfortable that this will be a very stable release. We've got over 250 customers that have been running Hyper-V in production for some time as well, so it's not just us, but some of our largest customers that have helped drive us to our quality bar. This functionality is now part of Server 2008 and you'll see a lot of our partners continue to enhance and extend their functionality with the use of Hyper-V.
More about the hypervisor... the Hyper-V hypervisor runs in the most privileged part of the server, so if the hypervisor is compromised, the risk of compromising the contents of the host machine and of the virtual machines increases as well. Keep in mind that virtualization will allow you to reduce your physical server footprint, but now if a host computer fails, you have more than one workload fail. I've seen companies consolidate 100's of physical servers down to less than 10 Virtual Servers. As you plan your virtualization strategies, please continue to think about DR and uptime.
We spent a lot of time reviewing the architecture and functionality of Hyper-V from a security perspective. VMWare had the first vulnerability where a compromised host machine also compromised the guest operating systems on that host. We've put a lot of energy around ensuring that 1.) the hypervisor is not compromised, and 2.) even if the hypervisor is compromised, that does not mean that the contents of the guest operating systems are compromised as well. We all know this kind of vulnerability was only a matter of time. This vulnerability occurred about a year ago, so all of the virtualization vendors have had plenty of time to address these types of vulnerabilities. No promises that these types of vulnerabilities are a thing of the past, but I'll be surprised to see many more of these.
Hyper-V supports all of the Windows 2008 drivers, there is no need to re-write drivers just for Hyper-V. The good news is that drivers are easier to acquire, the bad news is that anyone can provide a driver that will work with Hyper-V if it works with Server 2008. The risk is again that these device drivers may not be as stable as they should be. We have mitigated the stability and security concerns by having these drivers execute in a less privileged portion of the host computer. If these drivers crash or are compromised, they do not have access to any other portion of the host machine. This is where pictures are worth 1000 words, but the bottom line is that device drivers are still available to Hyper-V, but they are insulated so if they crash or are compromised, they don't compromise the whole machine, or cause the whole machine to crash. Some device drivers can still crash the whole machine, but things like video drivers and other less critical drivers should not cause host system failures. This scenario is driver specific, I still encourage you to test every single change before its deployed in production.
I'll have more thoughts on Hyper-V as we go forward, but for all of our customers and partners, Hyper-V is a very compelling virtualization solution that is now released and available.
We have some good information on Virtualization on TechNet, check it out.
Until next time!
Rob