锦上添花——不断完善的硬件辅助虚拟化
特别策划
所谓硬件辅助虚拟化,简而言之,就是从硬件层面增加纯软件虚拟化解决方案的可靠性、安全性和灵活性的一种方式,它比纯软件虚拟化方式更高效、更可靠。通过在硅芯片层面采用硬件辅助虚拟化技术,可大大降低纯软件虚拟化方式在系统方面的开销,增强兼容性,有助于提高企业用户的虚拟化方案的性能。
软硬件虚拟化相得益彰
近年来,服务器虚拟化的主攻方向集中在减少物理服务器的配置数量,并将实体计算机上的操作系统及应用程序无缝地转移到虚拟机上,以便集中管理这些不同系统平台的虚拟环境。服务器虚拟化就是一种调配计算机资源的方法,它可将不同层面的部件如硬件、软件、数据、网络、存储等隔离开来,这样可以节省数据中心的占地面积,降低数据中心的能耗。
与其说虚拟化是软件技术上的创新,不如说是新的信息化革命,因为它所涉及的不仅仅是存储领域,而且覆盖了内存、CPU、服务器直到网络等非常广泛的领域。也就是说,虚拟化技术已经从软件领域延伸到硬件领域,而且硬件辅助虚拟化在虚拟化领域中发挥着相当重要的作用。
服务器虚拟化技术起源于软件,但更需要底层硬件的强力支持,硬件辅助虚拟化的主要目的是提高系统性能。在支持虚拟化技术的CPU平台上,操作系统可以直接运行,无需额外的二进制转换,大大简化了虚拟软件的设计。与纯软件的虚拟化相比,有硬件辅助的虚拟化的性能更强大。目前,在纯软件虚拟化技术中,还缺少对64位操作系统的支持,因而在64位处理器日益普及的今天,软件虚拟化的缺陷得到了硬件辅助虚拟化的弥补,CPU的虚拟化技术不仅支持传统32位操作系统,还支持64位操作系统。
对于引领计算机浪潮的虚拟化技术,英特尔和AMD两大CPU巨头都不敢怠慢。Intel为此推出了涉及处理器(VT-x或VT-i)、芯片组(VT-d)、网络设备(VT-c)的三套相辅相成的硬件辅助虚拟化技术,而AMD-V硬件辅助虚拟化技术也成为AMD提升服务器性能、降低系统购置成本、降低能源消耗、增加虚拟机数量的有效方法。从硬件辅助虚拟化技术的应用来看,硬件级的虚拟化技术能够起到有效减轻系统软件的虚拟化工作量、简化运行过程,从而提高系统性能、降低计算机能耗的作用。而为了让这种应用物尽其用,Intel和AMD都通过在处理器中加入功耗管理技术来达到这种目的,如AMD采用了一种被称为分离供电模式、Smart Fetch智能预取节电的技术,而Intel Nehalem-EP的内部则采用了电源控制单元(PCU,Power Control Unit)及Turbo Boost运行模式来精确调整每个处理核心的耗电与频率状态,让每一分钱的电源能耗成本都花在刀刃上,让服务器虚拟化应用如虎添翼。
传统的X86服务器应用的特点是“一个应用,一个服务器”,既造成了资源利用率低下,又增加了使用成本,即使是刀片服务器,也不支持资源的动态共享和部署。相对于软件虚拟化技术而言,硬件辅助虚拟化技术是一个巨大进步,其主要优势体现在三个方面:一是简化软件虚拟化的设计,二是减少了软件虚拟机相关的性能开销,三是支持更广泛的操作系统。
Intel VT:全方位的虚拟化
Intel一直非常看好硬件辅助虚拟化的前景,并率先在处理器芯片中采用了Intel VT虚拟化技术。面对全球市场上越来越多的虚拟化部署和用户对虚拟化应用的需求,英特尔在2005年底就已推出Intel VT虚拟化技术,它可通过硬件底层指令集来支持虚拟机监视器(VMM)与已安装Guest OS之间的切换,效率和可靠性明显提高,从硬件层面对虚拟化解决方案提供了良好的支持。Intel VT虚拟化技术已成为服务器虚拟化领域不可缺少的一种技术,这对企业用户更好地部署虚拟化解决方案起到了重要作用,Intel VT已成为Intel在X86服务器市场上所向披靡的重要武器之一。
目前困扰服务器系统的最大问题不是服务器性能不够,而是服务器的利用率太低,很多服务器的性能利用率甚至低于5%。这不仅提高了企业的采购成本,更是对资源的浪费。为此,软件厂商推出了纯软件的虚拟化应用方案,它可以让企业用户在同一台服务器中的多个操作系统平台上运行多个应用软件,可以通过内置管理程序来控制各个应用软件使用计算机资源的优先权,从而使服务器硬件性能的利用率提高到50%以上。
而Intel硬件辅助虚拟化技术的出现及应用,可进一步让这种应用效率提高。通过Intel VT技术,X86服务器上的每个虚拟机都具有和在物理服务器安装的单操作系统一样的权限,管理软件不必再用软件模拟的方式来进行最高特权指令的模拟,从而可提高虚拟化的效率、灵活性和虚拟机的安全性、稳定性。
随着万兆级交换机在高端应用领域的普及,如何更好地满足需要高带宽应用程序的吞吐量和延迟要求,同时以提高能效,已成为部署服务器及需要高性能计算、数据库集群和按需视频点播等苛刻应用的用户的必然需求。为此,英特尔率先提出了VT-d、VT-c的硬件辅助虚拟化策略和技术。VT-d是一种基于北桥芯片的硬件辅助虚拟化技术,它能够在虚拟环境中大大提升I/O的可靠性、灵活性与性能。VT-c虚拟化技术则主要针对服务器网卡的网络连接及各种接口连接,有助于提升虚拟系统的性能与网络处理能力,减少处理器负载,提高网络的可靠性,显著降低网络应用成本,从而让服务器系统中至关重要的网络模块能有更佳的应用性能、更低的CPU占用率、更好的稳定性及安全性。

