Xen虚拟化技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

7.5.2Xen虚拟化技术本节中将以主流的Xen体系架构为例,说明虚拟化系统的一般技术架构和工作原理。1.Xen体系结构(XenHypervisor)XenHypervisor(即Xen的VMM)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相互隔离。Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain0,而其余的域则称为DomainU。Xen的体系架构如图7-25所示。Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。Dom0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。(点击查看大图)图7-25Xen体系架构图Xen向Domain提供了VCPU、虚拟MMU(MemoryManagementUnit)等基本的虚拟硬件和基本机制(事件通道),并向Domain提供了虚拟域管理API(控制接口)。对Domain设备的访问,Xen也提供了相应的硬件接口(安全硬件接口),以保证设备访问得以安全进行。在Xen体系架构中涉及到的基本概念包括:控制接口:仅能被Dom0使用,用于帮助Dom0控制和管理其他的Domain。控制接口提供的具体功能包括Domain的创建、销毁、暂停、恢复及迁移,对其他Domain的CPU调度、内存分配及设备访问等。安全硬件接口:提供除虚拟CPU、MMU之外的所有硬件虚拟工作,包括DMA/IO、驱动程序、虚拟的PCI地址配置、虚拟硬件中断等。该接口只能被具有原生设备驱动的Domain使用,而向其他Domain则仅通过设备通道提供虚拟硬件服务。VCPU:Xen为每个Domain建立了VCPU结构,用以接收GuestOS中传递的指令,其中大部分的指令被VCPU直接提交到物理CPU执行,而对于特权指令则需要经过确认后交由Xen代为执行。虚拟MMU:用于帮助GuestOS完成虚拟地址到机器地址的转换。Xen系统中增加了客户物理地址层,因而地址由原来的二层结构变为三层结构。Xen通过虚拟MMU仍能使用硬件MMU来完成地址转换。事件通道:是用于Domain和Xen之间、Domain相互之间的一种异步事件通知机制,用于处理GuestOS中的虚拟中断、物理中断以及Domain之间的通信。设备管理器:位于Dom0和IDD(IndependentDeviceDomain)中,可作为系统BIOS的扩展,用于向所有的设备提供通用的管理接口,并负责在Domain启动时加载特定的设备驱动、建立管理设备通道、提供硬件设备配置接口并处理设备访问错误。2.CPU虚拟化(1)半虚拟化对CPU指令集不提供硬件支持的情况,Xen只能采取半虚拟化的方案,通过修改GuestOS的内核对有缺陷的指令进行替换。在这种模式下,Xen位于操作系统和硬件之间,为其上运行的GuestOS内核提供虚拟化的硬件环境,因而Xen具有最高特权级,而GuestOS被迫迁移到相对低的特权级中,称为特权解除(PrivilegeDeprivileging)。x86架构中,CPU提供了4个特权级(0环到3环)以及分段和分页的内存保护机制,但目前多数操作系统中均只使用到了0环和3环两个特权级,对应地存在两种特权解除方式:0/1/3模型(操作系统运行在1环、VMM运行在0环、应用程序运行在3环)和0/3模型(操作系统和应用程序运行在3环,VMM运行在0环)。无论采用哪种模型,Xen都将替代原操作系统内核占据最高的特权级,因而在Xen下运行的GuestOS内核将无法执行某些特权指令,并将产生一般保护性错误,Xen必须通过超级调用向GuestOS提供执行这些特权指令执行的接口。(2)硬件虚拟化面前x86架构中通过引入新的指令和处理器运行模式,使得VMM和GuestOS运行在不同的模式下,GuestOS只能在受控模式下运行,而在需要VMM进行监控和模拟时由硬件支持模式的切换。在硬件虚拟化方式下,不需要对GuestOS内核进行修改,而是直接由硬件完成指令的捕获。3.内存虚拟化在半虚拟化模式下,Xen的内存虚拟化通过内存分段保护机制,使得Xen和GuestOS共存于同一个内存地址空间中,简化了Xen对Domain内存的分配和管理工作,同时利用内存分页机制,Xen可保证各Domain在内存上的有效隔离。Xen需要确保任意两个非特权Domain不会访问到同一内存区虚拟域,因而每一页或页目录的更新必须经过Xen的确认,以保证每个Domain只能控制自己的页表。通过修改GuestOS的内核,Xen可让GuestOS也参与到内存管理工作中来,Xen可更多关注于内存虚拟化中更重要的内存隔离工作,同时也可让硬件MMU在GuestOS的三层地址转换中发挥作用。在物理内存的管理中,Xen引入了VMware最先采用的气球驱动模型来调节分配给各Domain的物理内存。气球驱动可作为驱动程序运行在GuestOS(即Domain)中,GuestOS通过该驱动与Xen通信。当Domain需要更多内存时,将通过气球驱动向Xen提交内存申请请求,Xen可向气球驱动减压以便将将气球驱动所占用的部分空闲内存或通过气球驱动从其他Domain回收的内存分配给提交请求的Domain。如果Xen的可用空余内存过低,需要从某个Domain回收部分占用的内存,Xen可向气球驱动加压使气球膨胀,GuestOS将回收页面、释放内存以便给本地气球分配足够的内存空间,然后气球驱动将分配到的页面传给Xen,Xen将这些空闲内存集中起来备用。相关的工作原理如图7-26所示。(点击查看大图)图7-26气球驱动模型示意图4.I/O虚拟化在半虚拟化模式下,Xen采用了分离设备驱动模型来实现I/O的虚拟化。该模型将设备驱动划分为前端驱动程序、后端驱动程序和原生驱动三个部分,其中前端驱动在DomU中运行,而后端驱动和原生驱动在Dom0(IDD)中运行。前端驱动负责将GuestOS的I/O请求传递到Dom0(IDD)中的后端驱动,后端驱动对I/O请求解析并映射到物理设备,提交给相应的设备驱动程序控制硬件完成I/O操作。后端驱动检查接收到的I/O请求的有效性,并进行虚拟设备地址到物理设备地址的转换。转换之后,后端驱动将通过Dom0(IDD)中GuestOS提供I/O接口,间接地控制原生设备驱动完成提交的请求。前端驱动和后端驱动之间I/O请求的传递是通过Xen内部的一个环形队列(I/O环)来实现的,其结构参见图7-27所示。I/O环实际上是Xen提供的一块供DomU和Dom0(IDD)访问的共享内存。图7-27Xen的I/O环结构针对大量DMA数据在DomU和Dom0(IDD)之间的高效传递需求,Xen提供了授权表(GrantTable)机制。每个Domain都有一个授权表,用以指明其内部哪些页面可以被哪些Domain所访问。而Xen内部存在一个活动授权表(ActiveGrantTable)用于缓存来自各Domain授权表的活动表项内容。当DomU中的GuestOS需要进行DMA操作时,前端驱动会为对应的数据页面生成一个授权描述(GrantReference,GR)并将授权描述和请求一起放入I/O环。当Dom0(IDD)从I/O环中取出请求时,将根据授权描述,向Xen请求锁定该页面。Xen接收到请求后,在活动授权表或GuestOS的授权表中确认是否已授权特权域访问该页面,通过检查后,表明该页面可安全地进行DMA操作。Dom0(IDD)在接收到Xen的响应后即可开始向真实硬件发送DMA请求了。7.5.3其他虚拟化产品1.VMwareVI(VirtualInfrastructure)其实VMwareVI不是一款服务器虚拟化软件,而是一组服务器虚拟化软件的组合包,具体包括了:VMwareESXServer:用于虚拟化服务器、存储和网络的平台。VMwareVMFS(VirtualMachineFileSystem):用于存储虚拟化的高性能群集文件系统。VMwareVirtualSMP:为虚拟机提供多处理器支持。VMwareVirtualCenter:为IT基础架构提供集中化管理、操作自动化和优化。VMwareHighAvailability(HA):为虚拟机提供经济高效的高可用性。VMwareDRS(DistributedResourceScheduler):为虚拟机提供动态平衡和资源分配。VMwareVMotion:虚拟机实时迁移且服务不中断。VMwareConsolidatedBackup:用于虚拟机的集中式备份软件。VMwareESXServer采用半虚拟化技术,可直接将其安装到服务器裸机上,并配置虚拟机,而无需宿主操作系统。VMwareESXServer将每个虚拟机与服务器硬件和其他虚拟机进行隔离,以确保单个虚拟机崩溃不会影响到其他虚拟机,应用程序只能通过配置的网络连接进行通信。VMwareESXServer将虚拟机环境封装为一组文件,以便于备份、移动和复制。VMwareESXServer将物理机器的资源分离出来形成一个逻辑的资源池,并负责按需将系统资源分配给虚拟机使用,并确保服务器资源能被远程管理、自动预制和标准化。ESXServer提供了过量使用内存的功能,即虚拟机的内存总和可以安全地超越服务器的物理内存总量,该特性可提高服务器内存的整体利用效率。2.微软Hyper-V微软的WindowsServer2008是一个原生架构的虚拟机产品,可直接控制硬件资源,其中的Hypervisor部分被称为Hyper-V。Hyper-V在WindowsServer2008中仅是一个服务器角色,但其功能几乎涵盖了VMwareESX的所有功能范围,直接挑战VMware的行业霸主地位。Hyper-V的系统架构如图7-28所示。其中的每个分区都代表了一台虚拟机,父分区必须运行WindowsServer2008,其中包含了一个虚拟化堆栈,该堆栈包括了管理工具和自动操作组件(如WMI界面)。每个子分区可以运行各自的子操作系统。所有的操作系统都必须运行在分区中。子分区和父分区之间的通信主要通过VMBus进行,VMBus使用共享内存在同一主机服务器上与虚拟机进行安全通信。Hyper-V采用了微内核架构,使得Hypervisor本身很小(只有300k左右),只有少量的程序运行在具有特权的Hypervisor层次上,也可保证系统整体更安全,系统的稳定性也得以大幅提高。(点击查看大图)图7-28Hyper-V架构图Hyper-V采用了VSP/VSC架构,其中VSP是虚拟化服务提供方,运行在宿主操作系统之上,而VSC是虚拟化服务客户端,运行在虚拟机操作系统之上,两者之间将通过VMBus组件进行连接。位于子分区的应用程序发出I/O操作请求后,将通过本地虚拟机操作系统平台的I/O堆栈,调用虚拟的设备驱动(VSC)。VSC接收到I/O请求后,通过VMBus将请求转发到父分区的对应VSP,VSP对操作请求进行验证和处理后,最终通过本地的I/O堆栈和硬件设备驱动访问物理设备完成操作。Hyper-V可支持4CPU的WindowsServer2008虚拟机和2CPU的WindowsServer2003虚拟机。当然该特性并非Hyper-V所独有。多处理器虚拟机可支持更高的工作负载,但管理更多的处理器也将带来额外的处理负荷,因而应该按需使用多处理器虚拟机。

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功