WEB开发网
开发学院服务器虚拟化 VMware、Xen和Microsoft虚拟化技术解析 阅读

VMware、Xen和Microsoft虚拟化技术解析

 2007-11-09 23:55:34 来源:WEB开发网   
核心提示:从体系结构上来说,该平台本身并不是为支持多操作系统同时运行而设计的,VMware、Xen和Microsoft虚拟化技术解析,这也就意味着虚拟化厂商被迫去克服硬件和软件两方面的限制,来分配和管理处理器、内存以及I/O资源,在员工人数超过20000的全球2000家企业中,有三分之一已经使用了虚拟化,VMware已经在这个领
从体系结构上来说,该平台本身并不是为支持多操作系统同时运行而设计的,这也就意味着虚拟化厂商被迫去克服硬件和软件两方面的限制,来分配和管理处理器、内存以及I/O资源。VMware已经在这个领域占据了优势,并不仅仅因为它是第一个在此领域提供虚拟化的厂商,而且因为它能够克服这些硬件问题,提供了一个可以使用的管理环境来处理大型虚拟化所固有的一些问题。

目前,新一代AMD和Intel处理器中的虚拟化功能正在为有效的、基于hypervisor管理程序的x86系统虚拟化铺平道路,随之重点也转向了如何使得处理器更加可靠。尽管我们看到VMware、Microsoft以及开源Xen是基于不同的hypervisor方法,但在这些hypervisor 技术之间选择的重要性,远远不如应对大型虚拟化所提出的管理挑战更为关键。最终,真正的市场赢家必然是那些可以为把我们的物理环境转变为更多产的虚拟环境而提供很好功能的厂商。但是,为实现这个目标,首先代价都需要来自处理器厂商的帮助。

老问题,新解决

在目前我们所看到的两种主要服务器虚拟化选择中,基于hypervisor的服务器虚拟化比操作系统分区的方法提出了更多的问题。使用操作系统分区的方法,主机操作系统提供了对所有资源的访问,消除了hypervisor中固有的很多问题,但用户只限于主机操作系统;基于Hypervisor的虚拟化提供了裸机支持多操作系统的灵活性,但引出了很多的技术挑战,需要大量的软件来处理与分配CPU、内存以及I/O资源有关的工作。

幸运的是,AMD和Intel已经针对这些棘手的问题拿出了新的硬件应对解决方案。

在保护模式下,x86处理器一共有4个不同优先级,术语称为Ring,从Ring 0~Ring3。Ring 0的优先级最高,Ring 3最低。一般情况下,Ring 0是被用于运行操作系统内核,Ring 1和Ring 2是用于操作系统服务,Ring 3则是用于应用程序。

也就是说,在一个常规的x86操作环境中,操作系统是运行在受保护的ring 0。在没有处理器辅助的虚拟化情况下,取而代之的是必须要ring 0来运行VMM (Virtual Machine Monitor,虚拟机监视器)或hypervisor,来为VM以及它们的VOS(Virtual OS,虚拟操作系统)管理硬件资源。那么,CPU虚拟化的挑战就是要寻找一种方法使得操作系统正常运行在ring 0之外的一个地方。

为了解决这个问题,芯片辅助(chip-assisted)的虚拟化能够让一个新的、有超级特权的和受保护的ring 1来运行VMM。这个新的位置使得VOS能够平静地共存于ring 0,通信自动改变到ring 1,而这些VOS并不知道它们与同一系统中的其他操作系统共享物理资源。

这项主要的进步消除了操作系统的ring转换问题,也减少了虚拟化的费用,它可以为各种操作系统的虚拟化提供支持,而且并不需要对内核或运行时间做任何改变。尽管AMD和Intel选择了略微不同的方法来达到这个目标,不过令我们高兴的是,即使两公司的技术不能完全互换,我们也不担心,因为很多虚拟化提供商已经致力于这两种技术积极展开工作。

Intel公司首先出手的是其VT-x,它创建了ring 1并提供了一套新指令来建立、管理和退出VM,就如同操作内存管理一样。VT-x与AMD-V(以前被称为Pacifica)芯片辅助技术有很多相似之处。在具有芯片辅助的处理器中,hypervisor驻留在 ring 1,并创建一个VM控制结构来支持新的VM。这提供了一种机制,可以根据需要来创建、重新分配以及撤销VM,其作用就如同是在VMM和大量VM之间场景转换的控制架构。

