服务器虚拟化实现 – 初窥 Xen

作者:Hily 原始链接:http://hily.me/blog/2008/10/virtualization-xen-architecture/
版权声明:可以转载,转载时务必以超链接形式标明文章原始出处和作者信息及版权声明

Xen 是一款开源的准虚拟化的虚拟机监控器(VMM, Virtual Machine Monitor),在 GPL2 许可下发行。本文主要对虚拟化的一些基本概念进行讲解,同时简要地分析了 Xen 的基本架构与运行原理(对 2008 年 2 月的架构进行分析,如有更新,请查阅官方文档)。

完全虚拟化和准虚拟化

准虚拟化(para-virtualization),是与完全虚拟化(full-virtualization)相对的。完全虚拟化实现中,实际 上是用软件实现了一个硬件模拟器,模拟了所有计算机硬件,对于客户操作系统来说,它们并不知道自己工作在虚拟的硬件上。客户操作系统的所有指令和请求,都 交给模拟器,模拟器再将相关操作交由宿主系统完成。而在准虚拟化实现中,客户操作系统知道自己工作在虚拟环境中,需要配合虚拟层来完成对硬件系统的操作。

当前的完全虚拟化技术主要依靠软件虚拟实现,实际硬件对客户操作系统是不可见的,客户操作系统对硬件的操作需要经过多层次软件的处理,因此虚拟的开 销较大。而在准虚拟中,硬件被抽象成硬件抽象层,客户操作系统对硬件的操作直接作用于该层上,相比完全虚拟来说较为直接,开销也小得多。

常见虚拟模式

常见的虚拟模式根据所处层次不同,可分为四种:

硬件虚拟模式
逻辑分区模式
软件虚拟模式
应用虚拟模式
四种虚拟模式的架构大致如下(图片引自互联网):

从上图很容易看出,我们在 Windows 下常用的 VMware,属于软件虚拟模式,工作于主操作系统之上,使用纯软件虚拟,是完全虚拟的。

至于 Xen,事实上它有两种工作模式,上图中只提到它工作于逻辑分区模式,事实上它也可以工作于软件虚拟模式,即 Xen 同时支持准虚拟化和完全虚拟化。

目前 Xen 的主要竞争产品是来自 VMware 的 VMware ESX Server。

Xen 基本架构

Xen 直接工作在系统硬件上,它将上层对硬件的操作封装在 Xen Hypervisor 中,架构图如下:

一个 Xen 的虚拟环境中包含以下部件:

Xen Hypervisor
Xen Hypervisor 位于所有虚拟操作系统之下,硬件之上。它将底层硬件进行抽象,同时负责各虚拟机的 CPU 调度和内存的分配,它还控制着各虚拟机所共用的进程运行环境。

Domain 0
Domain 0 本质上也是一个虚拟机,但它是唯一的,它需要运行在其它虚拟机之前。同其它虚拟机一样,Domain 0 也工作在 Xen Hypervisor 上,但是它还拥有操作 I/O 资源的特权,同时它还要与其它的虚拟机(Domain U)进行交互。

Domain U
Domain U 分两种类型:PV Guest 和 HVM Guest。

PV Guest 是准虚拟化的虚拟机实例,它要求操作系统来配合虚拟环境执行硬件操作,因此操作系统需要考虑如何与 Hypervisor 交互,所以一般在 PV Guest 实例上运行的客户操作系统是修改过的 Linux。

HVM Guest 是完全虚拟化的虚拟机实例,在此实例上运行的操作系统会认为是工作在真实硬件环境中,因此不需要修改客户操作系统,就可以在上面运行。

Domain Management and Control (Xen DM&C)
在 Xen DM&C 中提供了一系列用于 Domain 管理和控制的 daemon 和工具,管理命令都是通过命令行传递给 Domain 0,最终作用于 Xen Hypervisor 上的。

Xen 驱动结构

使用 Domain U PV Guest

比如 PV Guest 要对硬件进行写入操作时,因为没有权限直接操作硬件,它会先通过 PV Driver 先将数据写到 Xen Hypervisor的共享内存中。而后发送一个事件中断给 Domain 0,Domain 0 在检测到中断后,通过 PV Backend Driver 通知 Xen Hypervisor 将数据写入到硬件。

使用 Domain U HVM Guest

HVM Guest 使用了一个模拟器:Qemu daemon,模拟器位于 Domain 0 中。HVM Guest 的所有硬件操作都由 Qemu-DM 解析最后由 Domain 0 作用于 Xen Hypervisor 而实现。

在 Xen 3.3.0 版本以前,Domain 0 需要为每个 Domain U HVM Guest 启动一个 Qemu-DM。Qemu-DM 在当前最新的 Xen 3.3.0 版本中已被 Stub domain 替代,以取得更好的扩展性、安全性和性能。

在 Xen 3.3.0 发布说明中有这么一项:

HVM emulation domains (qemu-on-minios) for better scalability, performance and security

其中 HVM emulation domains 指的就是 Stub domain,以下摘自 Xen 开发的邮件列表。

An ioemu (the device emulator of HVM guest) can run in Dom0.

An ioemu can also run in a per-hvm-domain stubdomain (namely, the “HVM emulation domain”).
Stubdomain is a very small domain running mini-os.
In this way, we can achieve “a better scalability, performance and security…”.

关于 Xen 的虚拟效率

准虚拟化是 Xen 的亮点,因此这里也只讨论 Xen PV Guest 的虚拟效率。Xen PV Guest 使用准虚拟化技术实现,因此毋庸置疑,它的虚拟效率自然要比使用软件方式模拟硬件的模拟器高很多。以下是来自官方的虚拟效率说明:

http://www.xen.org/about/

Xen offers near-native performance for virtual servers with up to 10 times less overhead than proprietary offerings, and benchmarked overhead of well under 5% in most cases compared to 35% or higher overhead rates for other virtualization technologies.

低于 5% 的虚拟开销,对于现今许多空闲的服务器来说,完全可以接受。既然如此,何不赶快给你的服务器装上 Xen,再虚拟出几台虚拟机,享受一下准虚拟技术带来的免费的服务器增值呢?

你可能感兴趣的:(Xen)