您现在的位置是:首页 > IT基础架构 > 计算存储 >
服务器虚拟化:“微”与“V”之选
摘要在虚拟化技术市场中可选择的产品和解决方案其实并不多,因为活跃在其中的技术提供商也就那么有限的几家,如提供独立软件解决发难的VMware和微软,还有配合自身硬件产品使用如SUN和IBM。但正因为是可选方案不多,同样基于硬件虚拟化架构不同厂商的技术究竟是谁优谁劣,在业界...
在虚拟化技术市场中可选择的产品和解决方案其实并不多,因为活跃在其中的技术提供商也就那么有限的几家,如提供独立软件解决发难的VMware和微软,还有配合自身硬件产品使用如SUN和IBM。但正因为是可选方案不多,同样基于硬件虚拟化架构不同厂商的技术究竟是谁优谁劣,在业界中存在多种声音,矛头直指竞争对手,这往往使刚接触虚拟化技术的用户一头雾水,或者在竞争中并不存在优或劣,但架构也好,技术也好,都是存在很大的差异,本文综合各方意见,看看这些虚拟化技术究竟存在哪些差别,还有这些差些对用户的选择会有拿些影响。
现在市面上流行的虚拟化技术大概四种。一种是比较熟悉的VMware,VMware是市场领先者,因为它是很早就开始推广虚拟技术。从免费的workstation到高端的ESX,VMware的主要技术体现在用软件模拟硬件的东西,把所有硬件彻底的抽象出来。所以VMware上的一个应用程序用起来的时候跟物理硬件不直接发生调度关系。在VMware上面可以运行各种各样的操作系统,比如可以运行Windows、可以运行Linux,各种各样的系统。
VMware虚拟架构
VMware的ESX Server在每台物理机上加载一个“服务控制台”,来管理和操控Hypervisor的动作,解决了传统x86硬件管理中的ring转换问题,支持所有x86兼容OS,且系统无须更改设置。虽然这种通过软件模拟硬件服务的做法具有较大的灵活性,但代价是会导致较大幅度的性能损耗用户虚拟系统中的硬件抽象层。
另外一个就是微软,微软因为2003年的时候买了一个虚拟化技术公司,并2008年正式推出基于硬件层之上的虚拟化产品,在这点上微软已经赶上了VMware。微软的虚拟化产品Hyper-V以前被称作Viridian或者WSV。
2008上的Hyper-V的基本架构
同样采用Hyperisor内核架构的Hyper-V可以提供高效的分区间通信机制,并在此基础上创建高性能的虚拟I/O架构,并且充分利用Windows驱动模型,以便提供广泛的硬件支持,因为Hypervisor可以把单个服务器分割为多个CPU和内存的容器。目前,大多数子操作系统都还没有意识到虚拟化。它们以为是直接在服务器硬件上运行,因此需要使用hypervisor提供的硬件模拟。这个道理跟电影《黑客帝国》中不能分辨真实虚幻的人们一样,虚拟服务器会认为操作系统是构建在真实硬件之上,但作为父分区的Windows Server 2008,虽然它看似是物理系统,但实际上也是一个特殊的虚拟机,不过他的控制力能象电影里的Neo一样能透过hypervisor的隔离层。
还有一种是IBM的很早有一个大型机的那种技术,IBM也是虚拟化技术的领先者。是可以一部分一部分的分出来,然后在上面各个系统运行不同的东西,变成多台虚拟的服务器。
另外,现在业界关注的还有被思杰(Citrix)并购的Xen。Xen虚拟化管理程序非常小,代码量不超过5万,把大批量以前专业系统做的那些虚拟化需要做的东西上移到操作系统。这样充分利用操作系统的功能,比如说设备驱动程序,像VMware它是通常运行Windows,那么下面所有的设备驱动程序都要完全模拟出来。如果另外一个系统是运行Linux的,要全部的Linux设备驱动程序模拟出来。这样导致下面的虚拟程序非常庞大,Xen是所有的驱动设备只有一个,全部用Linux的方式。比如说全部用RedHat的管理程序,驱动程序。
新品面世,自卖自夸:
看完基础架构,再一起来看看Hyper-V的体系结构:
Hyper-V 体系结构
运行Hyper-V的服务器可以利用Windows对硬件设备的支持,是因为管理程序可将系统分成多个VM,并将Windows Server 2008的引导实例当作主分区,以使其可直接访问各种硬件设备如网络适配器等等。Hyper-V管理程序要求主分区执行电源管理并响应硬件即插即用事件。这种架构将业界标准服务器、与它们连接的网络和存储器聚合到统一的资源池中。
要知道,虚拟栈可以实现模拟的I/O设备,然而模拟这些设备的代价很高,发送单个I/O请求,就有可能导致虚拟栈和子分区之间的多次切换,那么Hyper-V如何解决的呢?看看下图:
Hyper-V和多处理器虚机
Hyper-V支持4 CPU的WinServer08虚机,和2 CPU的WinServer03虚机。只有当工作负载确实需要的时候,才应该使用多处理器虚机,因为拥有更多的处理器会带来一些额外的开销。
不过不用着急,Hyper-V提供了专门为虚机环境所设计的虚拟I/O设备。这些虚拟设备连接到VMBus,使用共享内存,可以有效地进行分区间通信。
Hyper-V中的虚拟I/O采用客户端/服务器架构,在根分区中包含VSP虚拟服务提供程序,在子分区中包含VSC虚拟服务客户端。如图所示:
Hyper-V中的I/O架构
该架构极大地减少发送I/O请求所需的开销。如果Virtual Server用户把虚机迁移到Hyper-V中,能体会到高I/O的工作负载的CPU开销大大降低。
在虚拟化领域,微软是继VMware后最大的竞争者,它的出场引发了一个讨论:Hyper-V是否会超越VMware ESX Server成为主导的hypervisor。VMware与微软及其余竞争者之间的争论是一场热烈的战争,让想人起了Windows与Mac OS之间的战争。
虚拟化技术优劣引发的口水仗:
对于微软这样庞大的但在虚拟化领域的后来者,VMware方面认为,VMware是最有经验的公司。VMware有10年的虚拟化经验和一个庞大的用户基础,包括100%的财富500强公司和92%的财富1000强公司,全球总共有超过10万的用户。VMware还拥有11个虚拟化专利权,在2007年,VMware的收入达到了13.3亿美元。
拥有新虚拟化产品的微软几乎没有企业虚拟化经验,到目前为止,还没有财富500强的用户在生产环境里采用微软的企业虚拟化产品。哪个公司听起来更能胜任提供你企业的虚拟化解决方案?
据称ESX已经有过运行1000多天而没有一次重启的记录;而由于Windows更新,Windows Server 2008 Hyper-V需要,每三十天重启一次。总而言之,如果你仅仅看到一个单独的VMware Infrastructure企业套件许可证要花费6950美元,相比一个单独的Windows Server 2008企业或标准的套件许可证来说,毫无疑问,VMware解决方案花费更多。然而,就性能而言,VMware仍然比微软的Hyper-V胜出一筹。
对此以上的言论,微软是毫不示弱给予回击:
Microsoft Hyper-V 和VMware ESX Server都是基于硬件支持的Bare-Metal虚拟化产品,他们最大的区别在于,Microsoft Hyper-V采用了微内核的结构,而ESX Server是一个单内核的产品。
单内核的主要特点是硬件的驱动程序集中在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),能够做到在后台将虚拟化产品和其他服务器产品的联动支持和无缝连接,所以微软能够为用户提供一套完整的虚拟化解决方案。
随着Windows Server 2008的发布及其全新的Hyper-V虚拟化支持,微软终于能够向VMware――这个企业虚拟化市场所制造的成熟又健壮的ESX Server发出正式的挑战了。
VMware的ESX Server 3.5和微软的Hyper-V采用的都是基于管理程序的(hypervisor-based)服务器虚拟化技术。这就使这两个软件都可以直接安装到裸机上,因此它们有着比诸如Microsoft VirtuaI Server 2005和VMware VirtuaI Server 2.0等旧式虚拟产品优秀得多的表现。以前那些虚拟产品都是在主操作系统上运行虚拟软件,这会给在虚拟环境中运行的虚拟机带来额外的开销,更长的代码执行路径。相反,像ESX Server和Hyper-V这样的基于管理程序的虚拟化产品则是直接在系统硬件上运行管理程序的。尽管ESX Server和Hyper-V有着相似的基于管理程序的架构,它们的设计却迥然不同。
这两个产品的管理程序都是直接在系统硬件上运行的。然而,对于ESX Server来说,所有的硬件驱动程序都只是管理程序的一部分,这一点大大增加了管理程序的大小。除此之外,它的设备驱动程序是由硬件供应商制造的,于是第三方代码就被引入管理程序,这限制了它所支持的硬件类型。即便如此,几乎所有的一级供应商,例如HP、DelI和IBM等,他们所制造的服务器系统都能够正常运行ESX Server。另外,许多一级供应商也出售预装了ESX Server的系统配置。
相反,Hyper-V使用的是微核管理程序,该管理程序包含最少量的代码,用于不同虚拟机之间调度和共享硬件资源。Hyper-V的管理程序既没有设备驱动程序,也没有第三方代码,这就保证了它的最佳性能, 同时也减少了安全隐患。Hyper-V利用本机Windows设备驱动程序模型,以及子虚拟机中的设备驱动程序。
总结:
看完他们的口水仗之后,其实我们也很难给出一个结论。同样基于裸金属硬件虚拟化架构下的微软Hyper-V和VMware的ESX,也许这两种技术并不存在谁优谁劣,区别只在于什么类型的用户更适合什么样的具体解决方案。
(本文不涉密)
责任编辑:
上一篇:服务器虚拟化技术遭可靠性挑战