如何享受虚拟化的部署之旅(之一) 探寻虚拟化技术的前世今身

2009-05-29 06:23Twist
微型计算机 2009年21期
关键词:客户机应用程序内存

Twist

随着近年多核系统、集群、网格、甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT运营成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。那什么是虚拟化技术?它能为我们带来了什么?

在iPhone手机上运行Windows、Office,使用iPhone的多点触摸功能放大,缩小Windows桌面,创建和修改Word、Excel和DPowerPoint,甚至连耗费硬件资源极大的AutoCAD也可以在iPhone上修改。这些都不是“神话”,而是利用“桌面虚拟化”和“应用程序虚拟化”技术在手机屏幕上显示出运行在数据中心上的操作系统和应用软件的镜像,是最新虚拟化技术为移动用户带来的全新体验。

在服务器层面,目前利用虚拟化技术已经能做到1:10的整合,就是把一台服务器虚拟成10台虚拟客户机。举例来说,如果一个企业的数据中心过去需要1500台服务器,那现在150台就够了,既符合环保,低碳概念,又能极大地降低企业的运营成本,在经济危机下尤其受到企业的重视和欢迎。虚拟化浪潮契合了IT发展的两大趋势——计算成本的不断下降以及计算能力重新由分散走向集中。那到底什么是虚拟化技术呢?

虚拟化技术的定义

虚拟化简单地讲是一种将系统硬件资源(包括CPU、内存、硬盘等)按照客户的要求分割为不同的虚拟空间,使得其中的每一个都相当于一个完整的系统(对客户机操作系统和用户来说),用户可以在这些不同的独立空间内运行各自的操作系统和应用软件,并且互不影响,而创建这些独立空间的过程就被称为虚拟化,也叫做平台虚拟化。那我们不禁有这样的疑问:如果是为了实现多用户共享,增加更多的机器不是更简单,那为什么还要舍易求难?

虚拟技术发展的漫漫历程

要回答这个问题,就不得不从50年前讲起。1959年,美国学者Christopher Stmchey首次在《大型高速计算机中的时间共享》一书中提出了虚拟化的概念。随后,IBM以及其它公司以此开发出了最初的虚拟化技术。但和Strachey的目的一样,当时他们更多的是关注计算机的性能。当时大型机非常昂贵,为了让更多用户使用它,技术人员使用软件对大型机硬件资源进行分割,虚拟成多台主机,再安装相互隔离的操作系统,让更多用户使用。这就是虚拟化的雏形。

在随后的10年里,微处理器技术得到了巨大的发展,IT技术也逐渐演变成了一种“通用”的计算模式。当时,绝大部分大型和小型计算机系统均被服务器所取代,因为它更高效,成本更低,尤其是在部署新应用方面。只要某个部门需要部署一个新的应用,就会要求新增一台服务器,这样做的直接后果就是服务器数量急剧增加。从1990年至今,大多数公司的服务器规模增加了10倍以上,用于维护大型数据中心的成本不断攀升,蚕食了大量的资金,运营和管理资源,但是每台服务器的资源利用率却下降到15%左右。这种趋势持续下去,企业将不堪重负。

为此,以适用为导向的计算模式开始受到人们的重视,其中,虚拟化就是解决服务器集群臃肿最切实有效的办法,不仅可以减少服务器的数量,而且可以大幅提高服务器的资源利用率。为此,在高端服务器领域,虚拟化技术获得了长足的发展,先后经历了部分虚拟化,操作系统虚拟化,完全虚拟化(超虚拟化)阶段,以致最终发展成熟。最具标志性的就是1999年2月8日VMware推出的“VMware VirtualPlatform”(VMware虚拟平台),它的出现标志着虚拟化技术“平民化”的开始。

VMware全虚拟平台

VMware虚拟平台是在斯坦福大学的研究基础上提出的一种完全虚拟化解决方案,利用虚拟化监视器(VMM,也叫Hypervisor)软件来实现PC的完全虚拟化。VMM或Hypersivor是一种运行在服务器硬件和操作系统之间的软件层,可允许多个操作系统和应用共享硬件。VMM可为每个客户端操作系统提供一个完整的硬件界面,让操作系统认为其完全掌控所有资源,从而允许多个操作系统共享硬件。并且,VMM还能够模拟与操作系统和应用有关的所有物理服务器功能。

