云计算4种主流虚拟技术架构对比分析

云计算4种主流虚拟技术架构对⽐分析
云计算4种主流虚拟技术架构对⽐分析
  云计算离不开底层的虚拟化技术⽀持。列举的虚拟化技术有超过60种,基于X86(CISC)体系的超过50种,也有基于RISC体系的,其中有4种虚拟化技术是当前最为成熟⽽且应⽤最为⼴泛的,分别是:VMWARE的ESX、微软的Hyper-V、开源的XEN和KVM。云计算平台选⽤何种虚拟化技术将是云计算建设所要⾯临的问题,⽂章就4种主流虚拟化技术的架构层⾯进⾏了对⽐分析。
地区搜索1.前⾔
  云计算平台需要有资源池为其提供能⼒输出,这种能⼒包括计算能⼒、存储能⼒和⽹络能⼒,为了将这些能⼒调度到其所需要的地⽅,云计算平台还需要对能⼒进⾏调度管理,这些能⼒均是由虚拟化资源池提供的。
  在本⽂中,我们重点讨论虚拟化资源池的技术。形成资源池计算能⼒的物理设备,可能有两种,⼀种是基于RISC的⼤/⼩型机,另⼀种是基于CISC的X86服务器。⼤/⼩型机通常意味着⾼性能、⾼可靠性和⾼价格,⽽X86服务器与之相⽐有些差距,但随着Inter和AMD等处理器⼚商技术的不断发展,原本只在⼩型机上才有的技术已经出现在了X86处理器上,如64位技术、虚拟化技术、多核⼼技术等等,使得X86
服务器在性能上突飞猛进。通过TPC组织在2011年3⽉份所公布的单机计算机性能排名中可以看出,4路32核的X86服务器性能已经位列前10名,更重要的是X86服务器的性价⽐相对⼩型机有约5倍的优势。因此,选择X86服务器作为云计算资源池,更能凸显出云计算的低成本优势。
  由于单机计算机的处理能⼒越来越⼤,以单机资源为调度单位的颗粒度就太⼤了,因此需要有⼀种技术让资源的调度颗粒更细⼩,使资源得到更有效和充分的利⽤,这就引⼊了虚拟化技术。当前虚拟化技术中主流和成熟的有4种:VMWARE的ESX、微软的Hyper-V、开源的XEN和KVM,下⾯将针对这4种虚拟化技术的架构进⾏分析。
2.虚拟化架构分析
  从虚拟化的实现⽅式来看,虚拟化架构主要有两种形式:宿主架构和裸⾦属架构。在宿主架构中的虚拟机作为主机操作系统的⼀个进程来调度和管理,裸⾦属架构下则不存在主机操作系统,它是以Hypervisor直接运⾏在物理硬件之上,即使是有类似主机操作系统的⽗分区或Domain 0,也是作为裸⾦属架构下的虚拟机存在的。宿主架构通常⽤于个⼈PC上的虚拟化,如WindowsVirtual PC,VMware Workstation,VirtualBox,Qemu等,⽽裸⾦属架构通常⽤于服务器的虚拟化,如⽂中提及的4种虚拟化技术。
六氟化硫开关  (1) ESX的虚拟化架构(如图1)
图1:Esx虚拟化架构⽰意图
  ESX是VMware的企业级虚拟化产品,2001年开始发布ESX 1.0,到2011年2⽉发布ESX 4.1 Update 1。
  ESX服务器启动时,⾸先启动Linux Kernel,通过这个操作系统加载虚拟化组件,最重要的是ESX的Hypervisor组件,称之为
VMkernel,VMkernel会从LinuxKernel完全接管对硬件的控制权,⽽该Linux Kernel作为VMkernel的⾸个虚拟机,⽤于承载ESX的serviceConsole,实现本地的⼀些管理功能。
  VMkernel负责为所承载的虚拟机调度所有的硬件资源,但不同类型的硬件会有些区别。
  虚拟机对于CPU和内存资源是通过VMkernel直接访问,最⼤程度地减少了开销,CPU的直接访问得益于CPU硬件辅助虚拟化(Intel VT-x和AMD AMD-V,第⼀代虚拟化技术),内存的直接访问得益于MMU(内存管理单元,属于CPU中的⼀项特征)硬件辅助虚拟化(Intel EPT和AMD RVI/NPT,第
⼆代虚拟化技术)。
  虚拟机对于I/O设备的访问则有多种⽅式,以⽹卡为例,有两种⽅式可供选择:⼀是利⽤I/O MMU硬件辅助虚拟化(Intel VT-d和AMD-Vi)的VMDirectPath I/O,使得虚拟机可以直接访问硬件设备,从⽽减少对CPU的开销;⼆是利⽤半虚拟化的设备VMXNETx,⽹卡的物理驱动在VMkernel 中,在虚拟机中装载⽹卡的虚拟驱动,通过这⼆者的配对来访问⽹卡,与仿真式⽹卡(IntelE1000)相⽐有着较⾼的效率。半虚拟化设备的安装是由虚拟机中VMware tool来实现的,可以在Windows虚拟机的右下⾓到它。⽹卡的这两种⽅式,前者有着显著的先进性,但后者⽤得更为普遍,因为VMDirectPath I/O与VMware虚拟化的⼀些核⼼功能不兼容,如:热迁移、快照、容错、内存过量使⽤等。
  ESX的物理驱动是内置在Hypervisor中,所有设备驱动均是由VMware预植⼊的。因此,ESX对硬件有严格的兼容性列表,不在列表中的硬
