服务器 频道

服务器虚拟技术现实全景

  硬件虚拟模式

  硬件虚拟技术是随着Unix服务器的发展而出现的。实际上,在Unix服务器上,不少厂商和用户习惯于将电气级的虚拟技术称为硬分区(或物理分区),而把通过软件或固件实现的逻辑分区技术则称之为软分区。但无论如何称呼,实际上逻辑虚拟模式和硬件虚拟模式的共同点是与应用所在的操作系统无关,只与系统硬件相关。那么,它们之间的区别在哪里?

  先看看硬件虚拟模式。HP和Sun等厂商在Unix服务器上采用的是MBB(Modular Building 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时主动释放计算资源。

 软件虚拟和应用虚拟模式

0
相关文章