Xen 虚拟化技术

时间:2021-07-26 08:54:42

Xen 是一种开源的、属于类型1(裸金属虚拟化,Baremetal Hypervisor)的虚拟化技术,它使多个同样操作系统或不同操作系统的虚拟机运行在同一个物理主机节点上成为可能并实现。

Xen 是唯一的属于类型1(裸金属虚拟化,Baremetal Hypervisor)并且开源的虚拟化技术,它被作为商业应用或开源应用的基础而加以使用,如服务器虚拟化、Infrastructure as a service(Iaas)、桌面虚拟化、安全应用、嵌入式和硬件设备等。

Xen 虚拟化技术的关键特性:

1)  轻便小型的设计:核心代码有1MB左右,它使用了微小内核设计,占用极少内存,加上有限的接口设计,使得它比其他虚拟化技术更健壮、更安全。

2)  操作系统无关性:Domain0 一般安装在Linux 操作系统中,也可以使用其他操作系统代替。如NetBSD、OpenSolaris等。

3)  驱动分离:Xen 虚拟化技术允许主要的硬件设备驱动运行与虚拟机内部,当驱动出现 crash(宕机)或者报错时,包含该驱动的虚拟机可以重启,该驱动也可以重启,这样不会影响其他的虚拟机。

4)  半虚拟化技术:运行在半虚拟化技术上的虚拟机已经经过优化,它们可以运行得更加流畅,比运行在需要硬件扩展支持的全虚拟化管理程序(HVM)上的虚拟机更快。

Xen 虚拟化关键技术有3点(包括类型、Domain0、Toolstacks)

类型:Xen 虚拟机技术支持半虚拟化(Para-Virtualization,PV)和全虚拟化(Hardware-assisted Virtualization,HVM)两种类型。

Domain0:Xen 虚拟化架构中包含一个特殊的域(Domain0),其包括硬件设备驱动和控制虚拟机的Toolstack。

Toolstacks:其涵盖各种不同的Toolstack。

普及知识点:

裸金属虚拟化(Baremetal Hypervisor),类型1:该类型的虚拟化技术直接运行在物理主机节点硬件上设备上,并且管理虚拟机操作系统。

可托管的虚拟化(Hosted Hypervisor),类型2:该类型的虚拟化技术允许运行在普通的操作系统上,和普通的计算机程序类似。

Xen 架构的重点:

1)  Xen 虚拟化管理程序是一个极小的软件程序,包含大概15万行代码。Xen 虚拟化管理程序本没有I/O功能。

2)  虚拟机是一个虚拟化的环境,每个虚拟机都运行着自己的操作系统和应用程序。Xen 支持两种虚拟化模式:半虚拟化和全虚拟化模式。在同一个虚拟化管理程序上可以同时并行使用两种虚拟化模式,也可以串行在全虚拟化模式上使用半虚拟化模式,以此保证半虚拟化和全虚拟化的连续性。虚拟机与硬件之间的完全隔离的,它们没有任何权限可以访问底层的硬件和I/O设备等,因此它们也被叫做DomainU(Unprivileged Domain)。

3)  Domain0:是一个特殊的虚拟机,其具备特殊的、足够的权限直接访问底层的硬件设备,处理所有底层的I/O设备请求,并与其他虚拟机(DomainU)进行交互通信。Domain0对外部开放一个接口,使用户可以控制整个系统。没有Domain0,Xen 虚拟化管理程序是无法使用的,它是整个系统启动后加载的第一个虚拟机。

4)  Toolstack:包含在Domain0中,也叫作控制栈,其允许用户管理虚拟机,包括虚拟机创建、删除和配置等。

5)  终端是Toolstack 对外部开放的一个接口,用户可以通过命令行或图形化界面控制整个系统,OpenStack 和CloudStack 中的编排服务也被支持。

6)  Domain0 要求一个支持 Xen 虚拟化管理程序的内核,半虚拟化的虚拟机(DomainU)要求一个支持半虚拟化的内核。比较新的Linux 操作系统基本都支持,也包括Toolstack。

虚拟化类型

半虚拟化(PV):

半虚拟化是由 Xen 虚拟化管理程序引入的一个轻量级、高效的虚拟化模式,之后被其他虚拟化平台所被采用。半虚拟化不要求物理主机节点CPU具备扩展性,但是其需要支持半虚拟化的内核和驱动。因此,虚拟机能够感知到虚拟化管理程序;同时,因为没有硬件仿真,所以运行非常高效。支持半虚拟化的内核包括Linux、FreeBSD、NetBSD和OpenSolaris。

全虚拟化(HVM):

全虚拟化需要物理主机节点CPU扩展特性的支持,为此,Intel和AMD厂商提供了Intel VT和AMD-V技术。Xen 虚拟化管理程序使用QEMU 仿真硬件设备,包括BIOS、IDE磁盘控制器、VGA图形适配器、USB控制器和网络适配器等。硬件的扩展特性提高了仿真性能,同时,全虚拟化模式下的虚拟机不再需要特殊内核的支持,这也意味着Windows 操作系统在基于Xen全虚拟化的平台也是被支持的。一般情况下,半虚拟化的虚拟机比全虚拟化的虚拟机性能表现更好,因为全虚拟化的虚拟机需要硬件仿真,会消耗一部分性能。在某些情况下,可以使用半虚拟化驱动加速全虚拟化虚拟机的I/O性能。在Windows 虚拟机中,需要安装合适的虚拟化驱动。

全虚拟化模式+半虚拟化驱动(PVHVM)

全虚拟化模式下的虚拟机可以使用指定的半虚拟化驱动,以此达到增强系统性能的目的。这些驱动是为全虚拟化环境而优化的半虚拟化驱动,绕过磁盘和网络的模式仿真,从而在全虚拟化模式下获得更好的性能。这也就意味着在使用一些虚拟机操作系统时会获得更好的性能。

基于Xen 虚拟化管理程序的半虚拟化虚拟机可以自动使用半虚拟化驱动,全虚拟化模式下使用的半虚拟化驱动仅使用于全虚拟化模式的虚拟机。

半虚拟化+硬件扩展特性(PVH)

Xen虚拟化管理程序4.4 版本中包含一种虚拟化模式,叫做基于DomainU的PVH;4.5版本又开发了一种基于Domain0(Linux和BSD)的PVH虚拟化模式,其实质是半虚拟化的虚拟机可以使用半虚拟化驱动以提高I/O性能,也可以使用硬件扩展特性提高系统性能,不需要硬件仿真。从本质上讲,PVH对两种虚拟化模式进行了合并,简化Xen虚拟化管理程序的架构。

简而言之,PVH在linux和BSD中使用了极少的代码和接口,从而减少了TCB和攻击的可能性,降低了风险。一旦对其进行相应的优化,它将具备更好的性能和更低的延迟,特别是在64位的操作系统上表现更优。PVH要求虚拟机操作系统对其提供支持,在配置文件中设置pvh=1即可启用PVH支持。