然而,在纯软件的虚拟化模式中,VMM必须控制各种关键平台资源(特别是内存),然后分配给每个客户机操作系统,以避免发生冲突。但是在传统的x86架构下,冲突却不可避免。因为,IA-32体系采用的是指令集架构(ISA),它确定了四种操作系统和应用可以运行的“特权层级”(Ring0~Ring 3)。操作系统一般运行在Ring 0上,它具有访问所有处理器和平台资源的特别权限。应用程序通常运行在Ring 3上,被限制内存映射等特定功能,以避免影响到其它应用。通过这种配置,操作系统把持了所有控制权,以确保整个系统的流畅运行,但是这也造成了VMM与操作系统之间对资源控制权的争夺。

在早期的虚拟化过程中,常规的解决方法是在Ring 0中运行VMM,将客户机操作系统的权限降至Ring1或Ring 3。但是,操作系统都是针对Ring 0设计的,虚拟机软件必须要修改操作系统源代码,在VMM运行期间降低操作系统的权限。如此一来就需要操作系统开发商、集成商等在内的专业技术人员花费大量的时间和人力对系统源代码进行再修改,这个工作的繁琐就不多说了。更重要的是这条路根本走不通,因为诸如微软等系统软件商根本不想把源代码拿出来。唯一可行的方法就只有在虚拟平台和操作系统之间通过二进制转码的方式,减少操作系统对特权状态访问的操作,尽量减少产生不必要的硬件异常,由此出现了类似VMware这样的全虚拟化技术。

在全虚拟化状态下,虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化VMM以完整模拟硬件的方式提供全部接口,同时还必须模拟特权指令的执行过程。但是,如果硬件不提供虚拟化的特殊支持,那么这个模拟过程就会非常复杂。

举例而言,在x86体系中,对于操作系统切换进程页表的操作,真实硬件通过提供一个特权CR3寄存器来实现,操作系统只需执行“mov pgtable,%%cr3”汇编指令即可。那交给VMM会发生什么情况呢?

当客户机操作系统执行该指令时,由于这条指令超出了它的控制权限,因此系统产生异常,执行控制权转到VMM手中。VMM首先分配一个变量给客户机操作系统,相当于原来的CR3寄存器,然后将pgtable代表的客户机物理地址填入这个“CR3寄存器”中,接下来

VMM还要将pgtable翻译成主机物理地址并填入到真实的CR3寄存器中,最后返回操作系统,操作系统才能执行这条指令。因此,尽管全虚拟化可以在不修改操作系统源代码的情况下稳定运行,但是就其平台本身而言,不仅编程更加复杂,而且程序的执行效率低下。这种状况—直持续到2005年。

虚拟化的新阶段——硬件辅助虚拟化技术

在2005年春季信息技术峰会上,Intel发布了IVT(Intel Virtualization Technology),从而拉开了IA架构虚拟化应用的新时代大幕。支持虚拟化技术的处理器带有特别优化过的指令集来自动控制虚拟化进程,从而极大简化了VMM的设计,使其性能得到大幅提升。其中,IA-32处理器的虚拟化技术称为VT-x,安腾处理器的虚拟化技术称为VT-i。

VT-x在原有的IA 4·Rings架构之上提供了一个名为VMX Root的“新特权阶层”,专门用来运行VMM。与此对应,客户机操作系统则运行在VMX non-rootope ration(也就是原来的4-Ring架构),这两种操作模式之间可以切换。VMM通过调用“VMLAUNCH”或“VMRESUME”指令切换到VMX non-root operation模式,这时硬件自动加载操作系统,操作系统获得运行,这种转换被称为VM entry。操作系统运行过程中遇到需要VMM处理的事件,就会主动调用“VMCALL”指令硬件自动挂起,退出操作系统切换到VMX root operation模式,恢复VMM的运行,这种转换称为VM exit。这样一来基本上解决了VMM与客户机操作系统之间的冲突和转换问题。

除此之外,IVT还提供了一个名为虚拟机控制块(VMCS)的缓存区,分为客户机状态区(GuestState Area)、主机状态区(Host StateArea)和执行控制区。当VM entry发生时,硬件自动从客户机状态区加载之前操作系统的哲存数据(这时不需要保存VMM的数据。因为在VMX root operation模式下,VMM被赋予了最高权限。一旦VMM开始运行,就不会受到任何干扰,只有在VMM彻底处理完毕后才可能切换到操作系统,所以每次VMM运行,必然是处理一个新事件);当需要由操作系统切换到VMM时(VM exit),硬件自动将操作系统的暂存数据保存到客户机状态区,并从主机状态区中加载VMM的通用事件处理函数的地址,VMM开始执行。而执行控制区存放的则是可以操控VM entry和 exit的标志位,例如标记哪些事件可以导致从操作系统切换到VMM。而当由VMM进入操作系统时,VMM会自动给操作系统“塞”入中断标志,当满足条件时,再切换回VMX root operation。这个缓存区的出现,从根本上解决了VMM与客户操作系统之间的信息控制和转换问题。至此,软件虚拟化技术存在的两个最大技术障碍在以IVT为首的硬件虚拟化技术出现后都已不复存在了,这为简化虚拟化的实施铺平了道路。

