VMware和微软都已经进入服务器虚拟化领域多年 - VMware已有中十余的历史,相较而言微软是一个后来者。然而,微软在其最新的Windows Server 2012中集成的Hyper-V,以其特性的重大演进,和与操作系统相结合的成本优势,已经楔入VMware的腹地,在vSphere 5.1之外,为用户提供了另外一种选择。
如同采用每一种新技术一样,IT工作者或组织在向客户或员工决定提供虚拟化解决方案,或者将虚拟化引入生产环境之前,有必要了解微软Hyper-V和VMware vSphere两种架构优缺点和差异性。
无论是选择 VMware vSphere还是微软Hyper-V,有许多重要的组件需要考虑,但是从架构的角度来看,当谈到选择合适的服务器虚拟化产品时,下列组件发挥了重要作用:
·设备驱动程序在架构中的位置
·控制层组件
·hypervisor(管理程序)层组件
通常情况下,有Type 2 VMM、Type 1 VMM和混合VMM三种类型的虚拟化技术架构供虚拟化厂商参考。解释所有三种类型的虚拟化架构超出了本文的范畴,我们将主要聚焦于Type 1 VMM,这也是微软Hyper-V和VMware都在采用以实现他们的服务器虚拟化技术的类型。
Type 1 VMM可以进一步分为两个小类:单片式管理程序设计(Monolithic Hypervisor Design)和微内核式管理程序设计(Microkernelized Hypervisor Design)。这两种设计中有三个层虚拟化产品的不同组成部分的操作。
最底层被称为“硬件层”,将其虚拟化的hypervisor层直接在“硬件层”上运行。在最上层的被称为“控制层”。“控制层”的总体目标是控制在该层中运行的组件,以及提供必要的组件,支持虚拟机与虚拟机管理程序(hypervisor)层进行通信。
注:“hypervisor层”有时也被称为“VMM层”或“VM内核层”。
微内核式管理程序架构
微内核式管理程序设计被微软Hyper-V所使用。这种设计不需要设备驱动程序成为hypervisor层的一部分——设备驱动程序独立运作,并运行在“控制层”,如下图片所示:
微内核式管理程序架构
微内核式hypervisor架构的优点:
•设备驱动程序不需要纳入“hypervisor层”或者VMM内核
•由于微软不提供应用程序编程接口(API)来访问“hypervisor层”,攻击面被减到最小。没有人可以在 “hypervisor层”注入外部代码。
•设备驱动程序不需要被hypervisor感知,因此这种架构支持的设备范围非常广泛。
•无需关闭“hypervisor层”来加载设备驱动程序。设备驱动程序可以安装在运行于“控制层”的操作系统(Windows Server 2008 R2和Windows Server 2012)中,供虚拟机使用以访问 “硬件层”中的硬件。
•“hypervisor层”维护和管理的设备驱动程序的开销更少。
•微内核式管理程序架构的设计,允许您在“控制层”安装任何其他的服务器角色,除了服务器虚拟化角色(Hyper-V)之外。
•更少的初始化时间。微软hypervisor代码大小大约仅有600 KB。因此,“hypervisor层”并不需要更多的时间来初始化组件。
微内核式管理程序架构的缺点:
•微内核式管理程序架构需要在“控制层”安装一个操作系统,“hypervisor层”才可以操作。这是最大的劣势。
•不论“控制层”运行的操作系统因为何种理由崩溃,所有其他的虚拟机(VM)也都将崩溃。
•在“控制层”运行的操作系统需要更多的开销,以管理虚拟机和“hypervisor层”之间的通信。
•为保证Windows操作系统的安全,在“控制层”运行的操作系统还必须应用由微软发布的最新安全更新。作为安全更新的一部分,操作系统将被重新启动,这需要您所有的虚拟机离线;如果您希望没有任何停机时间,则需要通过Hyper-V实时迁移特性的帮助,将所有虚拟机移动到集群中的另一个节点。
单片式管理程序架构
VMware vSphere使用的是单片Hypervisor的设计,这就需要设备驱动程序能被 hypervisor感知,并被“hypervisor层”管理。下图就是我们看到的“hypervisor层”,设备驱动程序是它的一部分:
单片式管理程序架构
管理程序的设备驱动程序必须开发并包含在 “hypervisor层”,然后才可以开始使用vSphere虚拟化产品。您不能在硬件上运行VMware vSphere,这是不支持的。
如上图中所示,VMware vSphere在“hypervisor层”管理其组件,包括资源调度(Resource Scheduling),分布式文件系统(Distributed File System),等等。用于部署 VMware网络的网络协议栈(Network Stack)组件,同样由“hypervisor层”管理。存储堆栈(Storage Stack)组件允许“控制层”组件访问存储设备。
单片式hypervisor设计的优点:
•控制虚拟化产品的所有组件不需要操作系统支持。这是最大的优势。
•运行在“控制层”的组件不需要安全补丁。
单片式Hypervisor设计的缺点:
•VMware vSphere不支持运行在硬件上。不过,VMware已经提供出了一系列的兼容硬件,VMware vSphere能够在上面成功运行。这份名单可以通过VMware官方网站获得: http://www.vmware.com/resources/compatibility/search.php。
•VMware vSphere是不安全的。由于VMware提供API来访问“hypervisor层”,可以注入恶意代码,这可能使得黑客获得“hypervisor层”的控制权,从而获得vSphere服务器上运行的所有虚拟机的控制权。
•更多的初始化时间是必需的。在该架构中,在VM内核初始化所需的时间,取决于其包含的的设备驱动程序的大小。
•由于设备驱动程序初始化作为“hypervisor层”初始化的一部分,任何损坏的外部代码注入到“hypervisor层”,都可能延迟启动/初始化,或在某些情况下会导致服务器挂起。
结论
在这篇文章中,我们讨论了微软Hyper-V和VMware vSphere彼此不同的操作。我们探讨了虚拟化产品如何使用不同的虚拟化架构,用于微软Hyper-V的微内核式管理程序架构和用于 VMware vSphere的单片式管理程序设计。
我们的讨论同样涵盖到了这两种虚拟化产品的主要优点和缺点,企业组织或IT管理者确定在其生产环境中实施的最佳虚拟化产品,应当发现其价值。