Xen 工作原理

 日期:2012-3-5

 版本:1.0

 译者:杨朝中
目录
执行摘要 ................................................................................................................................... 3


Xen 虚拟环境组件 .................................................................................................................... 3

   Xen Hypervisor ...................................................................................................................... 4

   Domain 0 ............................................................................................................................... 4

   Domain U ............................................................................................................................... 5

   Domain Management and Control........................................................................................ 7

       Xend ................................................................................................................................... 8

       Xm ...................................................................................................................................... 8

       Xenstored .......................................................................................................................... 8

       Libxencrl ............................................................................................................................ 8

       Qemu-dm........................................................................................................................... 9

       Xen Virtual Firmware ....................................................................................................... 10

Xen Operation ......................................................................................................................... 10

   Domain 0 to Domain U Communication ............................................................................. 10

Xen PCI Passthru ...................................................................................................................... 11

Glossary ................................................................................................................................... 12
执行摘要


本文档涵盖了 Xen Hypervisor 的高层架构概要视图,及其用于支持完整虚拟环境

的相关工具和应用。该架构文档基于 Xen 3.4 发行版,仅仅介绍了 Xen 的整体架

构。更多的完整架构描述,请参考 http://wiki.xensource.com/xenwiki/Books。




Xen 虚拟环境组件


Xen 虚拟环境由若干协同工作的组件组成,从用户角度看,其包括:
Xen Hypervisor
Domain0 Guest
    Domain Management and Control(Xen DM&C)
DomainU Guest(Dom U)
    PV Guest
    HVM Guest

这些组件的基本组织如下图:
Xen Hypervisor


Xen Hypervisor 是一个基本的软件抽象层,其位于硬件之上,操作系统之下。它

负责 cpu 的调度,并为每个运行于硬件之上的虚拟机划分内存空间。监视器(Xen

hypervisor)为虚拟机提供硬件抽象,与此同时,由于各个虚拟机分享共同的运

行环境,监视器还需要控制虚拟机的运行。监视器对网络、外存设备、视频、或

者其他可以在计算机系统中见到的 I/O 功能一无所知。




Domain 0


Domain 0 是一个虚拟机。它是修改过的 linux 内核,其运行在 Xen hypervisor 之

上,拥有访问物理 I/O 资源的特殊权限,并且和其他虚拟机(Domain U:PV and HVM

Guests)进行通信。需要指出一点,Domain 0 是唯一的。Xen 的完整虚拟环境的构

建要求 Domain 0 在其他虚拟机能够启动之前运行起来。


在 Domain 0 中,包含两个驱动:Network Backend Driver 和 Block Backend Driver。

这两个驱动可以支持来自于 Domain U 的网络与本地磁盘访问请求。Network
Backend Driver 与本地网络硬件直接通信,以此处理来自于 Domain U 所有虚拟机

访问网络设备的请求。Block Backend Driver 与本地存储设备进行通信,以此完成

来自于 Domain U 的磁盘数据读写请求。




Domain U


DomainU 没有直接访问物理硬件的权限,但 Domain 0 有。此外,DomainU 通常

被看作是没有权限的(DomainU 中的“U”来自于英文单词 unprivileged)。所有运

行在 Xen hypervisor 之上的平行虚拟化机器都被看作是 Domain U PV Guests。同

时,其操作系统为修改过的 linux,比如 Solaris,FreeBSD,以及其他 UNIX 操作系

统。所有运行于 Xen hypervisor 之上的完全虚拟化机器都被看作是 Domain U HVM

Guests。同时,其操作系统为标准的 windows 或者其他未作修改的操作系统。


Domain U PV Guest 虚拟机能够知晓自己没有直接访问硬件的权限,也能知道其
他虚拟机也运行在同一个物理机器上。与此相反的是,Domain U HVM 虚拟机并

不知道它正和其他虚拟机在同一个物理机器上分享处理器,也不知道其他虚拟机

正在运行。


Domain U PV Guest 虚拟机包含两个驱动:PV NetworkDriver 和 PV Block Driver,

其用于处理网络和磁盘访问。




Domain U HVM Guest 虚拟机虽然没有 PV drivers, Domain 0 却为它们启动
                                      但