件,ESX将拒绝在其上⾯安装。
  (2) Hyper-V的虚拟化架构(如图2)
图2:Hyper-V虚拟化架构⽰意图
  Hyper-V是微软新⼀代的服务器虚拟化技术,⾸个版本于2008年7⽉发布,⽬前最新版本是2011年4⽉发布R2 SP1版,Hyper-V有两种发布版本:⼀是独⽴版,如Hyper-V Server 2008,以命令⾏界⾯实现操作控制,是⼀个免费的版本;⼆是内嵌版,如Windows Server 2008,Hyper-V作为⼀个可选开启的⾓⾊。
  对于⼀台没有开启Hyper-V⾓⾊的Windows Server 2008来说,这个操作系统将直接操作硬件设备,⼀旦在其中开启了Hyper-V⾓⾊,系统会要求重新启动服务器。虽然重启后的系统在表⾯看来没什么区别,但从体系架构上看则与之前的完全不同了。在这次重启动过程中,Hyper-V的Hypervisor接管了硬件设备的控制权,先前的Windows Server 2008则成为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集成服务包(对于这种操作系统,微软称之为Unenlightened OS,如未经认证⽀持的Linux版本和旧的Windows版本),则这个⼦分区只能运⾏在仿真状态。其实微软所宣称的启蒙式(Enlightenment)操作系统,就是⽀持半虚拟化驱动的操作系统。
  Hyper-V的Hypervisor是⼀个⾮常精简的软件层,不包含任何物理驱动,物理服务器的设备驱动均是驻留在⽗分区的Windows Server 2008中,驱动程序的安装和加载⽅式与传统Windows系统没有任何区别。因此,只要是Windows⽀持的硬件,也都能被Hyper-V所兼容。
  (3) XEN的虚拟化架构(如图3)
图3:XEN的虚拟化架构⽰意图
  XEN最初是剑桥⼤学Xensource的⼀个开源研究项⽬,2003年9⽉发布了⾸个版本XEN 1.0,2007年Xensource被Citrix公司收购,开源XEN转由继续推进,该组织成员包括个⼈和公司(如Citrix、Oracle等)。⽬前该组织在2011年3⽉发布了最新版本XEN 4.1。
快开阀芯  相对于ESX和Hyper-V来说,XEN⽀持更⼴泛的CPU架构,前两者只⽀持CISC的X86/X86_64 CPU架构,XEN除此之外还⽀持RISC CPU架构,如IA64、ARM等。
  XEN的Hypervisor是服务器经过BIOS启动之后载⼊的⾸个程序,然后启动⼀个具有特定权限的虚拟机,称之为Domain 0(简称Dom 0)。Dom 0的操作系统可以是Linux或Unix,它实现对Hypervisor控制和管理功能。在所承载的虚拟机中,Dom 0是唯⼀可以直接访问物理硬件(如存储和⽹卡)的虚拟机,它通过本⾝加载的物理驱动,为其它虚拟机(Domain U,简称DomU)提供访问存储和⽹卡的桥梁。
  XEN⽀持两种类型的虚拟机,⼀类是半虚拟化(PV,Paravirtualization),另⼀类是全虚拟化(XEN称其为HVM,Hardware Virtual Machine)。半虚拟化需要特定内核的操作系统,如基于Linux paravirt_ops(Linux内核的⼀套编译选项)框架的Linux内核,⽽Windows操作系统由于其封闭性则不能被XEN的半虚拟化所⽀持,XEN的半虚拟化有个特别之处就是不要求CPU具备硬件辅助虚拟化,这⾮常适⽤于2007年之前的旧服务器虚拟化改造。全虚拟化⽀持原⽣的操作系统,特别是针对Windows这类操作系统,XEN的全虚拟化要求CPU具备硬件辅助虚拟化,它修改的Qemu仿真所有硬件,包括:BIOS、IDE控制器、VGA显⽰卡、USB控制器和⽹卡等。为了提升I/O性能,全虚拟化特别针对磁盘和⽹卡采⽤半虚拟化设备来代替仿真设备,这些设备驱动称之为PV on HVM,为了使PV on HVM有最佳性能。CPU应具备MMU硬件辅助虚拟化。
  XEN的Hypervisor层⾮常薄,少于15万⾏的代码量,不包含任何物理设备驱动,这⼀点与Hyper-V是⾮常类似的,物理设备的驱动均是驻留在Dom 0中,可以重⽤现有的Linux设备驱动程序。因此,XEN对硬件兼容性也是⾮常⼴泛的,Linux⽀持的,它就⽀持。
