羊的窝

for 羊 in 佛 旅行 英语 香水 道 清明梦 Linux; do wget http://Matt.BackOZ.info:88 >> $羊; done

关于虚拟化的研究

yang | 01 十月, 2009 01:30

上个月,花时间研究了一下服务器虚拟化的东西,既为了交论文,又为了自己实施虚拟化做准备。把论文删除个人信息的初稿放上,供自己以后参考。

  一、虚拟化概况
  虚拟化,简单的说就是实现对硬件的仿真。它既可以是对一个完整的计算机硬件系统的仿真,也可以是对指令集的模拟。广义的说,我们经常谈到的
VMware WorkstationSun VirturalBox和街机游戏模拟器MAME都是不同的虚拟化技术应用。
  虚拟化一词源自
20世纪60年代中期的IBM实验性系统 IBM M44/44X,该系统基于IBM 7044,并且使用软硬件模拟了多台7044虚拟计算机(44系列),当时是为了对大型机硬件进行分区以提高硬件利用率。尽管M44只是一个研究性的实验系统,其计算机虚拟化的理念、请求页面调度和监管进程调用在当时却极具开创性。然而,真正使用大型机和小型机的用户毕竟还是少数,因此,虚拟化应用曲高和寡。

  (一)虚拟化在x86平台上的发展
  随着x86处理器性能的提升和应用普及,人们开始考虑将这一技术引入用户面更广泛的x86平台。由于Bochs、VMware等厂商与开发小组的努力,x86平台下的PC和工作站运用虚拟化技术对操作系统及应用程序进行测试的开发人员也越来越多。但是,从20 世纪 80 年代至90 年代,由于客户端-服务器应用程序的发展以及价格低廉的x86 服务器和台式机成就了分布式计算技术,虚拟化技术在服务器层面在那个时间段实际上已被人们弃用。20 世纪 90 年代后,Windows 的广泛使用以及 Linux、BSD 等作为服务器操作系统的出现奠定了 x86 服务器的行业标准地位。根据市场调研机构Gartner公司在2005年8月发布调查的结果,与购买由Sun、IBM等公司的功能强大但价格昂贵的多处理器服务器相比,廉价的基于x86构架的附带管理软件的服务器产品在市场上受到更多大中小企业的青睐。X86构架的服务器产品在当时市场上的份额占据了70%。
  与此同时,x86 服务器的增长带来了新的 IT 基础架构运作的问题,这些问题主要包括:
  1、硬件利用率低。商业及政府机构通常在一台服务器上只部署一套应用程序,以避免出现一个应用程序中的漏洞影响到此服务器上的其他应用程序的风险。根据IDC(市场调研公司美国国际数据集团 ,International Data Corporation) 的报告,典型的 x86 服务器部署平均达到的利用率仅为总容量的 10% 到 15%。
  2、物理基础架构成本日益攀升。为支持不断增长的物理基础架构而需要的运营成本不断攀升。大多数服务器系统都必须时刻保持运行,因此,耗电量、制冷和设施成本不随利用率水平而变化,也就是说利用率仅为2%的服务器硬件所耗费的电能与利用率为98%的服务器基本相同。另外,摩尔定律认为,计算机的性能大约每18个月会提升一倍。换言之,更高的性能代表更热的组件、更高密度的封装与单位面积的更多耗电需求。以前建一个数据中心,人们往往注重项目建设投资的成本,对于建成之后运营维护的成本考虑得并不多。其实,运营维护的成本,特别是电能方面的成本是非常庞大的。从统计数据看,在数据中心的硬性成本中,无论是大型数据中心还是中型机房,电费都超过了50%,在有些设计不合理的数据中心中,电费所占的比例则更高。
  以上两点所导致的直接后果就是,成本增加,资源(资金)浪费。近年来,随着x86处理器性能的进一步提升,虚拟化技术的应用得到了前所未有的发展。
  为了解决上面提到的IT基础架构的两个主要问题,人们再次想到了虚拟化技术。事实上,亚马逊、Google以及IBM公司推出各自的云计算服务也是虚拟化技术的一种应用。云计算一直是近两年来一个时髦的IT名词,新名词如公有云、私有云、混合云等震耳欲聋的宣传声也充斥着IT界,甚至还出现了云防火墙。虽然每家供应商都在不厌其烦的阐述他们的云战略和变化方案,宣传效应真假难辨,但云计算中的平台即服务(PaaS,Platform as a Service)、基础即服务(IaaS,Infrastructure as a Service)和软件即服务(Saas,Software as a Service)就是基于虚拟化技术的。在灵活调配硬件资源上,Amazon使用了Xen来实现其数据中心,利用Xen虚拟化技术实现IaaS,而Google等SaaS提供者,后台也都使用了Xen来组织其计算能力。同样,早在几年前,国内各ISP厂商已经利用虚拟化技术,把一台普通的PC服务器切割成多个,然后把不同的虚拟子系统租给中小企业放置网站以共享服务器的资源、降低成本。
  (二)服务器虚拟化构架的分类
  对于普通用户来说,我们谈虚拟机技术时主要是指平台虚拟化和应用虚拟化,前面提到的模拟器或仿真器(emulator、simulator)是一种应用虚拟化,它主要是指透过软件模拟硬件处理器的功能和指令系统的程序使计算机或者其他多媒体平台(掌上电脑、PPC、智能手机等)能够运行其他平台上的软件。
  在自动化技术、化学工程中同样使用模拟器这一术语,但一般来说,模拟器多用于电视游戏和街机,也有一些用于掌上电脑。除了模拟器,应用虚拟化还包括应用程序跨平台的虚拟化如Java虚拟机和便携应用等。
  在这里,我们主要介绍能够促进信息化发展的平台虚拟化,或者更流行的说法——服务器虚拟化。服务器虚拟化是指,在给定的硬件平台上由一个控制程序(比如说虚拟机管理程序)建立一个仿真的计算机环境,或者说一台虚拟的计算机,在这个虚拟的计算机中,用户可以运行相应的应用程序,甚至可以是一套完整的操作系统,如Windows2000或Suse 的Linux发行版。对用户而言,这些应用程序或操作系统就象直接运行在物理硬件上一样。当然,虚拟子系统存取其他硬件资源如网卡、显卡、键盘和存储设备时,是被严格限制在相应的级别以内的。
  了解不同种类的服务器虚拟化技术便于选择适合自己的服务器整合的方案和发展规划。由于实现服务器虚拟化的技术种类繁多,实施层面也各不相同,要对服务器虚拟化构架进行分类并不容易。传统上,根据不同的实现方法,服务器虚拟化分为全虚拟化、半虚拟化(地址空间虚拟化)、准虚拟化(Paravirtualization)、操作系统级别的虚拟化以及硬件辅助虚拟化。由于各种虚拟化技术之间相互关联,相互交差,近年来又出现了另一种划分服务器虚拟化构架的方法,将其分成四类,即主机式虚拟化(Hosted Virtualization)、裸机虚拟化(Bare-metal Virtualization)、操作系统虚拟化(OS Virtualiztion)以及混合虚拟化(Hybrid Virtualization)。这种分类方法对于理解全虚拟化和准虚拟化之间的区别很有帮助,因为当前在企业数据中心的领域,比较成熟的并且正在应用的技术就是全虚拟化和准虚拟化,然而值得一提的是,有硬件支持的混合虚拟化将会是虚拟化技术的发展方向。
  1、主机式虚拟化
  这种虚拟化类型是普通用户最熟悉的。基本上所有的桌面虚拟化产品都采用了这种虚拟化架构,如VMware Workstation,Mac 上的Parallels Desktop, VirtualBox,VMware Fusion,QEMU, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro,Virtual Iron, Oracle VM以及 Virtual PC等。可以看到,主机式虚拟化方法是依赖于现有的操作系统。管理程序,即虚拟机程序位于操作系统之上,管理着各个虚拟子系统(虚拟机)。
  主机式的虚拟化有许多优点,用户可以在桌面计算机或服务器上安装虚拟化产品,像安装其它任何应用程序一样,然后继续使用主操作系统。同时,主机式虚拟化产品利用主机操作系统设备驱动的优点,使得主机支持的任何硬件,虚拟化产品基本上都能支持。但是主机式虚拟化也有其不足。因为在虚拟机程序和主机操作系统中都有一个内存管理器和CPU调度工具(scheduler)。这样的结构增加了管理上的CPU开销,使得虚拟子系统(VM子系统,Guest OS)的执行效力相对低下。
  尽管主机式虚拟化有其不足之处,主机式虚拟化产品却依然应用广泛,2009年最新的版本的VirtualBox 3.04 以及VMware Workstation 6.5就可以证明这一点。然而,需要注意的是,主机式虚拟化在服务器领域的生产系统中应用较少,如果你是一个开发人员,想采用一种灵活的方式在多种环境下测试你的应用程序,那么可以考虑采用Virtual PC或VMware Workstation等主机式虚拟化产品,但如果要部署大量应用,则应该考虑下一种虚拟化方式。
  2、裸机虚拟化
  裸机虚拟化架构是目前企业数据中心的主流。尽管目前虚拟化市场的大部分份额被VMware ESX占领着,Xen Server相对于竞争者VMware ESX服务器来说非常轻量级,因此Xen在性能上有不错的口碑。微软在虚拟化领域起步较晚,2005年开始发布主机式虚拟化产品Virtual PC,2008年推出了裸机虚拟化产品Hyper-V,并于2009年7月发布了Hyper-V R2,但是,从目前的市场反应看,由于其没有达到生产环境需求,许多用户担心它不够成熟可靠。
  在裸机虚拟化中没有现有的操作系统,虚拟机管理程序直接位于硬件之上,因此叫做“裸机虚拟化”。企业的数据中心采用裸机虚拟化产品(如ESX和Xen)是因为它提供的速度,它没有主机式虚拟化构架中在虚拟子系统与硬件之间的操作系统,因而减少了对虚拟机管理上开销。但是这种虚拟机管理程序本身也就是一套微型的操作系统,比如说ESX和Xen基于Linux 修改的, 而Hyper-V则是基于Windows修改而成的。但是为甚麽把ESX、Xen和Hyper-V都归入裸机虚拟化一类呢,难道它们使用了相同的架构吗?
  可以说是也可以说不是。在这里有必要说明一下在前面提到的传统分类方法中的全虚拟化与准虚拟化。全虚拟化和准虚拟化有什么区别呢?在全虚拟化中,虚拟子系统根本不知道它是虚拟的,换句话说,全虚拟化是在Host OS(主机操作系统)上模拟相应的硬件以允许未经修改的正常的Guest OS(客户操作系统)在独立环境下运行。这里,未经修改的Guest OS是指此操作系统与我们通常运行在物理计算机上的操作系统相同,没有在操作系统内部进行修改调整以适应Host OS上模拟的硬件平台,并且各Guest OS之间,Guest OS与 Host Os之间是相互隔离的。再简单一点说,在全虚拟化中,虚拟硬件的功能与底层机器上的真实硬件完全相同,操作系统可以不经任何修改就直接在虚拟硬件上运行。而准虚拟化需要调整虚拟子系统,以便进行虚拟化,也就是说,准虚拟化的Guest Os需要调整。
  那麽,全虚拟化与准虚拟化的真正区别在哪?由于虚拟机的指令和传统操作系统的指令内涵不一致(例如关机,虚拟机只要求释放内存与cpu时间,而传统指令需要断电);所以如何让硬件执行传统OS的指令是关键。全虚拟化是将传统OS的指令进行翻译,交给物理机执行,扮演了翻译的角色。本来在物理机上运行一次的交互就需要来去两次传送指令,而进行全虚拟化后就需要4次传送指令和2次翻译,效率损失比较大。而准虚拟化是将操作系统或者硬件转变为能够理解对方指令的角色(两者之间至少有一个知道自己是运行在虚拟环境下的),让硬件知道上层运行的虚拟机,所以传输的指令不需要按照全虚拟化的方式运行。这种架构可以保证一次交互进行2次指令传输,效率损失比较低。比如说Xen,只有打过内核补丁的虚拟子系统才能使用Xen,Linux本身是开源的,所以Linux在使用准虚拟化的Xen上的性能要好于全虚拟化技术,但是对其他非开源的操作系统如Windows系列,除非微软发布基于Xen的内核补丁或者采用最新的Intel-v或AMD-vt技术的芯片,Xen是无法支持的。
  要追溯全虚拟化的历史,则要回到1966年的IBM CP-40 和CP-67 大型机。大型主机以外的全虚拟化技术则包括前面提到 Parallels Workstation, Mac 上的Parallels Desktop等主机式虚拟化产品,可以看出,由于分类方法不同,全虚拟化、主机式虚拟化和裸机虚拟化是相互交差的,比如VMware的WorkStation 既属于全虚拟化又属于主机式虚拟化,而VMware 的ESX却属于全虚拟化和裸机虚拟化。
  所以说,虽然ESX属于全虚拟化,而Xen和Hyper-V需要修改虚拟子系统或硬件支持属于准虚拟化,但其实现虚拟机管理的方式类似,在这里,这三种形式都属于裸机虚拟化。
  裸机虚拟化也有它的不足之处。通常,厂商会发布一个硬件兼容清单(HCL),说明它们的虚拟产品支持什么硬件。一方面,是为了让管理程序尽可能精简高效,让虚拟机管理程序内核中的设备驱动数目尽量最小化,但更主要的是因为象VMware这种裸机虚拟化产品采用的是其专有的内核(Kernel),无法维持对大量硬件的支持。
  3、操作系统虚拟化
  操作系统虚拟化顾名思义就是在操作系统级别进行虚拟化。但是与主机式虚拟化不同,虽然必需有现成的操作系统,在操作系统虚拟化技术中,每个节点上只有唯一的操作系统内核或者说是操作系统实例,不虚拟任何硬件设备。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器就是一个虚拟子系统,也称为VE(Virtual Environment,虚拟环境)或VPS(Virtual Private Server,虚拟专用服务器 )。由于多个虚拟子系统以模板的方式共享一个文件系统,因此性能相较于主机式虚拟化得以大幅度提升。这种虚拟化架构的另一个好处就是由于多个容器可以使用相同的文件,降低了对磁盘空间的需求。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者上百个VE/VPS。
  操作系统虚拟化产品有Linux-VServer、FreeVPS、FreeBSD jail 机制、 iCore Virtual Accounts、OpenVZ、和Solaris Containers,其中又以SWsoft的Virtuozzo/OpenVZ和Sun基于Solaris平台的Container技术为代表。Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。
  但是必须注意的是,操作系统虚拟化对其上运行的虚拟子系统的类型有要求。也就是说,虚拟子系统与主机操作系统必须是同一个操作系统。这就意味着,如果使用Solaris容器,那么所有的虚拟子系统或VE/VPS必须运行Solaris;如果在Windows 2003 Standard Edition上执行Virtuozzo容器,那么它的所有容器必须也运行Windows 2003 Standard Edition,如果在Redhat Linux上执行Virtuozzo容器,它的所有虚拟子系统也必须是Redhat Linux。
  由于操作系统虚拟化的特点,许多企业把其作为实部署虚拟桌面和Web服务器的最佳架构,因为这些平台共享很多常用文件。
  4、混合虚拟化
  混合虚拟化同主机式虚拟化一样要使用主机操作系统,但不是将虚拟机管理程序放在主机操作系统之上,而是将一个内核级的驱动器插入到主机的操作系统内核。这个驱动器作为虚拟硬件管理器(VHM,Virtual Hardward Manager)协调虚拟机和主机操作系统之间的硬件访问。可以看出,混合虚拟化依赖于内存管理器和现有内核的CPU调度工具。类似于裸机虚拟化和操作系统虚拟化架构,没有冗余的内存管理器和CPU调度工具使混合虚拟化的性能大大提高。不过,和操作系统虚拟化不同的是,混合虚拟化没有要求虚拟子系统必须与主机操作系统相同。
  表面上看,混合虚拟化似乎集其它架构的所有优点于一身,但是,混合虚拟化技术需要具有虚拟化扩展功能的硬件处理器(如Intel-VT和AMD-V)。也就是说不带硬件虚拟化的CPU对混合虚拟化产品毫无用处。从这一点看,混合虚拟化实际上也是传统分类中的硬件辅助虚拟化技术(Hardware-assisted virtualization),这种方式的虚拟化早在1972年的IBMSystem/370上实现,到2006年,硬件辅助虚拟化的家族中才增加了x86平台处理器的支持,也就是大家常说的Intel VT or AMD-V技术。在x86平台上采用硬件辅助虚拟化技术的包括 Linux KVM, VMware Workstation, VMware Fusion, Microsoft Virtual PC, Xen以及 VirtualBox等。其他平台有 Power Architecture (IBM/Power.org)、Virtage (Hitachi)和 UltraSPARC T1, T2 and T2+ (Sun)。但是在x86平台上,除了KVM,其它虚拟化产品都不属于混合虚拟化一类。
  二、应用虚拟化技术的背景
  我们的数据中心由 200多台硬件设备组成(含9台小型机,不含24台楼层交换机)。其中,网络设备如交换机、路由器、防火墙等占了35 %,PC服务器设备占了60 %。上述设备支撑着省局内部的 100多个业务系统的运行,包括OA管理系统、电子邮件系统、WEB门户系统等上百个应用系统。
  经对我们的数据中心的服务器月耗电量进行测算,仅服务器每月耗电就接近10万度(不含空调),电费近7万元。部分应用系统的利用率极低:计算资源和存储单元大量闲置,系统CPU负载低于5%,峰值时间也没有超过50%。这种大马拉小车的方式极大地造成了硬件资源(存储及计算资源)和资金的浪费。但是为了确保新系统的安全运行,又不能在淘汰下来的服务器上部署新系统,而必须新采购硬件设备,同时,系统正式运行后,当在运维中要对应用系统作调整改动时,为保证应用不中断,还必须部署一套与应用系统完全相同的测试环境,如果采用HA架构(High Availability,高可用性)则至少还需要一台冗余的硬件(这里只考虑HA的主从方式和双机双工方式,而集群工作方式需要更多的硬件设备),如此一来,如果整个机房有五十个类似的小应用时,仅测试环境和冗余备份就需要一百台额外的硬件设备24小时运行。
  另外,现有的部分应用系统由于负载增加和系统优化的需要,必须进行负载均衡和冗灾备份,如果继续购买新设备以满足灾备和负载均衡的需求,将会耗费大量的资金,并且这些新增的硬件资源也不能得到有效的运用。
  随着应用的不断增加,机房空间日益局促,空调保持超负荷运转。2009年,我局耗资上百万对机房进行了改造,扩展了服务器机房空间,增加了空调,暂时解决了机房电力和制冷系统的压力。然而,在改造机房的同时,我们认识到,随着信息化的不断深入推进,新要求、新应用的不断增多,在整个数据中心大多数服务器硬件设备的利用率不到15%的情况下,如果还继续采取购买新硬件器的方式支撑应用系统发展,必然会再次陷入对机房空间资源和电力资源需求的困境。
  三、虚拟化建设的的选择
  如何实现IT架构的系统优化、应用系统的整合、维护管理的简化、资源消耗的合理控制呢?下面,我们先了解一下目前可供选择的虚拟化产品。
  (一)四个备选的虚拟化产品
  在2009年的服务器虚拟化市场上,至少有四款产品可以考虑,它们是VMware 的ESX,思杰(Citrix)的XenServer,红帽(Redhat) 的KVM和微软的Hyper-V。
  1、ESX
  在这个竞争日益激烈的市场上,VMware所占有的市场份额依旧远远大于其他三种产品。一方面大多数大型企业已经积累了使用VMware虚拟化技术的经验 ,另一方面VMware丰富的虚拟化产品线和功能的确让人心动。但是VMware基于CPU数量的许可证费用十分高昂,在四川地区,VMware公司的报价是支持2个处理器的Infrastructure 3 标准版是3.7万元,而企业版则是5.7万元,对于4处理器的服务器价格则相应翻番。一句话来说,VMware的整个虚拟化产品线甚麽功能都有了,就是太贵。如果资金充裕,信息中心的虚拟机管理员选择VMware工作会相对比较轻松。
  由于VMware的产品丰富,无论桌面还是服务器领域都有不少软件,下面列表说明、vSphere、Infrastructure和ESX之间的区别。

 桌面产品

 VMware Workstation 大名鼎鼎的VMware虚拟机工作站,开发和测试人员最常用的版本
 VMware Fusion Mac版本的Workstation