了一个特殊的 Qemu-dm 镜像。Qemu-dm 支持 Domain U HVM Guest 对网络和

磁盘的访问请求。




Domain U HVM Guest 在初始化时必须尽可能地添加一个软件 Xen virtual

firmware,该软件用于模拟操作系统启动之前所需的 BIOS。更多有关 Xen virtual

firmware 的信息请参考后续章节。
Domain Management and Control


开源社区把一系列 linux 守护进程划分为域管理和控制工具。这些守护进程存在

于 Domain 0 虚拟机,它们用于支持整个虚拟环境的管理和控制。下面的图表展

示了 Domain 0 中的守护进程。通过这个图表,可以对整个架构有更清晰的理解。
Xend


Xend 守护进程是一个 Python 应用程序,它被看作 Xen 虚拟环境的系统管理器。

Xend 利用 Libxenctrl 获得对 Xen hypervisor 的访问请求。所有需要被 Xend 处理的

请求都通过一个 Xm 工具的 XML RPC 接口被发送到 Xend。



Xm


Xm 是一个命令行工具,它获取用户输入,并把这些输入的命令通过 XML RPC 传

输到 Xend。



Xenstored


Xenstored 守护进程维护一个信息注册表,这些信息涉及内存、Domain 0 与所有

其他 Domain U Guests 之间的事件通道链。Domain 0 虚拟机利用这个注册表来设

置与其他虚拟机之间的设备通道。
              (更多的细节信息,请参看 Domain 0 to Domain

U Communication 章节)



Libxencrl


Libxenctrl 是一个 C 程序库,它使得 Xend 可以通过 Domain 0 访问 Xen hypervisor。

privcmd 是 Domain 0 中有一个特殊的驱动,它将 Xend 的访问请求转发给

hypervisor。
Qemu-dm


每个运行在 Xen 虚拟环境中得 HVM Guest 虚拟机需要它们自己的 Qemu 守护进

程。这个工具处理所有来自于 Domain U HVM Guest 虚拟机的网络与磁盘访问请

求,使得完全虚拟化在 Xen 系统环境中得以实现。Qemu 需要访问网络和 I/O 设

备,所有它必须处于 Xen hypervisor 之外。正因为如此,Qemu 处于 Domain 0 虚

拟机中。


Stub-dm 是一个新工具。它使得 Xen 未来的版本不需要为么一个 Domain U HVM

运行 Qemu,而是为每个 Domain U HVM 提供一个可用的服务程序集。这个特性

在 Xen 3.2 版本中还不可使用,但目前已经是 Xen-unstable 版本的一部分。此外,

Xen 3.3 版本将会发布该特性。
Xen Virtual Firmware


Xen Virtual Firmware 是一个被嵌入到 Domain U HVM Guest 中得虚拟 BIOS,它使

操作系统接收其正常引导过程所需要的标准启动指令,以得到一个 PC 兼容的软

件环境。




Xen Operation


本章描述了并行虚拟化的 Domain U 虚拟机如何通过 Xen hypervisor 和 Domain 0

虚拟机完成与外部网络或存储设备的通信。




Domain 0 to Domain U Communication


较早一段时期, hypervisor 并不支持网络和磁盘访问请求。
       Xen                       因此,Domain U PV

Guest 必须通过 Xen hypervisor 与 Domain 0 通信以完成网络或磁盘访问请求。下

面的例子描述了 Domain U PV Guest 如何往本地磁盘写数据。


Domain U PV Guest 虚拟机中的 PV block driver 接收往磁盘写数据的请求,然后通

过 Xen hypervisor 将数据存放到本地内存中的某个适当的区域。需要指出的是,

该内存区域由该 Domain U PV Guest 虚拟机与 Domain 0 共享。在 Xen hypervisor

中,存在异步域间中断,位于 Domain 0 和 Domain U PV Guest 之间的事件通道允

许 Domain 0 和 Domain U PV Guest 可以通过该异步域间中断完成通信。Domain 0

会收到一个来自 Xen hypervisor 的中断请求,该中断请求会导致 PV Block Backend

Driver 访问本地系统内存并从 Domain U PV Guest 虚拟机的共享内存中读取适当
的数据块。然后,共享内存中的数据将被写到本地硬盘的某个特定位置。


