Xen最初是作为剑桥大学的一个项目,目前 XEN.ORG 社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。Xen 是一种直接运行在硬件上一层软件,它可以让电脑硬件上同时跑多个用户的操作系统。由于对 x86, x86-64, Itanium, Power PC, 和 ARM 这些处理器的支持,所以 Xen 管理工具可以支持的操作系统有 Linux, NetBSD,FreeBSD,Solaris, Windows 和其他一些运行在 XEN 上的正常的操作系统。如图 1 所示 XEN 在系统中的位置:
图1 Xen 在系统的位置
一、Xen虚拟环境组件
- XEN Hypervisor
- Domain 0 Guest
Domain Management and Control(XEN DM&C)
- Domain U Guest(Dom U)
PV Guest
HVM Guest
下图 2 显示除了各部分之间的关系:
图2 Xen 三部分组成之间关系图
Xen Hypervisor
Xen Hypervisor 是介于操作系统和硬件之间的一个软件抽象层。它负责在各个虚拟机之间进行 CPU 调度和内存分配。Xen Hypervisor 不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。Xen Hypervisor 不会处理网络、存储设备、视频以及其他 I/O。
Domain 0
Domain 0 是特权域,是一个修改过的 Linux kernel,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机(Domain U: PV and HVM Guest)进行交互。Domain 0 需要在其它 Domain 启动之前启动。
Domain 0 中有两个驱动 Network Backend Driver 和 Block Backend Driver,它们分别用来处理来自 Domain U 的网络和本地磁盘请求。 Network Backend Driver与本地网络硬件直接通信,以此来处理来自于Domain U所有虚拟机访问网络设备的请求;Block Backend Drive与本地存储设备进行通信,以此来处理来自于Domain U的磁盘数据读写的请求。
Domain U
Domain U没有直接访问物理硬件的权限(Domain U的"U"是来自于英文单词 unprivileged,是指没有权限的),但Domain 0 有。运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如 Windows 等。
二、Xen工作原理
图3 Domain 0 与 Domain U PV Guest 通信示意图