虚拟机管理器XEN的虚拟化模式


XEN体系架构Xen是由剑桥大学计算机实验室开发的一个开源项目。
是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS)。
目前已经在开源社区中得到了极大的推动。
Xen支持x86、x86-64、和ARM多种处理器,因此Xen可以在大量的计算设备上运行,目前Xen支持Linux、NetBSD、FreeBSD、Solaris、 Windows和其他常用的操作系统作为客户操作系统在其管理程序上运行。
上图为Xen Project Hypervisor的基本体系结构。
虚拟机管理程序位于裸机上。
Dom0即“控制域”,是一个类似于Guest OS,但是与Guest OS有两个基本的功能差异:(1) 控制域能够与管理程序通信,以指示其启动和停止客户虚拟机。
(2) 默认情况下,控制域包含寻址硬件所需的设备驱动程序。
Xen 的 VMM ( Xen Hypervisor) 位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域 Domain)之间的相互隔离。
Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain 0,而其余的域则称为Domain U。
Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。
Domain 0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与 Xen 提供的管理 API 交互,并通过用户模式下的管理工具来管理 Xen 的虚拟机环境。
Xen2.0之后,引入了分离设备驱动模式。
该模式在每个用户域中建立前端(front end)设备,在特权域(Dom0)中建立后端(back end)设备。
所有的用户域操作系统像使用普通设备一样向前端设备发送请求,而前端设备通过IO请求描述符(IO descripror ring)和设备通道(device channel)将这些请求以及用户域的身份信息发送到处于特权域中的后端设备。
这种体系将控制信息传递和数据传递分开处理。
在Xen体系结构设计中,后端设别运行的特权域被赋予一个特有的名字–隔离设备域(Isolation Device Domain, IDD),而在实际设计中,IDD 就处在Dom0中。
所有的真实硬件访问都由特权域的后端设备调用本地设备驱动 (native device drive)发起。
前端设备的设计十分简单,只需要完成数据的转发操作,由于它们不是真实的设备驱动程序,所以也不用进行请求调度操作。
而运行在IDD中 的后端设备,可以利用Linux的现有设备驱动来完成硬件访问,需要增加的只是IO请求的桥接功能,能完成任务的分发和回送。
虚拟化模式PV半虚拟化(Paravirtualization)简称为PV,是Xen主导的虚拟化技术。
这种技术允许虚拟机操作系统感知到自己运行在Xen Hypervisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机。
在Xen Hypervisor上运行的半虚拟化的操作系统,为了调用系统管理程序(Xen Hypervisor),要有选择地修改操作系统,然而却不需要修改操作系统上运行的应用程序。
由于 Xen 需要修改操作系统内核,所以您不能直接让当前的 Linux 内核在 Xen 系统管理程序中运行,除非它已经移植到了Xen 架构。
不过,如果当前系统可以使用新的已经移植到 Xen 架构的Linux 内核,那么您就可以不加修改地运行现有的系统。
HVM完全虚拟化(Hardware Virtual Machine)又称“硬件虚拟化”,简称HVM,是指运行在虚拟环境上的虚拟机在运行过程中始终感觉自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机的虚拟技术。
在Xen Hypervisor运行的完全虚拟化虚拟机,所运行的操作系统都是标准的操作系统,即:无需任何修改的操作系统版本。
值的注意的是,在Xen上虚拟的Windows虚拟机必须采用完全虚拟化技术。
HVM扩展不需要进行软件仿真或二进制转换,而是可以执行所谓的“硬件仿真”。
HVM是指一组扩展,它使虚拟化一个组件变得更加简单:处理器。
要运行完全虚拟化的guest虚拟机,还需要虚拟化许多其他组件。
为此,Xen Project集成了qemu来模拟磁盘、网络、主板和PCI设备。
在管理程序中编写了模拟中断控制器和集成的ROM BIOS为访客提供虚拟BIOS。
尽管HVM扩展只是制作完全虚拟化VM的一个组件,但虚拟机管理程序中的“完全虚拟化”模式称为HVM模式,将其与PV模式区分开来。
PVHVMPV在HVM上的主要目标是通过使用专门优化的半虚拟设备驱动程序(称为PVHVM或PV-on-HVM驱动程序)来提高完全虚拟化HVM来宾的性能。
这些驱动程序在HVM环境下优化你的 PV驱动,模拟的磁盘和网络IO旁路运行,从而让你的PV在HVM中有更好的性能。
PVHPVH是一个完全PV内核模式,运行半虚拟化磁盘和网络,半虚拟化中断和定时器,没有任何类型的模拟设备(因此没有qemu),没有BIOS或传统启动。
但它不使用PV MMU,而是使用HVM硬件扩展以虚拟化页表,以及系统调用和其他特权操作。
PVH具有所有可能的模式和功能组合的最佳特性,简单、快速、安全的接口,低内存开销,同时充分利用硬件。
ARM体系结构中PVH是客户操作系统运行的首选模式。
如果PVH成熟(可能在推出后大约五年左右),XEN可能会考虑从Linux内核中删除非PVH支持,从而使对Linux的Xen Project支持的维护变得更加简单。
XEN基本组成Xen Hypervisor:Xen Hypervisor是直接运行在硬件与所有操作系统之间的基本软件层。
它负责为运行在硬件设备上的不同种类的虚拟机(不同操作系统)进行CPU调度和内存分配。
Xen Hypervisor对虚拟机来说不单单是硬件的抽象接口,同时也控制虚拟机的执行,让他们之间共享通用的处理环境。
Xen Hypervisor不负责处理诸如网络、外部存储设备、视频或其他通用的I/O处理。
Domain 0:运行在Xen管理程序之上,具有直接访问硬件和管理其他客户操作系统的特权的客户操作系统。
Domain 0是经过修改的Linux内核,是运行在Xen Hypervisor之上独一无二的虚拟机,拥有访问物理I/O资源的特权,并且可以与其他运行在Xen Hypervisor之上的其他虚拟机进行交互。
所有的Xen虚拟环境都需要先运行Domain 0,然后才能运行其他的虚拟客户机。
Domain 0 在Xen中担任管理员的角色,它负责管理其他虚拟客户机。
在Domain 0中包含两个驱动程序,用于支持其他客户虚拟机对于网络和硬盘的访问请求。
这两个驱动分别是Network Backend Driver和Block Backend Driver。
Network Backend Driver直接与本地的网络硬件进行通信,用于处理来自Domain U客户机的所有关于网络的虚拟机请求。
根据Domain U发出的请求Block Backend Driver直接与本地的存储设备进行通信然后,将数据读写到存储设备上。
DomainU:运行在Xen管理程序之上的普通客户操作系统或业务操作系统,不能直接访问硬件资源(如:内存,硬盘等),但可以独立并行的存在多个。
Domain U客户虚拟机没有直接访问物理硬件的权限。
所有在Xen Hypervisor上运行的半虚拟化客户虚拟机(简称:Domain U PV Guests)都是被修改过的基于Linux的操作系统、Solaris、FreeBSD和其他基于UNIX的操作系统。
所有完全虚拟化客户虚拟机(简称:Domain U HVM Guests)则是标准的Windows和其他任何一种未被修改过的操作系统。
无论是半虚拟化Domain U还是完全虚拟化Domain U,作为客户虚拟机系统,Domain U在Xen Hypervisor上运行并行的存在多个,他们之间相互独立,每个Domain U都拥有自己所能操作的虚拟资源(如:内存,磁盘等)。
而且允许单独一个Domain U进行重启和关机操作而不影响其他Domain U。
Xen Project软件不再附带Domain 0使用所需的特殊修改内核(也不涉及域U)。
这是因为对于大多数用例来说,分发版和主线内核中的Xen Project支持现在已经足够了。
从Linux v3.0开始,功能Domain 0所需的一切都包含在主线Linux树中,这导致通过发行版重新支持Xen Project Domain 0。

未经允许不得转载:选主机测评网 » 虚拟机管理器XEN的虚拟化模式