VMware ACE Assured Computing Environment的缩写,VMware ACE为网络客户端提供分布式的安全虚拟桌面。此应用在国内不常见。
 VMware Player 这是VMware为没有WorkStation或Fusion的用户提供的免费软件,可以运行(不能创建)其他用户创建的虚拟机,但是只限个人用途。
 其他产品如VMware View (之前的VMware VDM)和VMware ThinApp都是与VMware ACE类似的桌面虚拟化产品,这里不再介绍。

 

服务器和数据中心产品
VMware vSphere 4 套件(VMware Infrastructure 4)主要包括下列产品
 VMware ESX Server 4 ESX就是我们一直所说的VMware专有的内核vmkernel,对CPU和内存直接进行处理。
 VMware ESXi
 Server 4
 VMware ESXi 是一个精简版的ESX,整个管理系统小于32 MB
 VMware vCenter Server VMware的虚拟机管理中心
 VMware vCenter Server Agent 允许对VMware vCenter 服务器的集中管理
 VMware Virtual SMP 允许虚拟子系统使用多至4个CPU
 VMware VMotion 虚拟机在线迁移
 VMware Storage VMotion 虚拟储存在线迁移
 VMware High Availability (HA)
 虚拟机高可用服务器集群
VMware Distributed Resource
Schedule (DRS) with VMware Distributed Power Management (DPM)
虚拟机负载均衡、智能化排程管理和分布式电源管理
 Vmware Data Recovery 虚拟机数据恢复器
 VMware Fault Tolerance 虚拟机容错管理器
 vSphere 4 的物理限制:
物理主机支持最大内存数量:1TB
物理主机支持最大处理器数量:64
单个虚拟子系统的最大内存数量:256G
单个HA集群最大主机数量:64
单个DRS集群最大主机数量:64
每个虚拟子系统支持最大处理器数量:8
 VMware Infrastructure 3主要包括下列产品
 Mware ESX Server 3 功能同上
 VMware ESXi version 3.x 功能同上
 VMware Virtual Center 2 功能同上
 VMware Virtual SMP  功能同上
 Infrastructure 3 的物理限制:
物理主机支持最大内存数量:256GB
物理主机支持最大处理器数量:16
单个虚拟子系统的最大内存数量:64GB
单个HA集群最大主机数量:32
单个DRS集群最大主机数量:32
每个虚拟子系统支持最大处理器数量:4
 VMware Server 之前的VMware GSX 服务器,这是其入门级的虚拟化产品





  2、XenServer
  为甚麽全球最大的在线零售商亚马逊(Amazon)和最大的搜索引擎Google都采用Xen?前面说过,Xen的准虚拟化技术相对于VMware的ESX服务器来说性能较好。另外,由于x86平台下Intel和AMD虚拟化CPU的支持,Xen在硬件的支持下提供了更多灵活性。值得注意的是,Amazon和Google采用的Xen是基于OpenSource的,在可供选择的商业解决方案中,有Sun xVM、Oracle Vm和思杰(Citrix)的XenServer,其中Citrix的XenServer是Xen的商业产品中最成功的一个。虽然思杰在虚拟化市场论份额小,但其独特的产品和技术在这个市场里却也占据着重要的角色。相较于ESX,XenServer有一个号称“10 to Xen”的体验,可以让用户在10分钟内就搭建好一个完整的XenServer环境,然而,要真正使用并且管理好Xen,则必须确定IT员工中有Linux专家。如果缺乏Linux的系统管理员,虽然可以“使用”在Xen虚拟化上的一些基本功能,但集成其他开源工具和自动化整合将是不可能的。
  XenServer分了几种版本,数据中心常用的是标准版和企业版,售价一般在2万元/服务器+0.5万元/年。为了与VMware的产品竞争,从2009年4月份开始,思杰的XenServer开始免费,除了一些高端功能转移到Citrix Essentials中,其他所有功能均可免费获得。但正是这一些高端功能如高可用性和负载均衡智能化排程是生产环境中不可或缺的。总的来说,如果有一定的Linux专家,采用Xen将节约大量的资金。
  与VMware不同,管理Xen主机如配置、启动、监视虚拟机的控制台程序除了思杰提供的产品,还有许多开源和第三方的管理程序。

 Citrix XenServer 思杰公司提供的一整套管理Xen虚拟机的商业套件,包括与VMware vMotion对应的Live motion等一系列在vSphere中的工具
