主流四大虚拟化架构对比分析
云计算平台需要有资源池为其提供能力输出,这种能力包括计算能力、存储能力和网络能力,为了将这些能力调度到其所需要的地方,云计算平台还需要对能力进行调度管理,这些能力均是由虚拟化资源池提供的。
云计算离不开底层的虚拟化技术支持。列举的虚拟化技术有超过60种,基于X86(CISC)体系的超过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服务器作为云计算资源池,更能凸显出云计算的低成本优势。
由于单机计算机的处理能力越来越大,以单机资源为调度单位的颗粒度就太大了,因此需要有一种技术让资源的调度颗粒更细小,使资源得到更有效和充分的利 用,这就引入了虚拟化技术。当前虚拟化技术中主流和成熟的有4种:VMWARE的ESX、微软的Hyper—V、开源的XEN和KVM,下面将针对这4种 虚拟化技术的架构进行分析
由于单机计算机的处理能力越来越大,以单机资源为调度单位的颗粒度就太大了,因此需要有一种技术让资源的调度颗粒更细小,使资源得到更有效和充分的利 用,这就引入了虚拟化技术。当前虚拟化技术中主流和成熟的有4种:VMWARE的ESX、微软的Hyper—V、开源的XEN和KVM,下面将针对这4种 虚拟化技术的架构进行分析
1虚拟化架构分析
从虚拟化的实现方式来看,虚拟化架构主要有两种形式:宿主架构和裸金属架构。在宿主架构中的虚拟机作为主机操作系统的一个进程来调度和管理,裸金属架构下 则不存在主机操作系统,它是以Hypervisor直接运行在物理硬件之上,即使是有类似主机操作系统的父分区或Domain 0,也是作为裸金属架构下的虚拟机存在的。宿主架构通常用于个人PC上的虚拟化,如WindowsVirtual PC,VMware Workstation,Virtual Box,Qemu等,而裸金属架构通
常用于服务器的虚拟化,如文中提及的4种虚拟化技术。
(一)ESX的虚拟化架构
ESX是VMware的企业级虚拟化产品,2001年开始发布ESX 1。0,到2011年2月发布ESX 4.1 Update 1。
ESX服务器启动时,首先启动Linux Kernel,通过这个操作系统加载虚拟化组件,最重要的
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虚拟机的右下角到它。网卡的这两种方式,前者
免费个人云服务器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将拒绝在其上面安装。
ESX的物理驱动是内置在Hypervisor中,所有设备驱动均是由VMware预植入的。因此,ESX对硬件有严格的兼容性列表,不在列表中的硬件,ESX将拒绝在其上面安装。
(二)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
对于一台没有开启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所兼容。
Hyper—V的Hypervisor是一个非常精简的软件层,不包含任何物理驱动,物理服务器的设备驱动均是驻留在父分区的Windows Server 2008中,驱动程序的安装和加载方式与传统Windows系统没有任何区别.因此,只要是Windows支持的硬件,也都能被Hyper-V所兼容。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论