可干百业,无一精通。
分类: LINUX
2007-09-22 00:16:32
转自 linuxeden.com
哪种虚拟化技术最适合你的使用环境?本文从架构、性能、应用环境等重点分析了具有代表性六大虚拟化技术,并分别分析了不同类别间的不同特点以及其各自适合的企业环境特点。以供广大企业用户借鉴。
VMware凭Virtual Infrastructure 3继续领跑
旗舰虚拟化产品的新版本改进了硬件支持功能。
VMware 基于硬件仿真的产品系列长期以来领导x86虚拟化市常VMware Workstation和Server需要“主机”操作系统:Linux或者Windows,才能在各种操作系统环境下运行“客户”虚拟机,这些环境包括 BSD、Linux、 NetWare、Unix和Windows。不过,这家公司面向企业市场的ESX Server产品采用了略有不同的方法。ESX Server实际上是非常精简、受到严加控制的基于Linux的操作系统――安装在裸机系统上,用不着需要主机操作系统。因而,它的硬件支持功能比较有限,不过它管理每个虚拟系统所需的开销比较小,能够支持更多的并行虚拟服务器实例。
VMware的硬件抽象方法非常灵活,但带来的开销势必比基于主机的虚拟化产品大得多。折衷方案就是,允许每个虚拟服务器可以真正与平台分开、可在 BIOS层面进行定制。VMware的服务器产品还提供了客户端工具,可以从管理员工作站连接到每个虚拟服务器的控制台,以便管理;另外提供了可自动创建及维护虚拟服务器的应用编程接口(API)。
VMware 现在应该推出了Virtual Infrastructure 3套件,它为市场推出了具有许多增强功能的新版本ESX Server。在后端方面,VMware添加了支持四路CPU虚拟机的功能,每个虚拟机的内存容量可高达16GB,还为64位客户操作系统提供了官方支持。SAN连接功能也达到了新的水平。ESX Server 3可以从NFS共享区域或者iSCSI SAN卷读取虚拟机磁盘文件,可从SAN直接支持运行中的虚拟机,甚至可以从SAN来引导。
VMware凭借新发布的ESX Server 3版本,彻底改变了Web用户界面,使得Web体验更出众、更完善。不过, VirtualCenter显然仍是一款更出色的管理工具,可用于配置、管理及自动迁移VMware虚拟机。Virtual Infrastructure 3的一项新增特性名为分布式可用性服务:万一遇到硬件故障,这项特性可以让VirtualCenter把虚拟机从一个物理主机自动迁移到另一个物理主机。
该版本的另一个新特性就是分布式资源调度,这个工具可以在硬件资源之间自动迁移虚拟机。譬如说,如果在虚拟机里面运行的某个数据库服务器耗用了一台物理主机上的太多资源,从而影响了在同一主机上运行的其他虚拟机的性能,VirtualCenter就会把其他服务器迁移到另一个ESX服务器实例上,从而兼顾所有虚拟机对资源的需求。
如果把这些工具部署到实际使用的数据中心,管理员可以把每个物理服务器看成是属于庞大资源池的一部分,用不着为每台服务器手动分配资源来处理负载。此外,分布式可用性服务意味着硬件故障不再是以前的威胁了。
VMware 在x86虚拟化市场占有最大的份额,也理应是这样。在测试环境下,测试版本的ESX Server 3在服务器上运行似乎非常稳定,只有VirtualCenter出现了一些小的异常――这通常是测试版本代码的特点。如果交付的Virtual Infrastructure 3承诺的所有功能没有缩水,它会把虚拟化技术进一步推向主流。
微软期待Longhorn提高虚拟化速度
接近内核的hypervisor其速度应当会超过Virtual Server 2005。
微软的Virtual Server 2005 R2采用了与VMware同样的设计思路,不过需要Windows Server 2003作为主机操作系统;另外与VMware ESX Server不同的是,它无法在裸机环境下运行。最新版本添加了相当漂亮的Web用户界面及支持Linux虚拟机(VM)的功能。而且它可以免费下载。
微软还在准备虚拟机管理器(Virtual Machine Manager),这个虚拟化管理工具基于Virtual Server 2005 R2。它目前只是测试版,微软计划今年晚些时候发布正式版本的虚拟机管理器。
尽管这样,微软仍面临激烈的竞争,这些新产品恐怕功能太少、交付时间太晚。初步测试表明,Virtual Server 2005 R2功能良好,但受到了似乎与I/O瓶颈有关的性能问题的阻碍。另外,虽然x64版本在面向AMD Opteron和英特尔扩展内存64位(EM64T)处理器的Windows Server 2003 x64上运行,但实际上作为32位应用在Windows on Windows(WoW)里面运行,这进一步阻碍了该虚拟产品在这些架构上的性能。
按照微软的一贯思路,所有虚拟服务器管理工具都需要Windows和Internet Explorer 6.0或更高版本,而与虚拟服务器控制台的所有交互都通过嵌入在浏览器窗口里面的ActiveX控件来处理。Web图形用户界面布局漂亮,不过有时会很奇怪,可以比较轻松地完成一些简单任务,譬如把ISO镜像映射到虚拟机光盘驱动器。
与x86虚拟化市场的其他产品相比,微软的虚拟机服务器缺少管理工具。不过微软最近宣布了系统中心虚拟机管理器,它不但用来管理虚拟服务器,还用来为将内置在Longhorn里面的Windows服务器虚拟化服务提供管理框架。
虚拟机管理器的目的类似VMware VirtualCenter,但多了几项额外特性。它体现了微软在物理到虚拟迁移工具(仅限于Windows服务器)方面的思路,并且借鉴了卷影复制服务(VSC),执行文件块级别的服务器迁移。另外还包括诸多合并工具,它们可以查看物理数据中心;根据性能和资源利用率方面的衡量指标,建议采取相应的虚拟化迁移策略。
所有这些工具都可以充分利用活动目录等微软的现有技术来完成工作,这在以Windows为中心的基础设施下是一个优点。不过虽然虚拟服务器现在支持 Linux客户操作系统,但微软并还没有想方设法用其管理工具支持Linux,而是偏向于让第三方独立软件开发商处理这项任务。
预计微软会在最初发布Longhorn Server后的三个月内为这项操作系统交付hypervisor,并且已承诺:由于更加接近操作系统的内核,将会带来更好的虚拟化性能。如果真是这样,那么独立的虚拟服务器产品可能会成为明日黄花。它目前提供的所有功能将成为标准的服务器角色,酷似域控制器或者应用服务器。另一方面,如果 Longhorn未能解决虚拟机性能速度缓慢的问题,微软在虚拟化市场可能会继续处于落伍的位置。
Solaris容器将服务器推向极限
Sun的内置Unix虚拟化方案可以尽量提高利用率。
Sun公司最初利用Solaris Domains把虚拟化特性添加到了专用的Uni
x 操作系统,这项技术以前只出现在价格不菲、功能强大的Sun硬件上,譬如E10000。不过这个平台对安装的大多数环境来说过于庞大了。Sun利用 Solaris容器(Solaris Containers),为主流市场引入了类似功能。容器可运行在使用Sparc或者x86版本的Solaris 10上,再加上引入的多核Sun Sparc T1处理器,两者共同为Sun的虚拟化策略注入了新的活力。
Solaris容器让安装的多个Solaris 10可以在一台物理服务器上运行,所有虚拟服务器在这台服务器上共享通用内核,但运行不同的实体,虚拟服务器上面的所有进程统一在主机内核里面运行。虽然 Solaris Zones并不是什么新概念,但作为Solaris容器增强版的这项虚拟化技术还是颇受欢迎。
Zones控制资源的粒度比早期的一些技术细得多。它们允许管理员创建按CPU分配的资源池。为Zones分配这些资源池需要为Zones分配可用资源,无论这资源是一个专用的 CPU还是几个CPU组成的池。Zones甚至允许管理员把单个CPU的一部分分配给虚拟机,以前这些方面需要使用 Solaris资源管理器来控制。
Solaris 10里面的合理分配调度程序负责按比例从资源池分配资源给不同分区里面的不同容器。因而,不同容器的两个分区可能会有不同的资源分配比重,以便按需要把更多资源分配给其中一个分区,这样管理员就可以高度控制资源利用率了。
与基于Solaris的所有产品一样,Sun的工具集基本上也是基于命令行,这样管理员就可以用脚本编写资源分配和部署工具了。通过命令行创建容器和 Zones是相当简单直观的过程。除了这些工具外,Sun还提供名为Solaris容器管理器的另一个产品,该产品是N1管理工具集的一部分。这个添加到 Sun管理中心的图形用户界面工具让管理员可以跨多个主机系统来配置及管理容器。
Sun也承认,不能单单着眼于Solaris;它也一直致力于在x86系统上的容器里面提供与Linux二进制代码兼容的功能。迄今为止,这项功能仍处于初期阶段,但Sun声称,运行Linux应用程序的 Solaris容器获得的速度实际上超过在Linux内核上本地运行的速度,这绝对是一个巧妙的手法。
容器是面向低中档Sparc服务器的惟一的虚拟化方案,但Sun同样经销用于Opteron系列上的VMware产品。即便如此,使用任何平台的Solaris客户关注容器将是明智之举。容器无疑具有Sun的产品特点:全面性和复杂性,而且具有稳定的性能。
Virtuozzo迎合大量服务器环境
多个虚拟服务器在一个内核上运行,具有高性能和出色管理等优点。
SWsoft公司的Virtuozzo能够处理在一个主机系统上运行的大量虚拟服务器,它有一套出色的管理工具和开放API,从而简化了自动化管理。
Virtuozzo 并不与VMware或者微软的虚拟产品正面竞争,因为它不提供硬件仿真机制,不过这也让它的扩展性远胜于其他虚拟化产品,每个物理主机可望提供几百个虚拟服务器。因此,Virtuozzo及基于主机的其他虚拟化产品的主要对象是大规模的Web和应用主机托管环境及一些质量保证应用。Virtuozzo采用的方法类似Solaris 容器和BSD限制分区(BSD jail),原因就在于经过改动的操作系统内核的单一实例可以支持多个虚拟专用服务器(VPS)。面向Linux的Virtuozzo支持这款免费操作系统的多个版本。它可以安装在Red Hat、Fedora或者CentOS等平台上,可以管理运行任何这些Linux版本的VPS,包括Suse Linux Enterprise Server 9和Debian,不过它们都共享一个内核。另一方面,面向Windows的Virtuozzo提供类似功能,但可以运行Windows 2000/2003 VPS。
当然,Virtuozzo的共享主机设计意味着,运行在特定服务器上的每个VPS在操作系统内核方面肯定有着同样的基本配置。因此,需要应用和服务运行在VOS上将确定这种方案是否适合特定情形。
VPS在Virtuozzo下的性能相当出众,大多数情况下,开销不到3%。
另外,Virtuozzo管理工具也极为全面。它们允许管理员定制每个虚拟服务器的细节,并且监控单台服务器的性能,它们还提供了全面的报警和报告功能。因为Virtuozzo原本就是为了让每个物理主机处理大量的VPS,所以管理工具也旨在处理大量的服务器版本以及应用软件的动态安装。
要完成构建20台服务器的任务,只要选择预定义模板,然后指定起始IP地址及另外几个全局配置选项,就这么简单。20台服务器可以在短短几分钟内全部构建完毕,即可使用。跨多个VPS安装应用软件同样很简单,只需要拖放操作。所有的应用模板可通过Red Hat软件包管理器(RPM)或者文件树来构建,这样一来,构建定制模板就非常简单。用于把定制代码与Virtuozzo后端程序集成的API也相当全面,为实现VPS创建及改动的完全自动化提供了一条非常便捷的道路。
除了Virtuozzo商业产品外,SWsoft还支持开放源代码版本的Virtuozzo:OpenVZ,该产品可以免费下载。不过,该版本缺少Virtuozzo的优秀管理工具。正是优秀的管理工具使得V
irtuozzo解决方案真正脱颖而出。
Xen 3.0让准虚拟化技术成为主流
开放源代码hypervisor把虚拟化技术融入了操作系统内核。
三年前Xen项目引起人们的注意之前,准虚拟化(paravirtualization)闻所未闻。这项技术是指,经过改动的操作系统把特权操作指令重定向至功能薄薄的“hypervisor”层,而不是直接把它们发送到CPU。特权操作指令是裸机代码,负责调整虚拟内存以及与设备之间进行通信。这种方案的效率远远高于在CPU指令层截获特权操作系统并加以重定向,而VMware、微软虚拟服务器及基于硬件仿真的其他虚拟化解决方案都属于后者。
Xen 把自己植入到Linux源代码树里面,相当于新的CPU架构。如果你把Linux和作为目标架构的Xen一起编译,最后就会得到准虚拟化功能是内置、而不是外挂的Linux。引导时,Xen小小的hypervisor在Xen Linux主机内核加载前先加载。之后,只要一个简单的命令即可启动Linux、BSD、NetWare,或者经过修改后作为Xen客户运行的其他少数主机操作系统。
Xen的一大优点是,它详细地介绍了物理系统迁移到虚拟系统(这个过程通常很麻烦)的方法:使用dd命令,把引导驱动器从另一个服务器拷贝到本地文件上,然后把Xen指向该文件,最后就可以引导虚拟机了。用不着寻求帮助。
尽管安装及运行简单,但开放源代码的Xen绝不是没有多少特性的简易方案。Xen客户虚拟机运行速度快,这还不足以描述其优点。Xen的速度之快不仅仅体现在计算速度方面。衡量虚拟化性能的一个标准就是吞吐量,而Xen在这方面不负所望。存储和网络I/O速度飞快;说到存储,Xen具有非同寻常的灵活性。客户虚拟机可以使用专用的驱动器或者阵列、现有驱动器上的专用分区,或者安装在主机上的其中一个文件系统上的磁盘镜像文件。
Xen配置参数保存在文本文件中,其管理界面是一小组简单的命令行指令。Novell正在为Xen开发GUI管理界面;不过要是服务器数量有限, Xen简短、可编制脚本的单行命令在启动、关闭、查询虚拟机控制台的状态及连接到虚拟机控制台等方面很出众。把运行中的虚拟机从一个物理服务器迁移到另一个(Virtual Iron和VMWare VirtualCenter等虚拟产品具有的一项特性)也是单行命令即可实现的;Xen声称,其实时迁移的速度最快。确实,迁移过程只需要几分之一秒,在 HTTP和SMTP(电子邮件)会话过程中几乎注意不到。由于开销很小,Xen可以完全用于维持高可用性。
XenSource网站声称, “Xen现在是、将来也一直是开放源代码。”相对商业软件,开放源代码项目往往需要作一番取舍:开放社区只有接受这种取舍,才能推广开放源代码运动。但 Xen不需要照顾和优待才能获胜。等Xen 3.0在今年第三季度交付,那既是开放源代码项目的里程碑,又是得到赞助公司XenSource支持的商业企业解决方案,它将因为物有所值的优点而成为开放源代码项目的典范。
AMD和英特尔把虚拟化功能嵌入到芯片内
如果软件不必从事所有的繁重任务,性能就会得到提升。
如今AMD和英特尔都提供了硬件辅助的虚拟化技术,这不是什么技术突破,却为今后取得技术突破拉开了帷幕。AMD的安全虚拟机(SVM)和英特尔的虚拟化技术(VT)表明CPU的设计理念及由此而来的架构将会出现巨大变化。
AMD和英特尔都已力图解决同一个问题,最终提出了相似但独特的解决方案。问题就是落后的CPU架构采用软件虚拟化,从而带来了庞大的开销。解决方案就是让CPU处理繁重任务。
这两家芯片生产商采取的第一步都是先使各自的CPU能够截获并重定向改变系统状态的请求。在单机单操作系统模式下,操作系统有权自行改变CPU、芯片组及外围设备的状态。这对实现高效虚拟化而言显然是个障碍。如果对系统所作的改变不生效,客户操作系统实例就会崩溃。维持这样一个不切实际的单机主系统是实现虚拟化的沉重负担。
需要的重要补救方法就是确保:没有哪个操作系统能够以阻止计算机与其他操作系统共享的方式改变系统状态。软件通过执行特权指令来改变系统状态。确认及重定向这些指令属于软件虚拟化一部分最繁重的任务,这也是AMD和英特尔决定首先要解决的问题。
如果操作系统基于SVM或者VT运行,任何特权操作指令在完成之前都能被截获、并被发送到由hypervisor建立的入口点。 Hypervisor是“管理管理程序的管理程序”,它成了惟一持有及授予改变系统状态这项特权的主体。譬如说,如果客户要求映射一部分虚拟内存的请求被截获,hypervisor 代码就会交出早就为该客户预留的一部分内存,从而满足这个请求。
在虚拟化服务器上,这类特权操作每秒执行几百次或者几千次,因而你能想象得到,如果用软件来处理,情形会相当糟糕。英特尔和AMD把特权指令截获功能嵌入到了CPU里面,并且?**噶钐砑恿吮4婕盎指蠢┱瓜低匙刺?(如果你愿意,也可以是操作系统实例上下文)的功能。VT和SVM的优点不止这些,但截获和上下文是最重要的优点。
AMD 充分利用了其 AMD64架构的优点,特别是CPU的板上内存控制器。英特尔的内存控制器在CPU外面,因而并不意识到VT。AMD64的板上内存控制器已得到了升级,具有嵌套分页功能(nested paging),从而为每个客户实例提供了各自的内存地址转换表。英特尔的架构需要客户内存地址转换用软件来实现。
两者实施的虚拟化技术还有其他不同之处,AMD的功能远胜过英特尔的。不过,具有硬件加速功能的虚拟化解决方案一开始都会把目光锁定这两种技术之间的重叠之处。随后,我们会看到为了利用AMD64改进之处而专门开发的产品。