还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一、背景知识云计算平台需要有资源池为其提供能力输出,这种能力包括计算能力、存储能力和网络能力,为了将这些能力调度到其所需要的地方,云计算平台还需要对能力进展调度管理,这些能力均是由虚拟化资源池提供的云计算离不开底层的虚拟化技术支持维基百科列举的虚拟化技术有超过60种,基于X86CISC体系的超过50种,也有基于RISC体系的,其中有4种虚拟化技术是当前最为成熟而且应用最为广泛的,分别是VMWARE的ESX、微软的Hyper-V.开源的XEN和KVM云计算平台选用何种虚拟化技术将是云计算建设所要面临的问题,文章就4种主流虚拟化技术的架构层面进展了比照分析形成资源池计算能力的物理设备大概有两种,一种是基于RISC的大/小型机,另一种是基于CISC的X86服务器大/小型机通常意味着高性能、高可靠性和高价格,而X86服务器与之相比有些差距但随着Inter和AMD等处理器厂商技术的不断开展,原本只在小型机上才有的技术已经出现在了X86处理器上,如64位技术、虚拟化技术、多核心技术等等,使得X86服务器在性能上突飞猛进通过TPC组织在2011年3月份所公布的单机计算机性能排名中可以看出,4路32核的X86服务器性能已经位列前10名更重要的是X86服务器的性价比相对小型机有约5倍的优势因此,选择X86服务器作为云计算资源池,更能凸显出云计算的低成本优势由于单机计算机的处理能力越来越大,以单机资源为调度单位的颗粒度就太大了,因此需要有一种技术让资源的调度颗粒更细小,使资源得到更有效和充分注:由于KVM独特的虚拟化架构会消耗对比多的计算资源,不过针对这一点,Intel.AMD已经在处理器设计上有专门的VT-x和AMD-V扩展,这种特性在每次硬件更新的时候也会更新往往每次更新后都对虚拟化性能和速度上有明显的提升,所以长远来看,也不是什么大问题
四、技术开展趋势KVMorXEN下面这些观点来自于KVMorXEN哪个更好Xen现阶段在稳定和功能上略胜一筹〔因xen被思杰收购后不再开源〕KVM获得的社区支持更多被商业公司收购之后,Xen会在各方面有所改变虽然KVM现在还无法和Xen相比,但是其植入Linux内核,以及被社区支持大家更看好它的未来开源社区抛弃xen就像抛弃openoffice一样Xen如果要开展可能来自citrixoracle的支持在开源社区xen的式微是不可防止redhatsuseubuntu已经处于转换中IBM丢弃Xen用KVMUbuntu丢弃Xen用KVM0Redhat就更不用说了,当然支持自家的KVMOKVM完全开源,而Xen只有核才开源Citrix指望Xen及外围工具挣人民币呢KVM最大的优势是随着kernel的更新Xen:最大的弊端是恰好是DomO不能用最新的kernelzkernel
3.0之后估计会好很多目前性能方面、成熟度方面Xen要优于KVM这可能是我们目前最关注的目前公有云厂商亚马逊、阿里云、盛大云、云快线等使用的都是Xen有对比成熟的解决方案,稳定性也久经考验,所以在一些较大较重要工程中、性能要求较高的工程中建议优先考虑使用Xen不过还是要多看看应用场景,10问题是不是关键,XEN和KVM的混合设计可根据业务场景的技术层面关注点来设计,简单来看还是KVM更好,但毕竟市场份额现有的还是XEN的高,有点类似于.NET刚出来时vsJavaEE的感觉,还是需要一定的应用历程才能开展起来未来趋势应该是KVM,但是现在最成熟,还是Xen0的利用,这就引入了虚拟化技术当前虚拟化技术中主流和成熟的有4种VMWARE的ESX、微软的Hyper-V、开源的XEN和KVM
二、虚拟化架构分析从虚拟化的实现方式来看,虚拟化架构主要有两种形式宿主架构和裸金属架构在宿主架构中的虚拟机作为主机操作系统的一个进程来调度和管理,裸金属架构下则不存在主机操作系统,它是以Hypervisor直接运行在物理硬件之上,即使是有类似主机操作系统的父分区或Domain0也是作为裸金属架构下的虚拟机存在的宿主架构通常用于个人PC上的虚拟化如WindowsVirtualPCVMwareWorkstationVirtualBoxQemu等,而裸金属架构通常用于服务器的虚拟化,如文中提及的4种虚拟化技术ESX的虚拟化架构VMWareVirtualMachineware是Y虚拟PC〃软件公司它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统与多启动〃系统相比VMWare采用了完全不同的概念多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器VMWare是真正同时〃运行多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换而且每个操作系统你都可以进展虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,对比适合学习和测试ESXI服务器启动时,首先启动LinuxKernel通过这个操作系统加载虚拟化组件;最重要的是ESX的Hypervisor组件称之为VMkernelVMkernel会从LinuxKernel完全接收对硬件的控制权而该LinuxKernel作为VMkernel的首个虚拟机,用于承载ESX的serviceconsole实现本地的一些管理功能VMkernel负责为所承载的虚拟机调度所有的硬件资源,但不同类型的硬件会有些区别虚拟机对于CPU和内存资源是通过VMkernel直接访问,最大程度地减少了开销,CPU的直接访问得益于CPU硬件辅助虚拟化(IntelVT-x和AMDAMD-V第一代虚拟化技术),内存的直接访问得益于MMU(内存管理单元,属于CPU中的一项特征)硬件辅助虚拟化(IntelEPT和AMDRVI/NPT第二代虚拟化技术)虚拟机对于I/O设备的访问则有多种方式,以网卡为例,有两种方式可供选择一是利用I/OMMU硬件辅助虚拟化(IntelVT-d和AMD-Vi)的VMDirectPathI/O使得虚拟机可以直接访问硬件设备,从而减少对CPU的开销;二是利用半虚拟化的设备VMXNETx网卡的物理驱动在VMkernel中,在虚拟机中装载网卡的虚拟驱动,通过这二者的配对来访问网卡,与仿真式网卡(IntelElOOO)相比有着较高的效率半虚拟化设备的安装是由虚拟机中VMwaretool来实现的,可以在Windows虚拟机的右下角找到它网卡的这两种方式前者有着显著的先进性,但后者用得更为普遍,因为VMDirectPathI/O与VMware虚拟化的一些核心功能不兼容,如热迁移、快照、容错、内存过量使用等ESX的物理驱动是内置在Hypervisor中,所有设备驱动均是由VMware预植入的因此,ESX对硬件有严格的兼容性列表,不在列表中的硬件ESX将拒绝在其上面安装Hyper-V的虚拟化架构Hyper-V是微软新一代的服务器虚拟化技术,首个版本于2008年7月发布,目前最新版本是2011年4月发布R2SP1版Hyper-V有两种发布版本一是独立版,如Hyper-VServer2008以命令行界面实现操作控制,是一个免费的版本;二是内嵌版如WindowsServer2008Hyper-V作为一个可选开启的角色对于一台没有开启Hyper-V角色的WindowsServer2008来说,这个操作系统将直接操作硬件设备,一旦在其中开启了Hyper-V角色,系统会要求重新启动服务器虽然重启后的系统在外表看来没什么区别,但从体系架构上看则与之前的完全不同了在这次重启动过程中,Hyper-V的Hypervisor接收了硬件设备的控制权,先前的WindowsServer2008则成为Hyper-V的首个虚拟机,称之为父分区,负责其他虚拟机(称为子分区)以及I/O设备的管理Hyper-V要求CPU必须具备硬件辅助虚拟化,但对MMU硬件辅助虚拟化则是一个增强选项其实Hypervisor仅实现了CPU的调度和内存的分配,而父分区控制着I/O设备,它通过物理驱动直接访问网卡、存储等子分区要访问I/O设备需要通过子分区操作系统内的VSC(虚拟化服务客户端)对VSC的请求由VMBUS(虚拟机总线)传递到父分区操作系统内的VSP(虚拟化服务提供者),再由VSP重定向到父分区内的物理驱动,每种I/O设备均有各自的VSC和VSP配对,如存储、网络、视频和输入设备等,整个I/O设备访问过程对于子分区的操作系统是透明的其实在子分区操作系统内,VSC和VMBUS就是作为I/O设备的虚拟驱动,它是子分区操作系统首次启动时由Hyper-V提供的集成服务包安装,这也算是一种半虚拟化的设备,使得虚拟机与物理I/O设备无关如果子分区的操作系统没有安装Hyper-V集成服务包或者不支持Hyper-V集成服务包(对于这种操作系统,微软称之为UnenlightenedOS,如未经认证支持的Linux版本和旧的Windows版本),则这个子分区只能运行在仿真状态其实微软所宣称的启蒙式(Enlightenment)操作系统,就是支持半虚拟化驱动的操作系统Hyper-V的Hypervisor是一个非常精简的软件层,不包含任何物理驱动,物理服务器的设备驱动均是驻留在父分区的WindowsServer2008中,驱动程序的安装和加载方式与传统Windows系统没有任何区别因此,只要是Windows支持的硬件,也都能被Hyper-V所兼容XEN的虚拟化架构XEN最初是剑桥大学Xensource的一个开源研究工程,2003年9月发布了首个版本XEN
1.02007年Xensource被Citrix公司收购,开源XEN转由xen.org继续推进该组织成员包括个人和公司(如Citrix、Oracle等)Xen的缺点是操作系统必须进展显式地修改〔移植〃〕以在Xen上运行〔但是提供对用户应用的兼容性〕,所以对比麻烦使得Xen无需特殊硬件支持,就能到达高性能的虚拟化Linux的官方内核在较早之前已经去掉了对Xen的支持相对于ESX和Hyper-V来说,XEN支持更广泛的CPU架构,前两者只支持CISC的X86/X86_64CPU架构XEN除此之外还支持RISCCPU架构,如IA
64、ARM等XEN的Hypervisor是服务器经过BIOS启动之后载入的首个程序,然后启动一个具有特定权限的虚拟机,称之为Domain0(简称Dom0)Dom0的操作系统可以是Linux或UnixDomain0实现对Hypervisor控制和管理功能在所承载的虚拟机中,Dom0是唯一可以直接访问物理硬件(如存储和网卡)的虚拟机它通过本身加载的物理驱动,为其它虚拟机(DomainU简称DomU)提供访问存储和网卡的桥梁XEN支持两种类型的虚拟机,一类是半虚拟化(PVParavirtualization)z另一类是全虚拟化(XEN称其为HVMHardwareVirtualMachine)o半虚拟化需要特定内核的操作系统,如基于Linuxparavirt_ops(Linux内核的一套编译选项)框架的Linux内核而Windows操作系统由于其封闭性则不能被XEN的半虚拟化所支持XEN的半虚拟化有个特别之处就是不要求CPU具备硬件辅助虚拟化,这非常适用于2007年之前的旧服务器虚拟化改造全虚拟化支持原生的操作系统,特别是针对Windows这类操作系统XEN的全虚拟化要求CPU具备硬件辅助虚拟化,它修改的Qemu仿真所有硬件,包括BIOS.IDE控制器、VGA显示卡、USB控制器和网卡等为了提升I/O性能,全虚拟化特别针对磁盘和网卡采用半虚拟化设备来代替仿真设备,这些设备驱动称之为PVonHVM,为了使PVonHVM有最正确性能CPU应具备MMU硬件辅助虚拟化XEN的Hypervisor层非常薄,少于15万行的代码量,不包含任何物理设备驱动这一点与Hyper-V是非常类似的,物理设备的驱动均是驻留在Dom0中,可以重用现有的Linux设备驱动程序因此,XEN对硬件兼容性也是非常广泛的,Linux支持的,它就支持KVM的虚拟化架构KVM的全称是Kernel-basedVirtualMachine,字面意思是基于内核虚拟机其最初是由Qumranet公司开发的一个开源工程,2007年1月首次被整合至!]Linux
2.
6.20核心中;2008年,Qumranet被RedHat所收购,但KVM本身仍是一开源工程,由RedHat.IBM等厂商支持KVM作为Linux内核中的一个模块与Linux内核一起发布KVM是指基于Linux内核〔Kernel-based〕的虚拟机〔VirtualMachine〕KVM最大的好处就在于它是与Linux内核集成的所以速度很快KVM的宿主操作系统必须是Linux支持的客户机操作系统包括Linux、Windows.Solaris和BSD运行在支持虚拟化扩展的x86和x86_64硬件架构上,这意味着KVM不能运行在老式CPU上,新CPU如果不支持虚拟化扩展也不能运行〔如英特尔的Atom处理器〕与XEN类似,KVM支持广泛的CPU架构,除了X86/X86_64CPU架构之外还将会支持大型机S/
390、小型机PowerPC、IA64及ARM等KVM充分利用了CPU的硬件辅助虚拟化能力,并重用了Linux内核的诸多功能,使得KVM本身是非常瘦小的,KVM的创始者AviKivity声称KVM模块仅有约10000行代码,但我们不能认为KVM的Hypervisor就是这个代码量,因为从严格意义来说,KVM本身并不是Hypervisor它仅是Linux内核中的一个可装载模块,其功能是将Linux内核转换成一个裸金属的Hypervisor.这相对于其它裸金属架构来说,它是非常特别的,有些类似于宿主架构,业界甚至有人称其是半裸金属架构通过KVM模块的加载将Linux内核转变成HypervisorKVM在Linux内核的用户User模式和内核Kernel模式根基上增加了客户Guest模式Linux本身运行于内核模式,主机进程运行于用户模式,虚拟机则运行于客户模式,使得转变后的Linux内核可以将主机进程和虚拟机进展统一的管理和调度,这也是KVM名称的由来KVM利用修改的QEMU提供BIOS、显卡、网络、磁盘控制器等的仿真,但对于I/O设备(主要指网卡和磁盘控制器)来说,则必然带来性能低下的问题因此,KVM也引入了半虚拟化的设备驱动,通过虚拟机操作系统中的虚拟驱动与主机Linux内核中的物理驱动相配合,提供近似原生设备的性能从此可以看出,KVM支持的物理设备也即是Linux所支持的物理设备本文所讨论的4种虚拟化技术都用到了半虚拟化驱动,假设要在不同虚拟化架构之间迁移虚拟机,这些半虚拟化驱动将必然带来兼容性问题因此zRedHat和IBM联合Linux社区推出VirtIO半虚拟化驱动开发标准基于VirtIO的半虚拟化驱动独立于Hypervisor跨平台迁移时半虚拟化驱动仍可重用,使得不同虚拟化架构之间更容易实现互操作架构分析总结目前,传统概念下的半虚拟化和全虚拟化的界限越来越模糊了,而且半虚拟化和全虚拟化得到了有机的整合,如半虚拟化的设备驱动和全虚拟化的虚拟机在上述四种虚拟化架构中得到了统一很多虚拟化厂商也不再明确自己的虚拟化产品归类(如VMware和微软)随着CPU硬件辅助虚拟化技术开展到了二代,而且新版的操作系统对虚拟化技术的原生支持(如Windows7的NativelyEnlightenedLinux的paravirt_ops内核选项),以及Hypervisor对虚拟机的CPU调度和内存管理越来越少的干预则软件做得越少而硬件做得越多,如虚拟机之间内存管理所需用到的地址翻译由软件的影式分页ShadowPaging转变为由CPU硬件加速的嵌套分页NestedPaging各种虚拟化技术既有全虚拟化技术对操作系统的兼容性,又有半虚拟化技术所带来的性能优势从架构上来看,各种虚拟化技术没有明显的性能差距,稳定性也在逐渐逼近中,各自有着自身的优势场景和市场群体因此,我们在进展虚拟化技术选型时不应局限于某一种虚拟化技术,而应该有一套综合管理平台实现对各种虚拟化技术的兼容并蓄,实现不同技术架构的统一管理及跨技术架构的资源调度,最终到达云计算可运营的目
三、综合比照KVM、Xen、VMWare.Hyper-v的比照方下表所示
2.开源、免费较高,VMWare否否一般对比成熟的商业软件,市场占有率较大不开源,需要付费Hyper-v否否一般对比成熟的商业软件,微软服务器操作系统在中小企业有一定的占有率windows2008R2\windows2012产品组件名称是否开源是否免费性能优点缺点KVM是是高.KVM是内核本身的一局部,因此可以利用内核的优化和改良.高性能,稳定,无需修改客户机系统.开源、免费运行在Linux内核之上的寄居式虚拟化架构,会消耗对比多的计算资源XEN是是高
1.性能较好操作复杂,维护成本。