下图中,Domain 0 和 Domain U PV Guest 之间的事件通道链接简要地展示了系统

工作原理。实际上,事件通道使用在 Xenstored 中注册的特殊中断处理程序,运

行在 Xen hypervisor 之上。这些特殊中断处理程序允许 Domain 0 和 Domain U PV

Guest 通过本地内存快速地共享信息。


下面的图标展示了之前所描述的系统业务。




Xen PCI Passthru


为了提高整体性能,减轻 Domain 0 的负担,Xen 设计了 PCI Passthru 这样一个新

特性。PCI Passthru 允许 Domain U Guest 拥有直接访问本地硬件的权限,而不是
通过 Domain 0 来访问硬件。下图描述了这个特性是如何工作的:




Domain U Guest 拥有直接同特殊硬件对话的权利,而不是之前那种使用 Frontend

和 Backend drivers 的方法。




Glossary

C: http://www.cprogramming.com/; a computer programming language

Daemons: http://en.wikipedia.org/wiki/Daemon_(computer_software); a program
running in the background rather than under direct control of a user

Driver: http://en.wikipedia.org/wiki/Device_driver; program allowing software to
interact with hardware

Full Virtualization: http://en.wikipedia.org/wiki/Full_virtualization; a virtual machine
not aware of its virtualization

Interrupt: http://en.wikipedia.org/wiki/Interrupt; signal from hardware to software
requesting a specific action in software

Kernel: http://en.wikipedia.org/wiki/Linux_kernel; the central component of a
computer operating system

Paravirtualized: http://en.wikipedia.org/wiki/Paravirtualization; virtual machine
running on a hypervisor that is aware of it being virtualized]
Python: http://www.python.org/; a dynamic object oriented programming language

ROM BIOS: http://en.wikipedia.org/wiki/BIOS; software instructions run on a
machine when turned on

XML PRC: http://www.xmlrpc.com/; method for an application to leverage another
application using HTTP for the remote procedure call and XML as the encoding

