40多年来,虚拟技术已经发展到这样的一个阶段—我们每天享受着这一技术的好处,但并未意识到—例如当你打开WindowsServer的命令行窗口时,便是在Windows上使用着虚拟机的功能。既然已经如此成熟,为什么我们还要关心虚拟技术?原因很简单,虚拟技术的概念虽然成熟,但它的重要性还尚未引起国内用户和读者的足够重视,尤其是在服务器和存储领域,虚拟技术将发挥决定性的作用。
何谓虚拟?
当我们尝试着理解虚拟技术时,首先必须要理解“虚拟”的概念。“虚拟”这个词最早来源于光学,用于理解镜子里的物体。现在,“虚拟”这个词已经经过演化,用来描述任何真实物体的模拟了,例如分区、虚拟机、虚拟内存、虚拟磁盘和虚拟现实。在讨论虚拟技术的时候,使用“虚拟”这个词,是因为我们希望虚拟机看起来和工作起来都和真正的机器一模一样。这意味着,虚拟机并不是真正的机器,但是它能像真正的机器一模一样地工作。
实际上,从原理上看,所有虚拟技术虚拟的是指令集。所有的IT设备,不管是PC、服务器还是存储,都有一个共同点:它们被设计用来完成一组特定的指令。这些指令组成一个指令集。对于虚拟技术而言,“虚拟”实际上就是指的这些指令集。虚拟机有许多不同的类型,但是它们有一个共同的主题就是模拟一个指令集的概念。每个虚拟机都有一个用户可以访问的指令集。虚拟机把这些虚拟指令“映射”到计算机的实际指令集。
定义完“虚拟”的概念,我们可以清楚知道,目前所能看到的硬分区、软分区、逻辑分区、Solaris Container、VMware、Xen、微软VirtualServer2005这些虚拟技术,都是同样的原理,只是虚拟指令集所处的位置不同而已。
按照虚拟层所处位置的不同,目前所有的虚拟技术大致可以分为硬件虚拟、逻辑虚拟、软件虚拟和应用虚拟四种类型。
逻辑虚拟模式
最早的虚拟模式当然是源自IBM大型主机的逻辑分区技术,这种技术的主要特点是,在IBM的大型主机中,每一个虚拟机都是一台真正机器的完整拷贝,只是内存少了点。根据这一概念,一个功能强大的大型主机可以被分割成许多虚拟机。这些虚拟机仅比原来的主机少一点内存资源而已。这一虚拟模式后来被业界广泛借鉴,包括HP vPAR、VMware ESX Server和Xen在内的虚拟技术都是这样的工作原理。
在逻辑虚拟模型中,虚拟机操作系统是整个IBM虚拟机体系结构的“大脑”,包括操作系统和硬件在内的整个系统被称作虚拟机系统(VM System)。每个虚拟机系统都被一个叫做控制程序的程序控制。控制程序除了管理实际的物理硬件,还要为每个系统用户创建一个虚拟机,这种虚拟机是System /370或System /390系统的全真模拟。IBM虚拟机概念的重点在于:每个用户都可以在他们的虚拟机上运行程序、存储数据,甚至虚拟机崩溃也不会影响系统本身和其他的系统用户。所以,IBM虚拟机模型不仅允许资源共享,而且实现了系统资源的保护。在大型主机上,用户可以选择BasicMode(基本模式)、Logical Partition(逻辑分区方式)和z/VM(Z虚拟机方式)三种模式来配置系统。
在上述模型中,虚拟控制程序以固件形式直接运行在主机硬件层之上,位于操作系统之下,是虚拟机系统中最重要的一部分。控制程序要管理系统硬件,包括启动和关机在内的系统支持任务,以及请求的排队和执行。同时控制程序还要管理每个虚拟机的编程特征和每个虚拟机的建立和维护。
当IBM在2001年把大型主机上的VM System向下迁移到p系列和i系列上时,将虚拟控制程序称之为“Hypervisor”,并先后实现了逻辑分区与动态逻辑分区。
据IBM系统科技部大中华区p系列产品经理李红和资深工程师房树新介绍,由于IBM p系列的设计思想是共享式的,即所有CPU可以同等地看到所有的内存和I/O的连接方式,即一种为数据/指令流提供足够的高速通路的体系结构。在p系列上,Hypervisor能看到所有的真实资源(CPU、内存和I/O卡),并且通过一个控制台(HMC)来管理逻辑分区。通过HMC将上述提到的资源定义到不同的逻辑分区中去,每个逻辑分区所需的最小资源是1/10个CPU(在2004年8月发布的AIX 5Lv5.3上实现了1/10个CPU级别的分区粒度,以及1/100个CPU的微调量)、1GB内存和一个PCI插槽。
而且IBM有意将逻辑分区技术进一步下移。2005年第四季度,IBM发布了虚拟I/O服务器,其目的就是让没有配置HMC的1~2路低端p系列和i系列用户,可以通过虚拟I/O的一个组件IVM(IBM Virtual Machine),实现简化后的HMC控制台功能。
李红更透露说,IBM将在2006年内宣布一项突破性的虚拟技术,届时,IBM的虚拟层管理工具将能对本地服务器群的所有计算资源进行虚拟—类似于Grid的概念,但要点在于用户可以从全局角度出发,对计算资源和业务系统进行精确的配置。
硬件虚拟模式
硬件虚拟技术是随着Unix服务器的发展而出现的。实际上,在Unix服务器上,不少厂商和用户习惯于将电气级的虚拟技术称为硬分区(或物理分区),而把通过软件或固件实现的逻辑分区技术则称之为软分区。但无论如何称呼,实际上逻辑虚拟模式和硬件虚拟模式的共同点是与应用所在的操作系统无关,只与系统硬件相关。那么,它们之间的区别在哪里?
先看看硬件虚拟模式。HP和Sun等厂商在Unix服务器上采用的是MBB(ModularBuilding Block)架构。MBB由多个BB(Building Block)构成,Sun称之为Board,HP称之为Cell。
每个BB可包含4路CPU、若干内存和I/O卡。不同BB内的CPU可以有不同的时钟频率。所有的BB通过一种称为Crossbar Switch的交换机制连接在一起。采用MBB技术可以比较容易地设计出拥有更多数量CPU的服务器。在这种服务器上既可以运行一个操作系统,也可以在一个或多个BB上运行多个操作系统。这就是服务器的硬分区。
基于MBB技术的服务器是由多个BB构成的,所以具有物理分区的特性:即可以热插拔CPU板和内存板。这是因为每一个BB是物理分开的,每个4路CPU板可以单独从系统中隔离出来并将其下电。
再来看逻辑虚拟模式。IBM没有采用MBB的设计结构,所以在p系列服务器上不支持硬分区。由于IBM没用采用Crossbar Switch技术做CPU之间的连接,它不允许不同主频的CPU共存在同一台机器内。而MBB结构的服务器则允许这样做,但要求Crossbar Switch工作在相同的带宽上(MBB之间的连接带宽恒定)。
比较而言,硬件虚拟模式的优点无疑是100%的隔离度和安全性,不占用任何系统资源。缺点是操作相对复杂,最小操作粒度是1颗CPU,而且在进行分区资源变更的时候,移出CPU的分区需要重启操作系统。
逻辑虚拟模式的优点是配置灵活,操作相对简单而且分区粒度可达1/20个CPU,资源变更时无需重启系统,甚至无需重启应用。但相对硬件虚拟模式而言,逻辑虚拟模式会占用一定比例的系统资源。目前大型主机的虚拟效率一般在95%以上,虚拟化损耗大约为2%~3%;AIX和HP-UX上的虚拟效率在90%以上,虚拟化损耗约为5%;而x86架构上的虚拟效率则在80%左右,虚拟化损耗大约为20%。
需要注意的是,Intel和AMD也开始了对硬件级虚拟技术的关注,例如Intel和AMD在2006年将分别推出采用Intel Virtual Machine Monitor和AMD Pacifica虚拟技术的处理器,它们将更好地支持VMware ESX Server和Xen这样的虚拟机软件。
软件虚拟和应用虚拟模式
软件虚拟模式和应用虚拟模式在原理上也比较相似,虚拟层软件都需要运行在一个主操作系统上,而与系统硬件并不相关。二者的不同之处在于,前者在虚拟层上运行客户操作系统(因而被称为虚拟机),而后者则在虚拟层上运行应用软件域。
软件虚拟模式最为普通用户熟悉,例如最近几年颇为火热的VMware GSX Server和微软Virtual Server2005就是最广为人知的虚拟机产品。虚拟机技术是通过虚拟机软件来创建一个完整的系统环境,在这个软件生成的系统环境下可以运行各种服务器应用软件。由于虚拟机本身也是一个在OS上运行的应用,所以在一台物理服务器上可以运行很多个虚拟机,每个虚拟机内可以独立运行其应用,在虚拟机内运行的应用好像是在自己专有的一套OS环境下,这样应用就通过虚拟机相互隔离。虚拟机可以通过虚拟I/O来共享物理I/O设备,而不必配备专用的I/O设备如网卡等。
而应用虚拟模型出现的时间最晚,如Sun在Solaris 10里提供的Solaris Container(也叫N1 Grid Container),号称可以让每个 Solaris 10 创建多达 8192 个安全、无故障软件分区。
这种模式无疑可以提高单一系统的资源利用率,在一个操作系统上实现系统资源的高利用率,只要用户的硬件足够强大,可以把众多业务系统运行在独立的动态系统域(Zone)里。
需要说明的是,上述四种模式并非割裂的关系,可以混合使用。据中国惠普CSG企业服务器产品经理裴晖的介绍,惠普于2005年初发布的HP-UX 11i v2,在这个版本上惠普提出了HP VSE(Virtual Server Enviorment)体系,这一体系包括基于硬件的nPAR技术、逻辑虚拟模式下的vPAR、软件虚拟模式下的HP Virtual Machine和应用虚拟模式下的HP Resource Partition 技术。裴晖补充说,HP VSE体系与其他虚拟技术的不同在于设定阈值时的人性化设计。其他虚拟机管理工具在设定计算资源变更阈值时,通常是对CPU占用率这一指标进行设定,例如某应用令分区内CPU有80%以上的负载,则调用其他分区的闲置CPU资源。但问题在于,如果用户不知道一个应用对CPU的负载有多大的时候怎么办?笔者从惠普提供的HP VSE演示Flash看到,用户的确可以针对应用指标设定阈值,例如在设定Web服务器时,可以设定Http连接数超过1000时调用计算资源,Http连接低于200时主动释放计算资源。
四种虚拟模式的应用特性 | ||||
| 应用虚拟 | 软件虚拟 | 逻辑虚拟 | 硬件虚拟 |
独立文件系统 | 无 | 有 | 有 | 有 |
独立网络地址 | 无 | 有 | 有 | 有 |
独立安全配置和口令 | 无 | 有 | 有 | 有 |
独立OS内核版本 | 无 | 有 | 有 | 有 |
独立OS补丁 | 无 | 有 | 有 | 有 |
资源虚拟粒度 | 每OS最多8192个动态域(Solaris Container) | 据虚拟机不同而异 | 1/20CPU(HP VSE) | 1CPU |
需要管理的OS镜像数量 | 单个 | 多个 | 多个 | 多个 |
系统软件许可证 | 单个 | 多个 | 多个 | 多个 |
主OS是否故障点 | 是 | 是 | 无主OS | 无主OS |
虚拟实施周期 | 快 | 中等 | 较慢 | 慢 |
硬件故障隔离 | 无 | 无 | 无 | 无 |
应用隔离程度 | 弱 | 强 | 强 | 完全 |
实施成本 | 低 | 较低 | 较高 | 高 |
虚拟原动力:服务器效率
目前,一般企业内的服务器仅能达到15%~30%的系统处理能力,绝大部分的服务器负载都低于40%,大部分的服务器处理能力并没有得到利用,IT投资回报率偏低。正如41年前IBM研发虚拟技术的出发点,让一台机器尽可能多地让更多用户和应用程序有效使用,一直都是虚拟技术发展的原动力。
中科院物理所量子模拟科学中心(量子中心)的徐力方研究员对此感触颇深。2002年底,物理所定购了两台满配32颗Power4的IBM p690服务器,一台用于后台作业运算,一台作为登录节点和交互作业运算。但到了2003年9月,由于研究所的科研项目和学生迅速增加,交互作业节点作业拥挤,导致整机效率下降。
怎么办?徐力方咨询了IBM的技术人员,得到的答复是可以采用逻辑分区的技术,将登录节点机划分为8/24两个分区,8颗CPU的分区用于节点登录,另24颗CPU用于后台作业。但这样做仍然存在问题,因为8颗CPU又不够交互作业使用,徐力方介绍说,由于科研项目运行的并行程序众多,其中有学生们自行编写或修改自开放源码,难以避免多数子作业运行完毕,而少数子作业还在运算的情况,这样就会出现计算能力的浪费。如果用逻辑分区把分区细分,又会出现某些项目在细分区上无法计算的情况——分区资源变更又浪费时间。
这一问题最终得到了圆满解决,2003年10月,IBM发布了AIX 5L v5.2,IBM的工程师随后以动态逻辑分区的方式配置了5个动态分区,高峰时每个研究组各占20%的资源,但闲暇时则每个分区都能调用所有的计算资源,这样,既做到资源的合理分配,又做到了资源的充分利用。
量子中心的案例中,虽然使用了5个分区,但都采用的是AIX操作系统,那么多操作系统的虚拟应用情况如何?据中国惠普CSG企业服务器产品经理王镝介绍,国内已有实际用户实施了多操作系统虚拟。王镝介绍说,2005年,国内某用户采购了1台配置32颗安腾2处理器的(其中16颗为待激活状态)HP Integrity Superdome服务器,系统先以硬分区技术划分为两个物理分区,然后每个物理分区用vPAR和HP Virtual Machine技术划分为三类逻辑分区,分别运行社保交易服务器、BEA Weblogic应用服务器、Oracle数据库服务器,分别运行在HP-UX和Linux平台上,统一以HPWorkload Management管理。这样,当日常白天医保交易繁忙时,可将数据库服务器分区的计算资源调配到社保交易分区,晚上进行批处理业务的时候再调配;而在月末各分区的业务都繁忙时,以iCOD(按需扩容)或TiCOD(购买待激活CPU若干小时的点卡)的方式,将待激活CPU临时调配到各个分区。这样,用户既获得了足够的计算资源和安全性,但又只需较低的成本,保证了投资回报率。
实施虚拟应注意什么?
虚拟技术虽然成熟,但实施起来可不能想当然。那么在虚拟实施过程中应该注意些什么?
中国人民银行清算总中心是IBM大型主机和p系列服务器的老用户,从1992年前后开始使用大型主机,算来也有14年的历史。清算中心开发部的副总经理贝劲松在谈起实施虚拟技术时,认为尤其应该关注两点。
首先是实施前要对业务系统、对计算资源的需求有明确了解。贝劲松笑谈,清算总中心在这方面是摸索出来的经验。2002年时,清算总中心曾购买了两台配置8颗1.1GHz Power4处理器的IBMeServer p690服务器,当时按照4/2/2的方式划分为了三个逻辑分区,但通过压力测试发现第一个分区负载较小,反而是第二个分区经常过载,于是将分区调整为2/4/2的配置,解决了这个问题。
其次是实施前要有充分的测试期。贝劲松认为,像银行这样的自行开发业务系统的行业,相对比较容易了解业务系统对计算资源的压力,但即使这样,也需要进行充分测试,如不具备对等配置测试环境,也应在处理能力稍低的同类硬件平台上进行测试。例如,清算总中心2005年购买了8路IBMeServer p570(用于生产)和两路的eServer p570 p550(用于测试),分别按照2/6和0.5/1.5的配置进行分区,在系统的开发期和测试期,p550上的测试数据有助于他们了解业务系统对计算资源的需求。如果是不自行开发业务系统的行业,就更有必要在近似系统上进行测试,毕竟生产系统的安全性是第一位的。
除了老用户的经验之谈,笔者认为在实施虚拟技术之前,还应参照左表,决定采用哪种虚拟技术最合适。从表中容易得知,如果是简单的单机应用开发,那么采用应用虚拟技术最合适;如果需要开发Web应用,那么软件虚拟技术才能满足需求。
虚拟并非万能
或许上面的内容会给读者一个错觉,即虚拟技术是如此优异,如果自己的企业还没有使用,将会在未来的竞争中出于劣势,实际上,仍有许多用户还不需要用到虚拟技术。
国家气象中心是高性能计算机集群和IBM p系列的老用户,尤其是2004年采购的IBM eServer p655集群,以3200颗1.7GHz的Power4+处理器实现了10.31TeraFlops/s的Linpack性能,牢牢占据着系统中国高性能计算机的头把交椅,如此高性能的系统,气象中心是如何看待分区或者虚拟机技术呢?
答案出乎笔者先前的预料,据国家气象中心计算机室主任田浩的介绍,他们并没有采用任何分区和虚拟技术。为什么?原因就在于气象行业应用软件的特殊性上。田浩解释说,气象预报主要采用的短期和中期预报,大都采用将预测区域划分为近似正方的栅格(边长越小预报越精确),然后用各种计算模型(如MM5或GRAPES等)进行运算。虽然气象中心集群的性能是国内目前最强大的,系统的满载率也接近60%(7×24×365),但如果是24小时的短期预报,目前一般在3~4小时内得出结果;而中期预报(10天,30公里)则大概需要5~6小时,这一速度虽然比以前快很多,但还算不上完美——也就是说,目前的整个系统跑生产系统没问题,但富余的资源并不多。田浩笑说,像气象中心这样对计算资源需求永无止境的行业,恐怕是很难体验到虚拟技术的好处的。不过,田浩同时认为,如果气象中心在业务系统的并行算法上能够取得突破,气象中心未来采用虚拟技术的可能性同样存在。
除了气象预报和石油物探这样对计算资源需求永无止境的高端领域,低端应用当然也不需要用到虚拟技术,倒不是没这样的需求,而是因为通常前端应用的硬件平台性能还不够好,即使是一个勇于尝试的IT主管,也不会轻易在一台单路至强服务器上用VMware GSX Server虚拟出若干Linux和Windows操作系统,把公司的邮件、Web和文件服务整合到一台机器上。
虚拟技术里程碑 | |
1965年 | IBM研究中心在一台IBM7044机器上的每个部分建立一个7044镜像。每个镜像叫做7044/44X。这是为了使IBM更好地理解多编程操作系统。这是IBM虚拟机概念的开端。 |
1967年 | Djiskstra在THE大学开发一个操作系统。它由一系列分层的虚拟机组成。每层虚拟机抽象出机器的不同层次,而每一层又是由它的下一层抽象而来。 |
1968年 | 一个IBM小组建立了一个名为剑桥监视系统的操作系统(CMS)。CMS是分时系统的一个实验,并最终成为VM/370所采用的体系构架。VM/370被当作分时系统来销售。 |
1974年 | 贝尔实验室的Denise Ritchie和Ken Thompson发表了关于Unix操作系统的里程碑式的论文。 |
1980~85年 | IEEE标准化委员会为了给Unix库函数提供一个标准,启动POSIX项目。 |
1990年 | IEEE POSIX项目组发表了“信息技术可移植操作系统接口。这为UNIX外壳和应用例程规定了一个标准。 |
2001年 | AIX 5L v5.1发布,IBM首次在小型机上实现了逻辑分区。 |
2002年 | AIX 5L v5.2发布,IBM在小型机上实现了动态逻辑分区。 |
2004年 | 8月,AIX 5L v5.3实现了微分区技术,最小分区粒度为1/10个CPU,且最多支持254个虚拟I/O。 10月,Solaris 10实现了Solaris Container功能,支持应用层面的计算资源调配。 |
2005年 | 1月,HP-UX 11i v2发布,实现了从硬分区、软分区到应用层分区,最小分区粒度为1/20颗CPU。 10月,IBM发布虚拟I/O服务器,该服务器的一个组件IVM具备HMC的部分功能。即在不配置HMC的低端p系列和i系列服务器上,也可配置多个分区和操作系统。 |
编看编想:如何让“虚拟”成为现实?
做完此次专题的所有采访,最大的感受是,技术趋势与实际应用还存在较大差距——原以为在媒体上宣传了多年的服务器整合概念以及各种分区技术,会有很多行业应用——但实际上,除了金融业、制造业、政府部门和部分科研领域的用户,许多用户对服务器整合、虚拟技术并不十分清晰。简而言之,文中提到的四个案例可说是代表了四种典型用户。
最积极的是银行类用户,因为银行是中国最早使用大型主机和小型机的行业,在如何充分挖掘机器潜能上心得当然最多,对于虚拟技术的期待程度和应用评价也最高,特点在于对成本敏感度低,对虚拟技术的安全性和使用效率关注度高。其次是政府部门类用户,如东软社保案例中的用户,对虚拟技术的应用虽然不如银行用户那样熟稔,但通过双方技术人员的努力,仍能以最低的TCO获得最多的计算性能(预装的16颗处理器成本很低),他们的特点是对预算较敏感,对系统效率提高感兴趣。第三种是类似物理所这样的用户,由于运行的程序有相当部分是开源代码,所以必须使用虚拟技术来提高系统使用效率,但这类用户对预算敏感度高,对虚拟技术本身倒并不是特别了解。最后就是国家气象中心这样的用户,虽然对虚拟技术有一定了解,也有相当兴趣,但由于行业应用的要求,短时间内无法采用虚拟技术。
可见,与北美和欧洲相对广泛的虚拟技术应用状况和国内的现实也再次证明了我们在IT应用水平上还存在差距。如何提升水平?还是借用人行清算总中心开发部副总经理贝劲松的话——最好是摸着石头过河,如果新用户不了解虚拟技术的好处和潜在风险,那么不妨在类似生产系统的小平台上进行测试,既降低了尝试新技术的风险,又能得到生产系统的近似负载数据,可谓一举两得。
而没有类似平台的用户怎么办?笔者不建议专门为此购买新的硬件系统,这类用户完全可以与厂商联系,到相关的解决方案中心去体验一下。因为IBM、HP、Sun等厂商在北京、上海等地设有用户体验中心,相关的解决方案也有一些,运气好的话可以找到同行业的方案,然后再去实地考察一番,这样得出的结论也是相当可靠的。
总之,在笔者看来,虚拟技术能否在各行业的关键系统中使用并不存在太多变数,笔者更关心的是,虚拟技术与Grid结合后,会产生什么样的影响?