Xen Tools
 Debian和 CentOS4 Linux发行版下的管理工具
 GanetiGaneti支持在线迁移,虚拟控制台或VNC控制。从2.0版开始支持KVM。Ganeti开发小组推荐的主机群集数量在40个以内。
 MLN MLN (Manage Large Networks)是一个基于Perl的虚拟机管理工具,目前除了支持 Xen以外还支持VMware Server和UML(User-Mode Linux)
  HyperVM HyperVM是基于web的虚拟机管理工具,目前支持Xen和OpenVZ
 ConVirt  ConVirt由之前的XenMan转变而来,号称企业级的虚拟机管理程序,目前支持Xen和KVM
 virt-manager Red Hat(红帽公司)提供的虚拟机管理器,同时支持Xen和KVM
PlateSpin

Novell在SUSE Linux发行版提供的支持微软的Virtual Server、VMware和XenServer的工具

  3、KVM
  KVM是基于Linux内核的虚拟化技术,可以说与VMware的ESX拥有相同的架构,但由于KVM是开源的,它在技术方面非常有优势,KVM能够利用庞大的Linux社区所提供的驱动和应用程序,因此这种开源虚拟化技术可能有更好的前途。然而,KVM才刚刚起步,与VMware和Xen相比,目前还没有一套完整的解决方案。所以商业用户很难考虑到KVM,而开源虚拟化用户目前大都基于Xen。
  但是KVM与ESX和Xen相比优越性到底在哪里呢?在KVM的维护者Avi Kivity的BLOG上有一篇文章提到:在许多方面,VMware是一个基础破坏技术,它只采用软件技术对众所周知地复杂的x86架构进行了全虚拟化,达到较好的性能和稳定性。其结果是,VMware变得非常庞大和复杂。同样,相对于KVM,Xen也是一个相当大的准虚拟化项目,它被设计为一个独立的内核,它有自己的调度程序、内存管理器、计时器和机器初始化程序。与前两个不同,KVM则依赖于最新的硬件虚拟技术,其自身非常小且简单(大约1万行代码)。但另外一个最大的不同之处是VMware是有专利的,而KVM和Xen是开源的。目前KVM还有一个致命的弱点,即只支持Intel和AMD虚拟化,而Xen还支持IBM PowerPC和Itanium(安腾)处理器。
  虽然采用开源工具管理KVM可以节省上百万元的资金 ,由于目前KVM没有一套完整的解决方案,除非信息中心有一定的Linux高级专家,否则难以管理好KVM的虚拟机。
  4、Hyper-V
  把微软的Hyper-V放在最后并不表示它不重要。相反,我们不能忽略无所不在的微软。虽然微软在虚拟化领域姗姗来迟,但其在Windows 平台服务器操作系统的绝对优势对推广Hyper-V起到很大的作用。在2008年,微软的Hyper-V单卖价格只有28美元,和Windows Server 2008捆绑则免费赠送。但是,一些分析师认为,微软的低价其实并不低,现在能够在生产环境使用的Hyper-V R2只能在Windows Server 2008上使用,而Windows Server 2008标准版根据许可证的数量的不同价格从999到3999美元之间。而且,为了回应微软的价格,VMware推出了免费的ESX精简版ESXi,提供给戴尔、惠普、富士通、西门子以及IBM等服务器厂商,在其产品中预装ESXi,将ESXi作为硬件的一部分提供给用户,因此微软的价格优势并不存在。
  目前对于微软的Hyper-V市场上还是批评多于赞扬,一方面Windows系统的稳定性让人担忧,另一方面Hyper-V R2的主机操作系统只能是Windows 2008,而Xen、VMware和KVM支持的Windows版本比Hyper-V支持的版本还多。
  尽管微软的Hyper-V有诸多不足,微软毕竟是一个实力雄厚的公司,其研发与技术能力非常具有竞争力,在最新的Hyper-V 2.0中,微软已经实现了重要的虚机在线迁移功能并支持群集共享卷(CSV: Cluster Shared Volume)。
  (二)在实施虚拟化建设之前,我们必须认真地思考的问题
  经过对目前相对成熟的四个产品进行比较后,我们发现没有一应俱全的方法可以解决所有问题。选择VMware需要大量的资金,而选择Xen和KVM对技术人员需求高,选择Hyper-V虽然有Windows操作系统这个先天优势,但其在生产环境中使用的Hyper-V 2.0只能在Windows Server 2008上使用,并且目前评价不好。因此,在实施服务器虚拟化建设的过程中,在选择厂商时,要根据具体的项目、根据能够得到支持的应用或数据的性质来进行选择,并且应当根据多个标准来评估每个项目,包括服务器工作负荷要求、灾难恢复要求、安全风险和厂商等。
  1、对现有服务器资源进行评估
  (1)要对数据中心的服务器上运行的应用进行统计,找出适合虚拟化的服务器。
  (2)对适合虚拟化的服务器进行CPU 负载(Load Average)、内存利用率进行监测。
  (3)找出服务器的高峰期和空闲时期。
  (4)如果可能,对电耗进行测量。
  2、要达到的目标和需要的功能
  要明确实施虚拟化建设后能够达到的目标,并且进行量化。这样,在实施建设后,如果没有达到预期的要求,才能集中精力找出原因进行调整。对目标量化以后,实施虚拟化建设带来的好处才实实在在的看得见,同时便于向上级汇报。
  (1)提升设备利用率,服务器硬件设备利用率至少要从以往的10%达到80%,亦即提高8倍。
  (2)减少运营成本。实施虚拟化的应用系统服务器硬件的耗电量要减少一半。一方面由于减少了所需要的服务器硬件的数量,电耗自然下降了;另一方面, 利用虚拟技术的负载均衡管理(DRS,Distributed Resource Scheduler),可以在多台虚拟子系统之间智能地动态分配和平衡计算资源,监控各虚拟子系统的资源需求和电力消耗。当在线虚拟子系统所需的资源减少时,它会整合工作负载并将主机置于待机模式,从而减少电力消耗。当工作负载的资源需求增加时,可以让关闭的主机恢复为在线状态。由于工作时间的特殊性,大部分应用在夜间是完全空闲的,利用这种虚拟机的电源管理技术,在工作时间外的十几个小时的中可以节约的电能也是相当可观的。