很多虚拟机和它们的操作系统堆栈可以和平共处在ring 0中;而每一个芯片上都类似地会有这些虚拟机VM的控制器——Intel称之为VMX,而AMD则称之为SVM(secure VM)。更重要的是,允许虚拟的操作系统驻留在ring 0还消除了ring转换的挑战。因为大量的指令是对位置敏感的,只被设计为在rings 0和3之间转换,如果VOS位于ring 0以外的其他地方,关键程序就可能出现不可预知的错误。

现在,VM安全地位于ring 0,为截取和校正VOS所引发的问题而必需的软件机制运行在错误的ring也无所谓了。当在虚拟的VM上出现问题的时候,处理器有能力转换控制器到受保护的VMM,它可以解决问题并把控制器返回给VM或者在不中断系统中其他VM的情况下终止该问题。

不过在这里也看到了AMD和Intel的技术分叉点,因为Intel处理器使用外部内存控制器,新的VT-x处理器修改并不只提供虚拟内存管理功能,这也就意味着仍然需要软件来处理物理和虚拟内存资源之间的地址转化。这并不是最理想的解决方案,但是确实是有效的方案。

与之形成对照的是,AMD的处理器片上集成了内存控制器,因此AMD-V虚拟化技术引入了独特的新指令,使得内存的模式和特性与其设计无关。这些指令中的大多数用于MMU (memory management unit)的操作,MMU提供内存分配。

在虚拟化情况下,MMU需要跟踪了解什么时候分配任务来映射多操作系统、运行多种连接到物理内存地址的应用程序。另外,AMD-V还提供了先进的内存特性,包括Tagged Translation Look-Aside Buffers。

也许最有趣的特性是AMD对NPTs (nested page tables)的支持。与Intel的软件方法相对立,NPT支持通过为每一个VM提供不受硬件约束的、虚拟CR3内存寄存器,允许每一个VM更有力地控制其内部内存管理。

尽管使用NPTs增加了内存查找的数量,但NPTs消除了VT-x所需要的软件层。这就使得内存管理保留在其本应该在的硬件区域,从而充分保证了更高的VM内存性能。这种速度的提升在一些对内存要求较高的应用中表现最为明显,尤其是在有很多VM存在的环境中。

AMD的虚拟化策略比Intel的看似更具有性能潜力,但是AMD-V要在即将发布的第一代Rev.F Opteron中才会出现,而Intel的VT-x 已经出现在其目前最新的Xeon处理器中,不过服务器厂商才刚刚开始发布BIOS修订来支持这些新的特性。

来自Microsoft和使用Xen的厂商的所有未来基于hypervisor的虚拟化将依赖于这种芯片辅助技术,但是VMware的完全硬件虚拟化方法将持续支持没有芯片辅助的传统系统。

打破I/O瓶颈

CPU和VMM内存管理问题只是虚拟化难题中的一部分;对于硬件制造商来说,接下来的巨大挑战将是改善具有共享I/O设备的内存的交感和安全性。

这本身有两方面的问题,也许更艰巨的任务会落到I/O硬件开发者肩上,他们需要创建能够跨越多个VM共享访问设备——今天的存储、网络和图形设备只能够对操作系统提供单一接口界面,这就意味着对于具有多个VM的系统必须使用软件来处理IRQ、内存和计时器函数,直到I/O硬件能够支持多个功能性接口。

从处理器的立场,挑战在于为共享设备提供处理器级的架构。现在以及未来,AMD和Intel已经创建了非常类似的规格来达到这个目标,二者的规范都已经在春季发布,一些虚拟化的厂商也已经对二者做了签约支持。

据预测,AMD将首先在这块市场出击,推出其IOMMU(I/O memory mapping unit)技术,该技术提供了附加的指令来支持硬件虚拟化。这些新的特性被设计用于改进DMA(direct memory access)映射以及对硬件设备的访问,取代目前的图形化的寻址机制,并支持通过一个VM对设备的直接控制,同时能够在一个VM中直接访问用户空间 I/O。

Intel的VT-d(Virtualization Technology for Directed I/O)标准也是锁定直接设备访问和内存保护的问题。与IOMMU一样,VT-d提供了在VM和I/O设备之间直接通信的架构。

不过,最初这些功能对于虚拟化来说还只是有名无实,因为I/O虚拟化解决方案的另外一半目前还没有到位——那就是,如今还没有I/O设备能够管理共享VM对硬件资源的访问。