AMD-V:直连架构虚拟化
面对Intel在X86服务器相关的硬件辅助虚拟化领域的强势地位,AMD并没有放弃对这方面技术的研发,它推出了AMD Virtualization(AMD-V)硬件辅助虚拟化技术,这是AMD抗衡Intel硬件辅助虚拟化技术的绝招,它通过直接互连架构(Direct Connect Architecture)和在处理器与内存控制器中引入一个新模型来提高CPU的虚拟应用性能。在实际的服务器应用中,AMD的虚拟化技术能提供直接的CPU到内存、CPU到I/O和CPU到CPU的连接,可通过对I/O内存单元灵活管理,防止虚拟机使用DMA来终止与真实硬件的隔离。这样能够减少程序的复杂性,提高虚拟系统的安全性,并通过兼容现有的虚拟系统管理软件来减少费用,并可减轻VMware等虚拟软件的工作负担,大大提高X86处理器的运行能力。
而为了应对在处理器虚拟化后,Intel将技术推广的触角扩展到芯片组(VT-d)和网络(VT-c)等领域的攻势,AMD也计划推广类似的IOMMU(I/O MMU,input/output memory management unit,输入输出内存管理单元)技术。IOMMU是一种支持映射内存地址的技术,由于IOMMU能够为服务器应用程序带来诸多益处,它已成为专业服务器硬件中的“常客”。
在实际应用中,X86服务器平台上的IOMMU可将一个支持DMA的I/O总线连接到电脑的主存储内存,将虚拟内存地址映射为物理内存地址,类似于CPU内存管理所执行的操作。而AMD的IOMMU技术可以提供额外的指令来支持硬件虚拟化,通过相应的新特性来改进DMA映射和硬件设备的访问,取代当前的图形寻址机制,支持VM对设备的直接控制,同时在VM中可以直接访问相应用户的I/O。
虽然目前还较少有桌面程序能够从IOMMU中获益,但随着这项技术的进一步普及应用与不断改进,它一定能够为虚拟化应用程序带来极大的帮助。AMD也可能在2009年推出的新一代芯片组RD890、RD880中正式支持IOMMU虚拟化应用技术。
虽然在硬件辅助虚拟化应用领域AMD落后于英特尔,但AMD在硬件辅助虚拟化领域不断努力的意义很重要。无论是从技术发展的需要来看,还是从市场和用户的角度来看,只有Intel的产品可选肯定不利于市场竞争和技术进步,这显然也不是所有有远见的业内人士愿意看到的。