虚拟化
(图片来源:VMware公司)


  (3)减少系统维护工作量和便捷性。在实际工作中,如果遇到新的业务需求,开发小组要对新的应用进行部署和测试时,应当可放在虚拟机里进行,降低了服务器建设周期。
  (4)提高系统可用性。现在,如果服务器发生硬件故障,通常要停机进行硬件更换,尤其是当厂商缺少备件的时候,可能导致应用系统几小时甚至几十个小时不可用。实施服务器虚拟化后,由于虚拟构架可使虚拟机具有动态可迁移性,应当可以对各个应用系统实施动态冗余管理,最大程度减少应用系统的离线时间。
虚拟化
(图片来源:VMware公司)


  经过对虚拟化建设要达到的目标进行分析, 才能明确哪些功能是必须的,哪些功能不需要购买以节省资金。这些功能包括:动态迁移(VMware 的VMotion、Xen的Live Motion或KVM的Migration)、动态负载均衡、虚拟机自动重启以及集中管理等功能。
  3、现有硬件资源的利用和资金管理
  在前面讲过,目前企业数据中心的主流是裸机虚拟化架构,其主要竞争者有VMware ESX、Xen Server、RedHat KVM和Microsoft Hypver-V。对于KVM和Hyper-V,一般来说只要Linux和Windows支持的硬件即可,但是如果要选择VMware 的最新虚拟机套件vSphere,则必须先阅读VMware的硬件兼容列表(HCL),其中包括服务器、I/O、备份和存储设备。由于vSphere与其上一个版本VI3不同,它仅支持64位CPU,所以vSphere是不能在32位的老服务器上安装的。同样的,如果要使用Xen Server准虚拟化引擎,虚拟子系统只能运行Minix, Plan 9, NetBSD, FreeBSD, 和openSolaris等unix类操作系统,如果要想运行Windows系列的操作系统,服务器则需要Intel Vanderpool或AMD Pacifica处理器的支持。
  另外 在厂商宣传中所提到的一些先进功能是需要最新或者特定的硬件支持才能工作的。比如说容错功能(FT,Fault Tolerance),也必须要特定的CPU,并且虚拟池里的所有主机必须有兼容的CPU。
  因此,虽然前面说到要明确自己部门需要的功能,但是,如果现有的硬件对虚拟化建设不支持,是否能够申请到额外的经费也是一个问题。无论资金是否充裕,究竟是新购硬件还是充分利用好现有资源值得思考。
  4、计划多少时间进行测试
  无论在选择虚拟化产品前还是选择后,在生产环境使用虚拟机,系统内部一定要有技术人员学会如何正确配置、监控并修复虚拟机。如果对服务器虚拟化没有充分了解,也没有经验,就将生产环境放到虚拟机中是个错误。在技术上和后期维护完全依赖于虚拟机厂商也不可取,虽然厂商可以提供技术一定的技术支持,当问题发生时,等待其技术人员来解决问题所花费的时间也不可忽略。
  在虚拟化建设前期,应当根据项目情况,制定出相应的计划,预留出一定的时间对虚拟化产品进行测试。
  (三)实施虚拟化建设可能遇到的问题
  首先,不要为了虚拟化而进行虚拟化,要循序渐进,利用好原有的资源。
  其次,要将虚拟子系统的管理按照实体机的方式进行管理,不能让虚拟机蔓延。虽然实施服务器虚拟化后,部署新系统的服务器层面的周期大大减少,但是,由于部署新系统的便捷性,用户可以很轻易地生成一台虚拟机,因此,业务部门对虚拟机需求的程度会大大高于实体机,大量的虚拟机生成以后,管理员要追踪到底有多少台虚拟机、这些虚拟机配置的时间和位置可能是一个难题。另外,这些虚拟机也要占用大量的存储资源。所以说,如果不在制度上对虚拟机进行科学管理,必将增加的管理复杂性和管理成本。

  参考文献:
  (1)Google.com
  (2)Xen 官方网站 http://www.xen.org
  (3)Xen发源地:英国的剑桥大学计算机实验室http://www.cl.cam.ac.uk/research/srg/netos/xen
  (4)KVM 官方网站 http://www.linux-kvm.org
  (5)VMware 官方网站 http://www.vmware.com
  (6)微软Hyper-V 官方网站 http://www.microsoft.com/servers/hyper-v-server
  (7)作者:Jason Nieh and Ozgur Can Leonard《Examining VMware》出版社 Dr. Dobb’s Journal August 2000
  (8)作者:Uhlig, R. et al.《Intel virtualization technology》,《Computer》杂志 , 2005年第38期, 48-56页
  (9)作者:Chris Barclay《New approach to virtualizing x86s》,《Network World》杂志,2006年10月20日

(作者单位:)

 

评论

非常好的文章!

jack | 19/04/2010, 06:51

全面比较了现有的产品,并提出自己独到的见解。

读来如醍醐灌顶!

发表评论
 authimage
 
旅行图册 - English Blog - 中文网志 - 米呀的网志
Powered by Redhat - Apache - Mysql - PHP - LifeType