事实上,甚至还没有一个适当的标准支持设备跨越PCI共享,也许要看到普遍的、基于设备的硬件I/O虚拟化解决方案还需要等两年到四年的时间。到那个时候,虚拟化厂商将需要提供一个提取层,来支持对存储、网络以及其他中断驱动的设备的共享访问。

在三种主要的hypervisor技术中,来自Xen和Microsoft的最新成果都将从芯片辅助的虚拟化之中获得最大的帮助。这些新的处理器级的功能消除了许多VMware曾花费很多年时间、开发很多睿智软件力求解决的障碍。随着硬件虚拟化技术的改进,采取创新的方法来解决这些问题已经变得很容易,随之关注点也由hypervisor本身转移到性能和管理方面的考虑。

在此,我们将全面分析三种完整的服务器虚拟化最新成果,这些环境能够同时支持Windows Server 2003和Linux,而且我们把关注点放在供应和管理一个跨越多个物理机器的统一的服务器资源池。对于开源的Xen hypervisor,我们选择Virtual Iron为代表来介绍,因为它对Xen虚拟化提供了全面服务方法。

VMware

目前虚拟化领域的市场领导者是VMware的企业级产品ESX Server。该VM model使用装载在每一个物理机器上的“服务控制台”来管理和控制hypervisor的动作,也提供对管理代理的支持。

VMware使用二进制转化方法来提供一个通用的硬件平台,这就意味着软件放置在物理和虚拟设备之间来管理资源,以及“诱捕和转化”可能导致VM损坏的操作系统错误状况。这种方法解决了传统x86硬件管理的ring转换问题,并支持不加任何改变地使用所有x86兼容的操作系统,但也有很高代价:软件模拟硬件服务在换来灵活性的同时也产生性能下降的弊端;而且这个性能影响也不小,一些市场估计数字将近10%~30%,当然这也是取决于不同的应用以及不同的评估者。

幸运的是,VMware已经从芯片辅助的虚拟化技术中获益,ESX Server 3.0已经有了大量的性能提升,并充分利用了新的处理器特性。

目前ESX Server在企业级、多操作系统服务器虚拟化市场上占有绝对优势,并且有大量的企业级管理工具包支持,为高可用性环境提供了集中化的管理、现场虚拟服务器迁移、自动化资源安排scheduling、分布式文件服务、整合的备份以及高级保护。VMware虚拟服务也能很好地集成在已经使用了IBM Tivoli、HP OpenView等高端管理系统的数据中心中。


0) this.style.zoom=zoom+'%';return false;" title="按此在新窗口浏览图片" src=/tech/UploadPic/2010108/201010815646703.jpg>


Virtual Iron的Xen

开放源代码的Xen hypervisor 开始的时候只是剑桥大学计算机实验室的一个有趣的项目。Xen的第一版本是以Linux社区为目标,基于para-virtualization技术,需要Linux内核作特殊修改才能够在Xen hypervisor 上运行。

需要指出的是,这是一个单向的改变,也就是说,修改后的内核就不能再在传统的没有Xen hypervisor的硬件之上运行了。同样也是因为Para-virtualization,在早期的Xen版本上运行Windows也是不太可能的, 因为不允许Windows被修改。

在2005年12月,Xen开发团队发布了Xen 3.0,这是其免费软件hypervisor的第一个版本,支持芯片辅助技术,借助于Intel VT-x或AMD-V的帮助,可以运载各种操作系统不需要做任何改变既可运行在其上。

Xen 3.0产生的影响也是巨大的:消除了对para-virtualization的需求,允许Windows在Xen环境中与Linux和Solaris等肩并肩运行。不过Xen中并没有像VMware提供的大量企业级支持工具。

因为Xen只是一个hypervisor,为了方便深入研究,我们选择一家富有经验的基于Xen技术开展虚拟化的厂商来做介绍。Virtual Iron软件公司从2003年出现,刚开始提供使用其自有VFe hypervisor技术的Linux虚拟化。随着Xen 3.0的发布,Virtual Iron最终放弃了其VFe,完全拥抱开源,将产品开发重点锁定在自认为最重要的方面——虚拟环境的管理。

这里需要指出的是,与VMware在每一台物理服务器上安装管理系统软件的做法不同,Virtual Iron在每一台系统上放置一个Xen hypervisor的小型、bare-metal version版本, 并装配一***立的专用服务器来为硬件资源池中的所有系统提供资源管理服务。

所谓的Virtual Iron管理服务器能够自动在所连接的服务器中创建一个所有物理设备的详细目录,使得能够在虚拟架构内的任意地方进行虚拟服务器的创建、资源分配以及部署。