逗号刮刀
  (4) KVM的虚拟化架构(如图4)
图4:KVM的虚拟化架构⽰意图
  KVM的全称是Kernel-based Virtual Machine,字⾯意思是基于内核虚拟机。其最初是由Qumranet公司开发的⼀个开源项⽬,2007年1⽉⾸次被整合到Linux 2.6.20核⼼中;2008年,Qumranet被RedHat所收购,但KVM本⾝仍是⼀个开源项⽬,由RedHat、IBM等⼚商⽀持。KVM作为Linux内核中的⼀个模块,与Linux内核⼀起发布,⾄2011年1⽉的最新版本是kvm-kmod 2.6.37。
  与XEN类似,KVM⽀持⼴泛的CPU架构,除了X86/X86_64 CPU架构之外,还将会⽀持⼤型机(S/390)、⼩型机(PowerPC、IA64)及ARM等。
  KVM充分利⽤了CPU的硬件辅助虚拟化能⼒,并重⽤了Linux内核的诸多功能,使得KVM本⾝是⾮常瘦⼩的,KVM的创始者Avi Kivity声称KVM模块仅有约10000⾏代码,但我们不能认为KVM的Hypervisor就是这个代码量,因为从严格意义来说,KVM本⾝并不是Hypervisor,它仅是Linux内核中的⼀个可装载模块,其功能是将Linux内核转换成⼀个裸⾦属的Hypervisor。这相对于其它裸⾦属架构来说,它是⾮常特别的,有些类似于宿主架构,业界甚⾄有⼈称其是半裸⾦属架构。
  通过KVM模块的加载将Linux内核转变成Hypervisor,KVM在Linux内核的⽤户(User)模式和内核(Kernel)模式基础上增加了客户(Guest)模式。Linux本⾝运⾏于内核模式,主机进程运⾏于⽤户模式,虚拟机则运⾏于客户模式,使得转变后的Linux内核可以将主机进程和虚拟机进⾏统⼀的管理和调度,这也是KVM名称的由来。
  KVM利⽤修改的QEMU提供BIOS、显卡、⽹络、磁盘控制器等的仿真,但对于I/O设备(主要指⽹卡和磁盘控制器)来说,则必然带来性能低下的问题。因此,KVM也引⼊了半虚拟化的设备驱动,通过虚拟机操作系统中的虚拟驱动与主机Linux内核中的物理驱动相配合,提供近似原⽣设备的性能。从此可以看出,KVM⽀持的物理设备也即是Linux所⽀持的物理设备。
  本⽂所讨论的4种虚拟化技术都⽤到了半虚拟化驱动,若要在不同虚拟化架构之间迁移虚拟机,这些半虚拟化驱动将必然带来兼容性问题。因此,RedHat和IBM联合Linux社区推出VirtIO半虚拟化驱动开发标准,基于VirtIO的半虚拟化驱动独⽴于Hypervisor,跨平台迁移时半虚拟化驱动仍可重⽤,使得不同虚拟化架构之间更容易实现互操作。
3.结束语高压配电盒
  ⽬前,传统概念下的半虚拟化和全虚拟化的界线越来越模糊了,⽽且半虚拟化和全虚拟化得到了有机的整合,如半虚拟化的设备驱动和全虚拟化的虚拟机在上述四种虚拟化架构中得到了统⼀,很多虚拟化⼚商也不再明确⾃⼰的虚拟化产品归类(如VMware和微软)。
  随着CPU硬件辅助虚拟化技术发展到了⼆代,⽽且新版的操作系统对虚拟化技术的原⽣⽀持(如Windows7的Natively Enlightened,Linux的paravirt_ops内核选项),以及Hypervisor对虚拟机的CPU调度和内存管理越来越少的⼲预。则软件做得越少⽽硬件做得越多,如虚拟机之间内存管理所需⽤到的地址翻译由软件的影式分页(Shadow Paging)转变为由CPU硬件加速的嵌套分页(Nested Paging),各种虚拟化技术既有全虚拟化技术对操作系统的兼容性,⼜有半虚拟化技术所带来的性能优势。曲轴设计
  从架构上来看,各种虚拟化技术没有明显的性能差距,稳定性也在逐渐逼近中,各⾃有着⾃⾝的优势场景和市场体。因此,我们在进⾏虚拟化技术选型时,不应局限于某⼀种虚拟化技术,⽽应该有
⼀套综合管理平台实现对各种虚拟化技术的兼容并蓄,实现不同技术架构的统⼀管理及跨技术架构的资源调度,最终达到云计算可运营的⽬标。

本文发布于:2024-09-22 12:41:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/161240.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:虚拟化   技术   设备   架构   驱动   硬件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议