翻译说明
在研究和学习虚拟化技术的过程中看了很多文档,很多是翻译成中文的,对那些无私的为大家服务的贡献者很是敬佩,同时也触发了我为大家做些贡献的愿望。事实上翻译和整理的过程也是自己进一步学习的过程。由于自己的水平有限,翻译过程中的错误欢迎大家批评指正。
开源,很好!
概要
本文档描述的是Xen hypervisor的宏观体系结构、辅助工具以及构建一个完整虚拟化环境所需的应用程序。本文的综合介绍了基于Xen3.2(2008年1月)的Xen体系结构,更详尽的描述请参考Xen books。
Xen组成要素
一个Xen虚拟化环境由以下相互配合的元素构成:
l Xen Hypervisor
l Domain 0
l Domain管理和控制工具
l Domain U PV客户系统
l Domain U HVM客户系统
下面的图形是对这些要素基本组织的描述
Xen Hypervisor
Xen Hypervisor是一个介于硬件和操作系统之间的软件层,它负责在各虚拟机之间进行CPU调度和内存分配(partitioning)。Xen Hypervisor不仅抽象出硬件层,同时控制虚拟机的执行,因为这些虚拟机共享同一个处理环境。Xen Hypervisor不会处理网络、存储设备、视频以及其他I/O。
Domain 0
Domain 0是一个修改过的Linux kernel,是唯一运行在Xen Hypervisor之上的虚拟机,它拥有访问物理I/O资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0需要在其它Domain启动之前启动。
Domain 0中包含两个驱动:Network Backend Driver和Block Backend Driver,分别负责处理来自Domain U的网络和本地磁盘请求。Network Backend Driver直接和本地网络硬件进行通信以处理所有来自Domain U上客户操作系统的网络请求。Block Backend Driver和本地存储设备进行通信以处理来自Domain U的读写请求。
![](http://my.oschina.net/uploads/space/2009/1214/092934_ATFx_38594.png)
Domain U
运行在Xen Hypervisor上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如Linux、Solaris、FreeBSD等其它UNIX操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如Windows等。
Domain U PV Guests的内核知道它自己不能直接访问物理硬件,因为他知道有其他的虚拟机也运行在同一个环境中。而Domain U HVM Guests的内核不知道他正在和其他虚拟机共享一个处理环境,它认为它运转在物理硬件上。
Domain U PV Guests包含两个驱动:“PV Network Driver”和“PV Block Driver”。
Domain U HVM Guests虚拟机内没有PV Driver,而是在Domain 0里为每一个HVM Guest启动一个特殊守护进程:Qemu-dm,由Qemu-dm负责客户操作系统的网络和磁盘请求。
Domain U HVM Guests必须进行初始化为某类机器,所以要在Domain U上附加一个软件:Xen虚拟固件,来模拟BIOS。关于Xen虚拟化固件的更多信息请参考后面的内容。
域(Domain)管理和控制
开源社区提供了一系列的域管理和控制工具(Linux守护程序)。这些服务运行在Domain 0,他们支持所有对虚拟化环境的管理和控制,下面的几个图中为了更清楚的说明将这些守护进程画在了Domain 0的外部。
Xend
Xend是一个python应用程序,它是Xen虚拟化环境的系统管理工具。它通过对libxenctrl库的调用实现对Xen Hypervisor的请求。Xend处理的所有请求都是通过Xm工具提供的XML RPC接口提交的,见下图。