在我们开始这一番评比之前,有必要来一次忆旧活动。自2004年以来,澳大利亚独立实验室Enex TestLab就开始测评虚拟化技术,为杂志刊物以及组织机构测评各种版本的虚拟化技术。在这段期间,许多概念已经进化到了更先进的水平,虚拟化市场也已趋成熟。在那段早期时代,市场上其实只有一个开路先锋:VMware。
但是微软等厂商很快加入了VMware的行列,开源社区加大力度开发出了Xen虚拟机管理程序,最终被思杰公司收购。作为Sun(现归属甲骨文)的一款解决方案,VirtualBox不断演变,用户仍能获得采用开源许可证的基本软件包。
今天,市面上有多种类型的虚拟化解决方案,有时混为一谈。非常基本的基于本地系统的应用程序虚拟化是指,应用程序实际上被分隔开来,单独运行。早期支持这项技术的厂商包括AppSense和Sun。这种应用程序相互独立的虚拟化其主要优点是安全、便于开发以及与平台独立。这项技术非常适合处理能力很弱的计算环境。
桌面虚拟化紧随其后,让企业能够真正控制其标准操作环境(SOE)、管理许可证。它还通过更集中的命令和控制功能,全面改进了补丁管理。这也是微软等厂商孜孜以求的终极目标之一,并且得到了英特尔及其博锐(vPro)嵌入式技术的支持。
接下来就是服务器虚拟化,架构师和管理员们其实借助这项虚拟化技术,把服务器应用程序与底层硬件脱离开来。它大大提高了数据中心的可靠性和稳健性,还能够获得冗余性、可移植性、可扩展性、可用性等等。
在本文中,我们盘点市面上常见的虚拟化厂商,并且列出了每家厂商的优点、缺点和结论。与VMware鼎足而立的有思杰、微软和甲骨文这三大厂商。
#p#
思杰XenServer 6.0.201
思杰一直在前一个版本XenServer 5.6的基础上竭力改进其功能和易用性,目的在于取代VMware。在一些方面,它也让微软的Hyper-V相形见绌。
思杰XenServer 6.0.201
XenServer 6.0.201现在的大小只有658MB(位于安装光盘上)。虽然它比Server 2008 Hyper-V小巧得多,但是仍比VMware的vSphere庞大得多,不过你也要考虑到安装光盘里面还有虚拟机管理程序和XenCenter管理实用工具。一旦你开始添加额外的VMware组件,你会发现思杰XenServer 6.0.201实际上是三者当中最精简的。
另外值得一提的是,XenServer对其虚拟机管理程序采取的方法与微软和VMware相比大不一样。后两者主要使用专有的驱动程序和抽象层,而XenServer可与硬件和现有的驱动程序协同运行,从而简化和加快虚拟机管理程序与物理硬件的交互。
比如说,XenServer控制域充分利用了标准的开源设备驱动程序,这应该会带来更广泛的硬件支持(不过由于缺少与其他厂商在驱动程序加固及/或打补丁方面的协作,这有可能是个缺点)。另一个例子是,XenServer使用原生的存储文件系统,而不是使用专有文件系统;虚拟机快照请求直接卸载到存储区域网络厂商的API(应用编程接口)。
需要两个独立的物理设备来运行XenCenter应用程序和XenServer主机。XenCenter机器需要微软Windows操作系统:Windows 7、Windows XP、Windows Vista、Windows Server 2003、Windows Server 2008或Windows Server 2008 R2(各种版本均可)。
安全很方便。它是三款虚拟机管理程序当中安装起来最容易、最轻松的。同一只安装光盘还可用于把XenCenter管理控制台装入到基于Windows的PC上。
值得称赞的是,XenCenter用起来容易得很,还有一个非常整洁的界面;我们认为,它比Hyper-V或VMware更易于使用。创建、备份和复制虚拟机小菜一碟,为集群添加其他主机服务器、生成性能统计信息同样也是如此。
主机方面的硬件规格与Hyper-V大同小异——限制指南表明,一个主机机器上最多支持130个逻辑处理器,但是这取决于物理处理器的类型和1TB内存。另一方面,虚拟机内存方面比Hyper-V好一点,但是仍落后于VMware面向Windows的128GB。物理图形处理器(GPU)也可以分配给虚拟机,所以访客可充分利用GPU指令,这非常适用于通过虚拟桌面交付三维图形应用程序。
每个集群最多只能有16个节点;支持多达800个虚拟机和虚拟机之间的动态内存分配。
版本6改进了访客操作系统的支持,包括Ubuntu 10.04(32位/64位);更新了对Debian Squeeze 6.0(64位)、甲骨文企业级Linux 6.0(32位/64位)和SLES 10 SP4(32位/64位)的支持;以及面向CentOS 6.0(32位/64位)、Ubuntu 10.10(32位/64位)和Solaris 10的试验型虚拟机模板。
虚拟网络方面的改进体现在分布式虚拟交换。万一虚拟交换机控制器(vSwitch Controller)出现故障,一种新的故障保险模式让跨服务器专用网络(Cross-Server Private Networks)、访问控制列表(ACL)、服务质量(QoS)、远程交换端口分析仪(RSPAN)和NetFlow等设置可以继续应用于运行中的虚拟机。
提供了内存过量分配功能,名为动态内存控制(DMC),这是一种“气球技术”(ballooning)操作,只出现在XenServer高级版或更高版本。气球技术是指当虚拟机管理程序所用的内存快耗尽时,它会设定目标页面,气球驱动程序就会“扩充”到该目标页面,从而在虚拟机里面建立人为的内存压力,并引起操作系统锁定内存页面,或者把它们推送到页面文件。不过,它不如VMware的内存管理功能来得成熟。后者使用三种机制来管理内存:透明页面共享(TPS)、气球技术和压缩。
思杰有一项强大的配置服务,让服务器的工作负载可以通过单一共享磁盘镜像来实时配置和重新配置。这为管理员们简化了操作,因为他们只需要给主镜像打补丁。动态工作负载流技术特别有用,因为可以满足峰值负载期间,甚至从测试环境迁移到生产环境的需要。
容错功能得到了很好的支持;万一主机出现了故障,虚拟机可以在另一台服务器上自动重启。或者需要的话,虚拟机可以在另一个主机上映射,实现无缝的故障切换。可以对虚拟机快照进行预定和归档,但是高可用性功能只出现在XenServer高级版或更高版本上。
对于使用XenDesktops以及IntelliCache的企业环境而言,或者对于通过高可用性功能来保护的虚拟机而言,存在这个限制:每个主机上最多只有50个虚拟机或XenDesktop虚拟机。
XenServer能够实现负载均衡,它支持两种优化模式。性能优化(Performance Optimisation)确保能够保持最低性能级别,而密度优化(Density Optimisation)把虚拟机放在最小数量的主机上。
与其他思杰产品一样,独立许可服务器的需求仍然适用于XenServer。把虚拟机和主机与许可服务器断开的“宽限期”功能(未收到来自许可服务器的5分钟心跳消息)允许在不重新连接的情况下,继续保持长达30天的操作。
为了确保跨物理主机实现无缝简单的迁移,XenServer还支持虚拟网络交换。
#p#
微软Windows Server 2008 R2 SP1 Hyper-V
微软一直在奋力追赶VMware和思杰,而最新版本的Hyper-V无疑加大了作为强有力竞争者的筹码。不过,它是个庞大的安装版本;几乎占用3GB的空间(完全服务器安装所占的空间多达10GB),而另外两款虚拟化技术以Linux作为基础,可轻松放在一张光盘上(至少对基本的虚拟机管理程序来说是这样)。
微软Windows Server 2008 R2 SP1 Hyper-V
微软的方法是安装Windows Server 2008 R2,然后把Hyper-V作为一个角色(Role)来安装,这其实是相当简单的过程。Hyper-V管理器易于启动,它有简单而合理的布局。创建和配置虚拟机也很容易,你想执行的任何操作几乎都可以通过这个管理器来完成。不过在庞大集群中,Hyper-V管理器完全心有余而力不足;你无法在批处理模式下自动管理或运行任务,所以要有频繁用鼠标点击的心理准备。
为了消除管理大型基础设施的麻烦,使用微软System Center虚拟机管理器(MSCVMM)是个办法。它不需要处理重复任务。捎带提一下,MSCVMM还能管理VMware的ESX Server。
Hyper-V功能丰富,不过在一些情况下,它确实不如最新版本的ESXi。比如说,每个主机最多只有64个物理处理器和512个虚拟处理器(vCPU),而ESXi为每个主机支持最多160个逻辑处理器和2048个虚拟处理器。
虚拟机对虚拟处理器的支持自然依赖操作系统,但每个虚拟机最多只支持四个虚拟处理器。
处理器兼容模式让虚拟机可以跨硬件迁移,物理主机可能有不同的处理器架构。这一功能是Hyper-V新增的;在前一个版本中,主机拥有的处理器架构必须一模一样;这意味着,你可以从英特尔主机迁移到英特尔主机,或者从AMD主机迁移到AMD主机,但是无法从英特尔主机迁移到AMD主机。
每个主机支持的物理内存相当大,达到1TB;但是每个虚拟机支持的最大物理内存只有64GB。不过,Hyper-V确实拥有动态内存功能:可以指定最大内存和最小内存;根据虚拟机的需要,分配的内存可以增加或减少。还可以为虚拟机赋予优先级,那样当主机开始耗尽物理内存时,就可以根据虚拟机优先级,减少分配给虚拟机的内存。
Hyper-V集群的大小仅限于故障切换集群中的16个节点,每个物理机最多有1000个虚拟机和384个虚拟节点。不管物理集群大小如何,每个节点可以允许的最大虚拟机数量不会变化。
访客操作系统包括Windows和诸版本的SUSE、红帽及CentOS;其他版本的Linux不受支持;但据说许多版本的Linux可以顺畅运行,没有任何问题。
高可用性需要在部署期间确认“通过Windows认证”测试——这在很大程度上需要硬件节点在操作系统版本、处理器系列和接口(如网络和主机适配器)等方面的规格一模一样。服务器还必须是活动目录域的成员,这势必在活动目录架构的某个地方要有域控制器。
“实时迁移”功能离不开Win2K8R2新增的集群共享卷(CSV),建议使用专用网络用于迁移。除此之外,还需要使用专用网络用于内部集群通信、单独的虚拟网络配置和单独的存储网络。
虚拟网络采用标准的虚拟交换方法,操作系统网络堆栈分离开来,以便获得更高的吞吐量,不过输入/输出性能将取决于试图与外界通信的虚拟机数量。
至于负载均衡服务,就需要标准的微软网络负载均衡(NLB)组件,其配置方式与物理节点一模一样。
通过Hyper-V管理器添加“快照”(snap shotting)功能使得这款微软产品的成熟性有了一定的提高,该产品拥有拍摄和管理快照,并将快照重新部署到活动虚拟机所需的全部功能。虽然可以通过快照功能中的脚本编制来实现自动化,但是它主要用于测试和开发环境,而不是很适合事务型生产基础设施——肯定不该将其认为是生产环境中唯一的灾难恢复(DR)解决方案。
#p#
VMware vSphere ESXi 5
VMware是虚拟化领域的行家里手,所以在网上看一下其产品就会让你晕头转向,因为那里有一系列广泛的应用程序。毫无防备的人会掉入的一个陷阱是,描述的一些功能并不出现在标准产品上;它们需要另外购买,才能增添你可能需要的额外功能。
VMware vSphere ESXi 5
对许多人来说,vSphere ESXi是佼佼者,其他厂商是完全在奋力追赶。虽说VMware确实有一款适合、各种场景的产品,但是就适合特定基础设施和场景的功能而言,其他厂商的产品中有一些可以说再合适不过了。
比如说,VMware安装起来不如XenServer来得容易,但是仍然比较快捷、轻松。主机服务器上随后出现的界面是纯粹的Linux命令行接口(CLI);为了便于远程管理主机,必须在Windows PC上安装vSphere客户软件,这是最低要求。
客户端界面整洁、易于浏览,所以创建和管理虚拟机也是件简单的事。不过,想确保全面管理大规模VMware虚拟基础设施,必须安装vCenter服务器(vCenter Server),这就需要额外成本。vCenter是一站式管理工具,也是你需要的唯一工具。它不费吹灰之力,就能管理诸多任务,比如虚拟机迁移、负载均衡和高可用性等。
与前面提到的一样,VMware功能丰富,但是容错性等方面只出现在企业版及更高版本上。灾难恢复需要站点恢复管理器(Site Recovery Manager)插件,虚拟分布式交换则需要vSphere企业增强版。
至于大规模企业基础设施的高可用性要求,VMware高级存储管理组件VMFDS是一个集群文件系统,可以充分利用共享存储,允许多个vSphere主机可以同时读取和写入到同一存储系统上。它提供了诸多特性:把运行中的虚拟机从一台物理服务器实时迁移到另一台物理服务器的功能,在另一台物理服务器上自动重启出现故障的虚拟机,以及把不同物理服务器上的虚拟机集群起来。
至于平台的可靠性,VMware与硬件厂商们合作,共同确保驱动程序加固,而微软和思杰的产品依赖普通的Windows或Linux驱动程序。
VSphere是终极可扩展性方面的领头羊;每个主机最多可以拥有160个逻辑处理器、2TB内存和多得惊人的2048个虚拟处理器,每个主机最多512个活动虚拟机之间可以共享这一切资源。单个虚拟机支持的规格同样惊人,支持多达32个虚拟处理器和多达1TB内存。一个集群包含32个节点,支持共3000个虚拟机。
能够为每一个独特的虚拟机单独管理这些部件确实是VMware的强项。由于不用依赖基本操作系统来转换和联系,也就消除了另两款产品遇到的输入/输出瓶颈。
#p#
甲骨文VirtualBox 4.1.18
甲骨文的VM VirtualBox是一种桌面虚拟化环境,与x86和AMD 64位/英特尔64位处理器兼容。虽然它是市面上唯一免费的专业级开源虚拟化工具,但是它并非与其他三种虚拟化技术直接竞争。那些针对的是大型IT基础设施,而VirtualBox针对的是个人或小型办公室应用。
甲骨文VirtualBox 4.1.18
甲骨文VM VirtualBox版本4.1.18支持Windows、Linux、Macintosh和Solaris等主机,支持数量众多的访客操作系统,包括Windows(NT 4.0、2000、XP、Server 2003、Vista和Windows 7)、OS X、DOS/Windows 3.x、Linux(2.4和2.6)、Solaris、OpenSolaris、OS/2以及OpenBSD等主机操作系统。可以通过“访客附加模块”(Guest Additions)来加固访客操作系统,这些驱动程序或补丁程序包旨在改进兼容性或功能。
VirtualBox可以为每个虚拟机提供最多32个虚拟处理器,不管主机设备上的物理处理器核心如何。可配置的物理地址扩展处理器兼容性让32位操作系统的寻址能力可以达到4GB以上。一些Linux操作系统(比如Ubuntu)需要启用这项功能,才允许进行虚拟化操作。虚拟处理器热插拔允许为某个特定的虚拟机“实时”扩展处理器资源。还有存储区域网络(SAN)启动功能,这取决于使用PXE启动的访客操作系统以及通过主机的iSCSI目标机制(使用试验功能)。
安装
安装非常简单。提供的VirtualBox(类型2虚拟机管理程序)用于测试,作为一款可执行应用程序,安装到现有的Windows 7操作系统上。安装向导会逐步引导你完成安装过程,没有任何问题,为目录和注册表提供了非常易于使用的界面。
虚拟化
VirtualBox第一次运行时,一个出色的向导逐步引导你完成虚拟化过程。首先,你为虚拟机指定名称和操作系统类型。还必须分配虚拟机所用的内存。推荐的基本内存量取决于所选择的访客操作系统。最大内存取决于同时不会影响主机PC性能的最大分配量。然后,安装向导创建虚拟硬盘,操作人员必须选择动态大小或固定大小的镜像。动态扩展的镜像在物理驱动器上所占的空间会比较小。然后,该镜像会动态扩展,扩大到指定的虚拟机驱动器大小。固定大小的镜像不会扩展。它以一个文件的形式存储在物理驱动器上,其大小与指定虚拟机的硬驱差不多。
一旦虚拟机创建完毕,它会在VirtualBox客户软件里面作为空白机器来启动。一旦虚拟机启动成功,可以将安装操作系统的磁盘驱动器指定为物理磁盘驱动器(含有可启动介质),或者指定为位于硬驱上某个地方的ISO镜像。介质路径指定后,操作系统就会像往常那样启动和安装。从访客系统访问主机文件是个复杂过程,因为虚拟机与物理硬驱之间没有拖放操作支持。相反,文件共享依赖共享文件夹;而这又是个复杂过程,需要“访客附加模块”才能正常运行。
VirtualBox在其客户软件里面支持全面虚拟化,这样可以从访客系统获得全面的操作系统功能。与每个虚拟机有关的所有资源很容易在VirtualBox客户软件里面加以改动,比如内存、已分配的视频内存和硬驱大小。
功能介绍
可以使用两种配置的Windows、Linux和OS X版本:一种是部分专有,另一种是完全开源。开源版:VirtualBox 开源版本(OSE)缺少使用USB外设的功能,采用了开源的VNC协议,而不是微软的RDP协议。
VirtualBox在一台PC上可以安装几个虚拟机方面没有限制,所以唯一的限制因素就是主机硬驱空间和主机内存分配。
VirtualBox支持下列访客系统:
•Windows NT 4.0:所有版本和服务包都全面得到支持。比较老的服务包存在一些已知问题;推荐使用SP6a。可使用有限的访客附加模块。
•Windows 2000/XP/Server 2003/Vista/Server 2008/Windows 7:所有版本和服务包都全面得到支持(包括64位版本,满足下面所列的前提条件)。可使用访客附加模块。
•DOS/Windows 3.x/95/98/ME:已执行了有限的测试。不推荐使用非传统安装机制;没有访客附加模块。
•Linux 2.4:提供有限的支持。
•Linux 2.6:所有版本完全得到支持(32位和64位)。可使用访客附加模块。推荐使用内核2.6.13或更高版本,尽管内核防止虚拟机操作。
•Solaris 10和OpenSolaris:完全得到支持(32位和64位)。可使用访客附加模块。
•FreeBSD:需要启用硬件虚拟化。提供有限的支持。还没有访客附加模块。
•OpenBSD:需要启用硬件虚拟化。版本3.7及以后版本得到支持。还没有访客附加模块。
•OS/2 Warp 4.5:需要启用硬件虚拟化。只有MCP2得到正式支持;其他OS/2版本是否可以正常运行不好说。可使用访客附加模块,但功能特性有限。
VirtualBox支持64位访客操作系统,甚至支持32位主机操作系统,前提是满足下列条件:
1. 你需要支持硬件虚拟化的64位处理器。
2. 你必须为想要64位支持的某一个虚拟机启用硬件虚拟化;并不为64位虚拟机支持软件虚拟化。
3. 如果你想在32位主机操作系统上使用64位访客支持,还得为这一个虚拟机选择64位操作系统。由于在32位主机上支持64位需要额外开销,VirtualBox只是在明确要求下才启用这项支持。
4. 在64位主机(通常随带硬件虚拟化支持)上,64位访客操作系统总是得到支持,不管设置如何。但是想进行64位操作,必须启用先进可编程中断控制器(APIC),尤其是64位Windows访客的情况下。Windows虚拟机还要求使用英特尔网卡驱动程序。AMD得不到支持。
局限
存在访客多处理器(SMP)方面的下列限制:
•AMD处理器上的32位访客系统性能差劲。这主要影响Windows和Solaris访客操作系统,但是可能也会影响一些Linux内核版本。这在面向32位Windows NT、2000、XP和2003访问操作系统的版本3.0.6中已得到了部分解决。它需要安装版本3.0.6或更高版本的访客附加模块。
•在不含有虚拟APIC硬件优化支持的某些英特尔处理器型号上的32位访客系统性能差劲。这主要影响Windows和Solaris访客系统,但是可能也会影响一些Linux内核版本。这在面向32位Windows NT、2000、XP和2003访客操作系统的版本中已得到了部分解决。它需要安装版本3.0.12或更高版本的访客附加模块。
•在一些带VT-x的32位主机系统上的64位访客操作系统会导致你的系统不稳定。
•Windows访客系统中的基本Direct3D支持想发挥作用,就必须在Windows“安全模式”下安装访客附加模块,手动干预可以防止Windows系统DLL恢复。但是这并不适用于试验型的WDDM Direct3D视频驱动程序,随VirtualBox 4.1交付的Vista和Windows 7访客操作系统有这种驱动程序。
•在Windows访客操作系统上,通过访客控制执行支持启动的进程无法显示图形用户界面(GUI),除非进程在里面运行的用户帐户目前已登录,而且有桌面会话。
•标准支持,可与没有密码的帐户一起使用;它需要群组策略干预,才能访问GUI。
•目前只为VDI文件实施了VBoxManage modifyhd compact命令。眼下,想优化采用其他格式(VMDK和VHD)的虚拟磁盘镜像的大小,唯一办法就是克隆镜像,然后在虚拟机配置中使用克隆镜像。
•还没有支持开放虚拟化格式(OVF)本地化(一个OVF文件中有多门语言)。忽视了OVF的一些部分,比如StartupSection、DeploymentOptionSection和InstallSection。
一些VirtualBox功能被标为是实验型功能。这类功能“按现状”提供,并不是正式得到支持。试验型功能列表如下显示:
•面向Windows访客操作系统的Windows显示驱动模型(WDDM)Direct3D视频驱动程序
•为Windows、Linux和Solaris访客操作系统提供的硬件三维加速支持
•为Windows访客操作系统提供的硬件二维视频回放加速支持
•支持PCI直通技术(仅用于Linux主机)
•Mac OS X访客操作系统(仅用于Mac主机)
•ICH9芯片组仿真
•可扩展固件接口(EFI)固件
•支持主机CD/DVD驱动器直通技术
•通过内部网络支持iSCSI
•合成处理器报告
#p#
测评结论
结论与往常一样:最适合你、价格又合理的产品是最佳产品。如果你逐个分析一下,本文介绍的这些解决方案都有其亮点。VirtualBox提供了一条经济可行的道路,但是它其实只适合个人或小公司。而在其他三款解决方案当中,需要考虑关键的特性和功能。
其实归根到底,我们的第一选择是VMware,它适合大型企业基础设施,就因为它的可扩展性比微软Hyper-V或思杰XenServer更好,而且是一款更成熟的产品。考虑到其丰富的功能特性,价格可能也不是个大问题。然而,不能因此就忽视其他产品。每个产品都有值得考虑的强项;说到预算问题,它们实际上可能更适合你的要求。评估虚拟机产品是个挑战,但是你应该关注主要环境和预测的未来要求,然后再出手也不迟。