Xen工作原理

  • 1.
    Xen 工作原理 日期:2012-3-5 版本:1.0 译者:杨朝中
  • 2.
    目录 执行摘要 ................................................................................................................................... 3 Xen虚拟环境组件 .................................................................................................................... 3 Xen Hypervisor ...................................................................................................................... 4 Domain 0 ............................................................................................................................... 4 Domain U ............................................................................................................................... 5 Domain Management and Control........................................................................................ 7 Xend ................................................................................................................................... 8 Xm ...................................................................................................................................... 8 Xenstored .......................................................................................................................... 8 Libxencrl ............................................................................................................................ 8 Qemu-dm........................................................................................................................... 9 Xen Virtual Firmware ....................................................................................................... 10 Xen Operation ......................................................................................................................... 10 Domain 0 to Domain U Communication ............................................................................. 10 Xen PCI Passthru ...................................................................................................................... 11 Glossary ................................................................................................................................... 12
  • 3.
    执行摘要 本文档涵盖了 Xen Hypervisor的高层架构概要视图,及其用于支持完整虚拟环境 的相关工具和应用。该架构文档基于 Xen 3.4 发行版,仅仅介绍了 Xen 的整体架 构。更多的完整架构描述,请参考 http://wiki.xensource.com/xenwiki/Books。 Xen 虚拟环境组件 Xen 虚拟环境由若干协同工作的组件组成,从用户角度看,其包括: Xen Hypervisor Domain0 Guest Domain Management and Control(Xen DM&C) DomainU Guest(Dom U) PV Guest HVM Guest 这些组件的基本组织如下图:
  • 4.
    Xen Hypervisor Xen Hypervisor是一个基本的软件抽象层,其位于硬件之上,操作系统之下。它 负责 cpu 的调度,并为每个运行于硬件之上的虚拟机划分内存空间。监视器(Xen hypervisor)为虚拟机提供硬件抽象,与此同时,由于各个虚拟机分享共同的运 行环境,监视器还需要控制虚拟机的运行。监视器对网络、外存设备、视频、或 者其他可以在计算机系统中见到的 I/O 功能一无所知。 Domain 0 Domain 0 是一个虚拟机。它是修改过的 linux 内核,其运行在 Xen hypervisor 之 上,拥有访问物理 I/O 资源的特殊权限,并且和其他虚拟机(Domain U:PV and HVM Guests)进行通信。需要指出一点,Domain 0 是唯一的。Xen 的完整虚拟环境的构 建要求 Domain 0 在其他虚拟机能够启动之前运行起来。 在 Domain 0 中,包含两个驱动:Network Backend Driver 和 Block Backend Driver。 这两个驱动可以支持来自于 Domain U 的网络与本地磁盘访问请求。Network
  • 5.
    Backend Driver 与本地网络硬件直接通信,以此处理来自于Domain U 所有虚拟机 访问网络设备的请求。Block Backend Driver 与本地存储设备进行通信,以此完成 来自于 Domain U 的磁盘数据读写请求。 Domain U DomainU 没有直接访问物理硬件的权限,但 Domain 0 有。此外,DomainU 通常 被看作是没有权限的(DomainU 中的“U”来自于英文单词 unprivileged)。所有运 行在 Xen hypervisor 之上的平行虚拟化机器都被看作是 Domain U PV Guests。同 时,其操作系统为修改过的 linux,比如 Solaris,FreeBSD,以及其他 UNIX 操作系 统。所有运行于 Xen hypervisor 之上的完全虚拟化机器都被看作是 Domain U HVM Guests。同时,其操作系统为标准的 windows 或者其他未作修改的操作系统。 Domain U PV Guest 虚拟机能够知晓自己没有直接访问硬件的权限,也能知道其
  • 6.
    他虚拟机也运行在同一个物理机器上。与此相反的是,Domain U HVM虚拟机并 不知道它正和其他虚拟机在同一个物理机器上分享处理器,也不知道其他虚拟机 正在运行。 Domain U PV Guest 虚拟机包含两个驱动:PV NetworkDriver 和 PV Block Driver, 其用于处理网络和磁盘访问。 Domain U HVM Guest 虚拟机虽然没有 PV drivers, Domain 0 却为它们启动 但 了一个特殊的 Qemu-dm 镜像。Qemu-dm 支持 Domain U HVM Guest 对网络和 磁盘的访问请求。 Domain U HVM Guest 在初始化时必须尽可能地添加一个软件 Xen virtual firmware,该软件用于模拟操作系统启动之前所需的 BIOS。更多有关 Xen virtual firmware 的信息请参考后续章节。
  • 7.
    Domain Management andControl 开源社区把一系列 linux 守护进程划分为域管理和控制工具。这些守护进程存在 于 Domain 0 虚拟机,它们用于支持整个虚拟环境的管理和控制。下面的图表展 示了 Domain 0 中的守护进程。通过这个图表,可以对整个架构有更清晰的理解。
  • 8.
    Xend Xend 守护进程是一个 Python应用程序,它被看作 Xen 虚拟环境的系统管理器。 Xend 利用 Libxenctrl 获得对 Xen hypervisor 的访问请求。所有需要被 Xend 处理的 请求都通过一个 Xm 工具的 XML RPC 接口被发送到 Xend。 Xm Xm 是一个命令行工具,它获取用户输入,并把这些输入的命令通过 XML RPC 传 输到 Xend。 Xenstored Xenstored 守护进程维护一个信息注册表,这些信息涉及内存、Domain 0 与所有 其他 Domain U Guests 之间的事件通道链。Domain 0 虚拟机利用这个注册表来设 置与其他虚拟机之间的设备通道。 (更多的细节信息,请参看 Domain 0 to Domain U Communication 章节) Libxencrl Libxenctrl 是一个 C 程序库,它使得 Xend 可以通过 Domain 0 访问 Xen hypervisor。 privcmd 是 Domain 0 中有一个特殊的驱动,它将 Xend 的访问请求转发给 hypervisor。
  • 9.
    Qemu-dm 每个运行在 Xen 虚拟环境中得HVM Guest 虚拟机需要它们自己的 Qemu 守护进 程。这个工具处理所有来自于 Domain U HVM Guest 虚拟机的网络与磁盘访问请 求,使得完全虚拟化在 Xen 系统环境中得以实现。Qemu 需要访问网络和 I/O 设 备,所有它必须处于 Xen hypervisor 之外。正因为如此,Qemu 处于 Domain 0 虚 拟机中。 Stub-dm 是一个新工具。它使得 Xen 未来的版本不需要为么一个 Domain U HVM 运行 Qemu,而是为每个 Domain U HVM 提供一个可用的服务程序集。这个特性 在 Xen 3.2 版本中还不可使用,但目前已经是 Xen-unstable 版本的一部分。此外, Xen 3.3 版本将会发布该特性。
  • 10.
    Xen Virtual Firmware XenVirtual Firmware 是一个被嵌入到 Domain U HVM Guest 中得虚拟 BIOS,它使 操作系统接收其正常引导过程所需要的标准启动指令,以得到一个 PC 兼容的软 件环境。 Xen Operation 本章描述了并行虚拟化的 Domain U 虚拟机如何通过 Xen hypervisor 和 Domain 0 虚拟机完成与外部网络或存储设备的通信。 Domain 0 to Domain U Communication 较早一段时期, hypervisor 并不支持网络和磁盘访问请求。 Xen 因此,Domain U PV Guest 必须通过 Xen hypervisor 与 Domain 0 通信以完成网络或磁盘访问请求。下 面的例子描述了 Domain U PV Guest 如何往本地磁盘写数据。 Domain U PV Guest 虚拟机中的 PV block driver 接收往磁盘写数据的请求,然后通 过 Xen hypervisor 将数据存放到本地内存中的某个适当的区域。需要指出的是, 该内存区域由该 Domain U PV Guest 虚拟机与 Domain 0 共享。在 Xen hypervisor 中,存在异步域间中断,位于 Domain 0 和 Domain U PV Guest 之间的事件通道允 许 Domain 0 和 Domain U PV Guest 可以通过该异步域间中断完成通信。Domain 0 会收到一个来自 Xen hypervisor 的中断请求,该中断请求会导致 PV Block Backend Driver 访问本地系统内存并从 Domain U PV Guest 虚拟机的共享内存中读取适当
  • 11.
    的数据块。然后,共享内存中的数据将被写到本地硬盘的某个特定位置。 下图中,Domain 0 和Domain U PV Guest 之间的事件通道链接简要地展示了系统 工作原理。实际上,事件通道使用在 Xenstored 中注册的特殊中断处理程序,运 行在 Xen hypervisor 之上。这些特殊中断处理程序允许 Domain 0 和 Domain U PV Guest 通过本地内存快速地共享信息。 下面的图标展示了之前所描述的系统业务。 Xen PCI Passthru 为了提高整体性能,减轻 Domain 0 的负担,Xen 设计了 PCI Passthru 这样一个新 特性。PCI Passthru 允许 Domain U Guest 拥有直接访问本地硬件的权限,而不是
  • 12.
    通过 Domain 0来访问硬件。下图描述了这个特性是如何工作的: Domain U Guest 拥有直接同特殊硬件对话的权利,而不是之前那种使用 Frontend 和 Backend drivers 的方法。 Glossary C: http://www.cprogramming.com/; a computer programming language Daemons: http://en.wikipedia.org/wiki/Daemon_(computer_software); a program running in the background rather than under direct control of a user Driver: http://en.wikipedia.org/wiki/Device_driver; program allowing software to interact with hardware Full Virtualization: http://en.wikipedia.org/wiki/Full_virtualization; a virtual machine not aware of its virtualization Interrupt: http://en.wikipedia.org/wiki/Interrupt; signal from hardware to software requesting a specific action in software Kernel: http://en.wikipedia.org/wiki/Linux_kernel; the central component of a computer operating system Paravirtualized: http://en.wikipedia.org/wiki/Paravirtualization; virtual machine running on a hypervisor that is aware of it being virtualized]
  • 13.
    Python: http://www.python.org/; adynamic object oriented programming language ROM BIOS: http://en.wikipedia.org/wiki/BIOS; software instructions run on a machine when turned on XML PRC: http://www.xmlrpc.com/; method for an application to leverage another application using HTTP for the remote procedure call and XML as the encoding