Microsoft Hyper-V 和 VMware ESX Server都是Bare-Metal虚拟化的产品,他们最大的区别在于,Microsoft Hyper-V采用了微内核的结构,而ESX Server是一个单内核的产品。

Hyper-V VS VMWare_职场    Hyper-V VS VMWare_休闲_02

       单内核的主要特点是硬件的驱动程序集中在Hypervisor一层,被Hypervisor上的所有的虚机所共同使用。当一个虚机的OS需要访问硬件时,它通过Hypervisor中的driver model来访问,这种单内核的Hypervisor能够提供很好的性能,但是它在安全性和兼容性上存在缺陷。由于驱动程序和一些第三方代码跑在一个很敏感的区域内,这种模式继承式了拥有了一个很大的被攻击面。设想下某些不怀好意的代码被隐藏在驱动程序当中,然后跑在Hypervisor中,这会影响到所有的客户虚拟机,而且这是很难被发现的,因为对于实际被使用的虚机来说,Hypervisor这层是不可见的,所以无法通过一些病毒软件去监控它。 另外一个问题就是稳定性,假设某个驱动程序当中存在bug,那么它将影响到所有的虚机。另外你还要求Hypervisor去支持所有的驱动程序,造成了这层体积较为庞大。所以单内核的Hypervisor一般被认为是胖Hypervisor。

       Hyper-V采用了微内核的结构,它是一个瘦Hypervisor。因为它里面没有驱动程序,所以在体积上Hyper-V更有优势,另外,由于微内核体积较小,所以运行的效率很高。驱动程序是跑在每一个分区里面的,每一个分区内的虚机OS都能够通过Hypervisor直接访问硬件,还使得每一个分区都相互独立,这样就拥有更好的安全性和稳定性。

       除此之外,大多数虚拟化解决方案都是采用了硬件模拟来解决硬件访问的兼容性问题,但是也造成了很大的开销和性能损失。Hyper-V没有采用这样的做法,而是采用了Enlightenment(启蒙)技术。它能够对那些虚拟机操作系统进行启蒙,让它们明白自己是一个虚拟机,被启蒙过的虚拟机操作系统会记住虚拟化,所以他们可以不需要硬件模拟,而是通过VSP/VSC这套组件来进行的,当子分区内的操作系统需要访问硬件的时候,由子分区内的VSC(Virtualization Service Client)通过VMBUS将request发给父分区里面的VSP(Virtualization Service Provider),然后由VSP去提供实际的硬件服务。通过这种方式来使用硬件,相对于使用硬件模拟的方法,其访问性能有了大幅度的提高。

       另外这种方式可以兼容大量的驱动程序,而不必像ESX Server一样为虚拟机开发专用的驱动程序。在大多数情况下,只要硬件设备能够在Windows Server 2008下工作,那么就肯定能够在虚拟机下工作。再加上Windows平台的驱动本来就比其他平台的驱动程序丰富,而ESX Server容易遇到兼容性方面的问题,所以在硬件兼容性支持上Hyper-V具有无可比拟的优势。

       经过这几年的努力,微软为虚拟化技术提供了非常丰富和全面的产品线,从服务器虚拟化的Virtual Server, Hyper-V,到应用程序虚拟化的SoftGrid,到桌面虚拟化的VPC,再到用户界面虚拟化的Terminal Services,一应俱全。而且为这些所有的产品提供了统一的管理平台:System Center, 不管是物理机,还是Hyper-V,VPC,Virtual Server的虚机,甚至是VMware的虚拟机都可以通过System Center的管理工具进行统一管理,并且彼此兼容。另外微软还提供了自己的服务器操作系统和一些其他服务器产品(比如Exchange Server),能够做到在后台将虚拟化产品和其他服务器产品的联动支持和无缝连接,所以微软能够为用户提供一套完整的虚拟化解决方案。

       最后Hyper-V相对于ESX Server,还有一个优势,就是使用成本。相对于ESX Server昂贵的授权费用,Hyper-V价格非常低廉,而且如果你购买了Windows Server 2008的话,Hyper-V是免费附赠的,所以Hyper-V无疑是企业虚拟服务器的最佳选择。