觊觎“虚拟世界”的王座——微软Hyper-V深度解析

特别策划

近日微软宣布已经完成了Windows Server 2008 R2(服务器操作系统Windows Server 2008的新版本)的开发工作,Windows Server 2008 R2将为各种规模的企业带来虚拟化、网络以及管理上的巨大改善。WindowsServer 2008 R2对Hyper-V进行了升级,体现了微软对服务器虚拟化的重视,那么什么是Hyper-V呢?它能为企业带来什么价值呢?

Hyper-V,微软进军服务器虚拟化市场的利器

微软的Virtual Server 2005采用了与VMware ESX Server同样的设计思路,不过需要Windows Server 2003作为主机操作系统,无法在裸机环境下运行,与X86虚拟化市场的其他产品相比,微软的虚拟机服务器缺少管理工具。因此,微软很快推出了Hyper-V,它不但可用于管理虚拟机,还可为内置在Windows Server 2008 里的Windows服务器虚拟化服务提供管理框架。简单来说,Hyper-V会取代Virtual Server 2005扮演的角色,但在架构及表现上,Hyper-V显然更能实现单台服务器“承载”多个虚拟机的理想。与其他虚拟化平台相比,Hyper-V突出的特点就是精简了结构,提高了性能。

Hyper-V和Virtual Server 2005虽然同为微软的服务器虚拟化产品,在架构上却有显著的区别。Virtual Server 2005的基本架构是:层次一:服务器硬件(X86或X64架构);层次二:服务器操作系统(Windows Server 2003);层次三:虚拟化软件;层次四:虚拟机(应用软件及操作系统)。应用软件是基于虚拟机操作系统上的,虚拟机到服务器硬件之间的数据要经过3次转换,每一层的协议、通讯标准、接口等均不相同,经过3次转换会造成性能的大量消耗,从而导致虚拟机运行速度和真实系统相差甚远。而Hyper-V从架构上来看只有“硬件→Hyper-V→虚拟机”3层,这种构架使得虚拟机和硬件之间只通过很“薄”的一层进行连接,不像Virtual Server 2005那样,虚拟机和硬件之间需要经过多次转换。这样,在Hyper-V的架构下虚拟机执行效率非常高,可以更加充分地利用硬件资源,使虚拟机系统性能非常接近真实的操作系统性能(图1)。

相对Virtual Server 2005的28MB“身形”,Hyper-V是一个只有300多KB的小程序,这也大大减少了代码执行时发生错误的几率,并且Hyper-V中不包含任何第三方驱动,虚拟机(VM)的执行效率大大提升。Hyper-V的架构与VMware ESX Server比较类似,都是祼机类型,但是两者的内核架构仍有着明显的不同——Hyper-V是微内核架构的,而VMware ESX Server是单内核架构的。单内核和微内核实际上是操作系统内核术语,操作系统的内核——实现核心功能的那部分可能是微内核,也可能是单内核。不过,无论采用什么内核,驱动程序和文件系统总是必要的,虚拟机要使用服务器的硬件就需要驱动程序,虚拟机的文档需要保存在适当的文件系统上。在单内核的VMware ESX Server上,驱动程序包含在单内核内部,虚拟机映像文件则保存在VMFS上。而对微内核架构的Hyper-V来说,通过加入VSP和VSC(VSP即虚拟化服务提供者,VSC即虚拟化服务消费者)以及它们互相沟通的VMBus总线,即可解决驱动程序和文件系统的问题。

这种方式最明显的优势是让Hyper-V可以兼容大量的驱动程序,而不必像VMware ESX Server那样需要为虚拟机开发专用的驱动程序,因此在硬件支持上Hyper-V具有无可比拟的优势。VMware ESX Server甚至不能直接应用Linux驱动程序,需要进行另外的操作才能使用,因此VMware ESX Server更容易遇到兼容性方面的问题,当然用户使用具备VMware认证的全套硬件可以避免这个问题。从安全方面考虑,在Hyper-V中只做内存管理和CPU调度,其他的设备则通过关键的VMbus管理。在Hyper-V的管理程序中,你看不到设备驱动程序(驱动程序是运行在每一个独立的分区中,而虚拟机虽然在相互独立的单独分区内,却能够很好地通过Hypervisor直接访问硬件),从而将Hyper-V的安全隐患降到最低。

除了以上改进外,Hyper-V相对于Virtual Server 2005还有许多改进,比如支持4个虚拟处理器,支持64GB内存,支持64位操作系统,支持VLAN功能。而且Hyper-V 可以在受支持的用户操作系统运行时向它动态添加逻辑处理器、内存、网络适配器和存储器,更具灵活性。不过相对VMware ESX Server而言,Hyper-V对硬件有一个很特别的要求:处理器必须支持AMD-V或Intel VT技术。

Hyper-V在宕机预防方面仍需改进