另外,从诸如政策驱动的工作负载管理、动态容量供应、快速VM迁移、报表和分析的先进工具等特性,我们也看出Virtual Iron正在提供企业级管理工具,而这在以前的基于Xen的系统上是没有的。

Microsoft

2004年Virtual Server 2005的发布标志着Microsoft进入服务器虚拟化领域,不过这个产品获得的反响不一,部分原因是由于它缺乏很好的管理工具和服务。

如今,随着Virtual Server 2005 R2 beta版本的公开,该产品确实已经做了改进;从长长的改进列表上,显然Microsoft是注意到了IT专业人士的呼声。VSR2需要安装一套精简的、核心版本的Microsoft Server 来管理一个虚拟化堆栈,为客操作系统guest OS提供设备支持device support。

核心版的操作系统能够使VSR2使用所有被Windows Server正常支持的硬件设备,为大量的VM创建了一个统一的硬件平台。

这个最新版本的VSR2可以充分利用VT-x和AMD-V指令的优势。该版本中的另外一个新功能是System Center Virtual Machine Manager,这是一个独立应用软件包,包含了大量的集中管理工具,提供简化的系统迁移、智能的供应、可编程自动化以及快速系统恢复功能。

0) this.style.zoom=zoom+'%';return false;" title="按此在新窗口浏览图片" src=/tech/UploadPic/2010108/201010815646127.jpg>

Microsoft Virtual Server 2005 R2的性能
VSR2强调的重点是Windows-specific虚拟化,但好像Microsoft(至少在虚拟化这个领域)已经认识到与其他厂商的良好合作,已经开始提供VM附加项以及对 Linux虚拟操作系统的技术支持。VSR2还支持VM运行老板本的Windows Server平台,如Server 2000和NT 4.0,这对于那些需要运行传统应用软件的人来说是真正的实惠。

挑战传统

从实用性角度看,以上所有这些厂商都在向正确的方向努力,我们看到大家的重点都放在了与转换物理环境、动态资源分配、VM的无缝迁移以及VM相互之间的保护等方面。但是虚拟化也引发了一些在传统服务器环境中不存在的应用级的问题,如:

虚拟SMP:Virtual Iron 基于Xen 3.0的方案能够支持多达32路SMP的VM,其次是Microsoft VSR2能够支持8路,VMware ESX Server能够支持4路虚拟SMP。当然,在实际应用中你会受到主机系统本身所包含物理处理器数量的限制,因此32路SMP似乎有些过度。不过随着在不久的将来四核处理器的出现,满足这种期望或需求应该也不会那么牵强了。

扩展64位支持:尽管能够充分利用x86-64系统的扩展内存寻址技术的应用软件还不多,但虚拟化是很好地利用新一代高性能服务器的一种方法。Virtual Iron和Microsoft都提供了对同时使用32位和64位操作系统及应用软件提供了全面支持,但是VMware仍然在为改善对类似混合环境的支持而努力着。

资源池:同集群类似,虚拟化方案是被设计用来将许多物理系统组合成一个资源池,在需要的时候提供对VM的无缝甚至自动化的迁移。实际上,虚拟化和集群是不同的,在集群情况下,在多个物理系统上的几十个处理器可以被指派为去完成一个单一的任务;而虚拟化所创造的虚拟池,是将几十个处理器呈现为一个可分配的池,但是应用程序不会跨越多个物理机器。

VMware和Virtual Iron为高可用的应用资源池提供了非常成熟的支持,但Microsoft也提供HA功能,外加Microsoft Cluster Services。

值得指出的是,在所有案例中,无缝的HA/VM迁移会取决于在资源和目标系统之间的共享存储环境的可用性,这对于典型虚拟化应用来说并不是必须的。在一个完全虚拟化的世界,处理、内存、存储以及网络就如同一个大型、统一的资源一样存在,你可以按需取用。很不幸,这种公用数据中心的理想天堂还没有出现。

根据Gartner 的市场数字,今天大约有20%~25%的中型商业环境正在使用虚拟化,到2007年,40%的企业将会通过实施虚拟化减少其20%的服务器数量。

最近Forrester的调查显示,大型企业更能意识到服务器虚拟化的好处,从而实现服务器虚拟化,在员工人数超过20000的全球2000家企业中,有三分之一已经使用了虚拟化,13%的企业则表示计划在未来一年内开始虚拟化的试验和部署。

Tags:VMware Xen Microsoft

编辑录入:coldstar [复制链接] [打 印]
赞助商链接