可以说,硬件辅助虚拟化技术代表了虚拟化技术的未来,但是,这并不意味着IVT已经完美无缺了,实际上还有不少值得改进的地方。首先,最需要解决的就是提高操作模式间的转换速度问题。由于两种模式的转换太过频繁,如果不能有效提高转换速度,即使充分利用硬件特性,虚拟机的整体性能也会大打折扣,以Pentium 4处理器为例,它通常需要花费2409个时钟周期处理VM entry,花费508个时钟周期处理VM exit,代价相当高;而新的Core架构响应时间已经减少到937和446个时钟周期。其次是提高TLB(Translation Lookaside Buffer,翻译后援缓冲器)的性能,因为每次加载都需要从它里面读取数据,它的性能决定了转换的快慢。除此之外,提供内存管理单元虚拟化的硬件支持以及支持高效的I/O虚拟化也是处理器级虚拟化技术升级亟需解决的问题。

为此,Intel为IVT制定了一条明确的路线图,从解决Ring 0指令冲突问题的VT-x,到解决I/O设备虚拟化问题的VT-d(在2008年的Stoakley平台中已实现),以及解决内存虚拟化问题的VT-x Gen2(Nehalem处理器中包含此技术)。AMD也推出了自己的虚拟化解决方案,称为AMD-V(内部研发代号为Pacifica)。尽管Intel-VT和AMD-V并不完全相同,但是基本思路和数据结构却是相似的。目前,AMD-V可以为CPU虚拟化和I/O设备虚拟化(10MMU)提供支持。

虚拟技术的应用扩展

在Intel-VT和AMD-V推出之后,虚拟化技术获得了迅猛的发展,已经从最初的平台虚拟化向资源虚拟化和应用程序虚拟化方向扩展。所谓资源虚拟化,是指对特定的系统资源的虚拟化,比如CPU、内存、存储、网络资源等。例如,可以将单CPU虚拟成多CPU,虚拟内存技术可以使应用程序认为其自身拥有连续可用的地址空间。而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段,甚至被交换到磁盘,闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。应用程序的虚拟化最经典的案例就是本文开篇所提到的能够运行Windows和Office的iPhone手机。此外,云计算也是一个很典型的实例。

虚拟化的未来

目前,虚拟化技术已经和云计算一起成为未来高端服务器平台和数据中心必备的两大技术。实际上,虚拟技术带来的变革已随处可见。云计算最重要的软件架构就是通过虚拟化技术来实现的。

另外,虚拟化技术所带来的服务器数量减少和散热成本的降低也是显而易见的,同时还带来了安全性和可靠性的提升。因为,在应用程序的虚拟化应用中,客户端拥有的只是一个镜像,所有的数据都保存在数据中心里(服务器端),因此即使客户端损坏或丢失,相关的数据也不会消失。不过,虚拟化技术所带来的更重要的革新是,当所有的iPhone(智能手机)都可以运行Windows时,也就意味着终端硬件的性能差别将不复存在,CIO们梦想的“网络就是计算机”就会成为现实。

MC点评:“截至2008,不能充分利用虚拟化技术的企业将会多支出40%的采购成本和20%左右的管理成本。”(摘自Gartner《服务器虑拟化的未来》)这句话能充分说明了虚拟化为企业级用户带来的成本降低和效益提升。因此,当我们发现虚拟化技术是如此多姿多彩的时候,对它的需求就更为迫切了。

猜你喜欢
客户机应用程序内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
删除Win10中自带的应用程序
“春夏秋冬”的内存
谷歌禁止加密货币应用程序
基于内存的地理信息访问技术
瘦客户机:安全与便捷的选择
三星电子将开设应用程序下载商店
升腾瘦客户机借神码翱翔“云端”
基于Web数据提高访问速度的方法
微软软件商店开始接受应用程序