有人比喻服务器虚拟化是“把所有鸡蛋放在同一个篮子里”,存在一定的风险。因此在规划Hyper-V项目时,微软就将系统可用性及服务连续性纳入首要考虑因素。不过,由于在处理文件系统时遇到的困难太大,Hyper-V没有类似VMware VMotion的特性,即在零宕机的前提下实现虚拟机在服务器之间无缝迁移,微软采用快速迁移(Quick Migration)作为替代解决方案。快速迁移在存储文件从一台物理服务器移动到另一台物理服务器之前,需要将正在运行的虚拟机状态保存到磁盘,并且将保存的状态从存储恢复到内存中。从原理上讲,Hyper-V采用的是比较简单的内存状态保存技术,以避免在内存映像传输时,后续的内存写入出现同步问题,不过这要以增加停机时间作为代价。

在这里,宕机时间直接与分配给虚拟机的内存数量相关,还与虚拟主机和共享存储的连接速度有关。拥有较高级别虚拟内存分配和较慢网络的虚拟机从一台主机迁移到另一台主机花费时间较长,而拥有较少虚拟内存和更快网络的虚拟机迁移时间较短。例如,有2GB内存的虚拟机运行在1000Mbps以太网iSCSI连接上,花32秒即可完成主机到主机的虚拟机迁移。尽管从技术上来看,在迁移过程中的虚拟机不用重新启动或关闭,但在此期间虚拟机不响应客户端或在网络上不可用,这在需要高可用性的环境中是不太适合的。毕竟对于多数高要求应用环境来说,32秒的宕机时间太长了,是不可取的。不过这种情况将在Windows Server 2008 R2的Hyper-V2.0中得到改进——Hyper-V2.0正式整合了Live Migration(动态迁移)功能。

除快速迁移功能之外, Hyper-V还引入了故障转移群集功能来提高可用性功能(图2)。在服务器发生故障时,故障转移群集功能可以将服务迅速切换至另一台正常运行的服务器,将意外导致的非计划停机时间降到最低。比如,如果运行 Hyper-V 和虚拟机的物理机器发生故障(比如主板故障)或性能严重下降,则 Windows 故障转移群集中的其他成员将接收该虚拟机的所有权,并自动将它恢复到在线状态。如果虚拟机出现故障,可以在同一台Hyper-V 服务器重新启动,或者移动到另一台 Hyper-V 服务器上。由于 Windows Server 故障转移群集可以检测到这些故障,所以它将根据虚拟机资源属性中的设置自动采取恢复措施,凭借检测和恢复自动化,让停机时间降至最低。

32-行业1-1-1.jpg
图1
32-行业1-1-2.jpg
图2

Windows 故障转移群集中的其他成员位于不同的 Hyper-V 主机之上,则该虚拟机中的工作负载将移动到群集中的另一个节点,这样就可以关闭该虚拟机,以适应物理服务器的更改或重新启动。

MSCVMM 2008,Hyper-V的管家婆

在管理方面,微软也为Hyper-V准备了Microsoft System Center Virtual Machine Manager 2008(简称:MSCVMM 2008)来管理Hyper-V的配置和虚拟机设置(图3)。

MSCVMM 2008集成了一个新的性能规划引擎——Performance and Resource Optimization (PRO,性能和资源优化) ,可连续监测虚拟化基础设施,并建议虚拟机如何改进(升级虚拟硬件)或移到其他的虚拟主机以实现最佳的性能。该PRO引擎是受一些预先指定的策略和MSCVMM管理员管理,他们通过PRO引擎来决定是否批准每一个建议或自动化过程,也可以被配置成实时响应预警提示或自动执行解决方案。同时用户还可以通过 SCOM (System Center Operations Manager)和 MSCVMM 的管理功能,来有效地管理 Hyper-V 的数据中心,例如,可以使用 Hyper-V 中 WMI程序的脚本来维护多个 Hyper-V 主机服务器上的窗口:关闭来宾虚拟机并在备用服务器上启用它们、执行主机服务器维护,然后在原始主机上恢复这些虚拟机。

值得注意的是,微软虚拟化中心控制台MSCVMM具有一个显著的功能,那就是可以通过MSCVMM管理混合Hyper-V和VMware的虚拟机。MSCVMM2008管理VMwareVI3.0上的虚拟服务器,主要还是串接VMware的管理工具Virtual Center来达成。也就是说,如果有一台SAN存储设备,里面有Virtual Server、Hyper-V与VMwareVI3.0平台的虚拟机,微软的虚拟化平台可以直接通过管理接口将信息传送到MSCVMM,而VMwareVI3.0则是利用Virtual Center来搜集信息传到管理平台,最后由MSCVMM的单一接口统一管理所有的虚拟服务器,包括复杂的任务如VMotion,而且从创建虚拟机到执行P2V或者V2V(VMware VM to Hyper-V VM)转换等一切操作,都能使用图形用户界面完成。

当然,MSCVMM2008目前还不是很完善,比如不能实现Live Migration(动态迁移)功能,但MSCVMM2008完全能应对复杂的虚拟主机集群管理。相信随着Hyper-V 2.0的发布,一切会更加完美。

32-行业1-1-3.jpg
MSCVMM 2008的拓扑图

结语:Hyper-V是微软首度跨入原生架构领域推出的服务器虚拟化产品,作为一个Windows Server平台可行的数据中心虚拟化方案,Hyper-V和MSCVMM的结合让微软服务器虚拟化架构实现了飞跃。虽然还不如VMwareVI3.0成熟, 但微软拥有操作系统捆绑优势,使得Hyper-V成为VMware的有力竞争者。