从体系结构上来说,该平台本身并不是为支持多操作系统同时运行而设计的,这也就意味着虚拟化厂商被迫去克服硬件和软件两方面的限制,来分配和管理处理器、内存以及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等高端管理系统的数据中心中。
![]() |
| VMware和Xen的比较 |
![]() |
| Microsoft Virtual Server 2005 R2的性能 |
(责任编辑:城尘 68476636-8003)
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |