XEN Architecture Overview

名词缩写

VM: virtual machine

Xen Components:

xen虚拟环境由多个组件构成,它们一起提供虚拟化的环境。这些组件包括:

xen hypervisor

Domain 0

Domain Management and Control (Xen DM & C)

Domain U (Dom U) PV Guest

Domain U (Dom U) HVM Guest

下图为这些组件的基本组成图

image

Xen Hypervisor

Xen hypervisor是基础软件抽象层,其直接位于硬件之上,操作系统之下。 它负责为运行硬件之上的多个VM提供CPU调度和内部划分管理。Xen hypervisor不仅仅为VM抽象出硬件层,它同时负责控制VM的执行,因为这些VM共享公共的进程环境。它对通常存在于计算机系统上网络,外部存储,视频以及其它公共I/O功能一无所知。

DOM 0

Dom 0是一个被修改过得linux kernel,它是唯一一个运行于Xen hypervisor 层之上拥有特权来访问物理I/O资源的VM,同时可以同其它VM进行通信。所以的Xen 虚拟化环境要求只有在Domain 0 VM启动之后,其它的VM才可以运行,也就是说Domain 0 VM 必须运行于其它VM之前。

在Dom 0中包含了两个driver,分别用于支持从Dom U(PV or HVM)发起的网络和本地磁盘的请求,它们是Network Backend Driver 和 Block Backend Driver。

Network Backend Driver 直接同本地的网络设备进行通信,用来处理来自于Dom U的网络请求。 Block Backend Driver同本地的硬件存储磁盘相通信,用来处理磁盘的读写请求,进而来满足Dom U的请求。

DOM U

在Xen hypervisor上运行的半虚拟化(paravirtualized)的VM称之为Dom U PV Guest, 在Dom U PV Guest里运行的是修改过的linux OS,比如Solaris, FreeBSD 或者其它的UNIX OS。

在Xen hypervisor上运行的全虚拟化(full virtualized)的VM称之为Dom U HVM Guest,在Dom U HVM Guest上可以运行Window和其它未修改的OS。

一个Dom U PV Guest VM包含两个driver分别是network driver和disk access driver,称之为PV Network Driver和PV Block Driver。

image

一个Dom U HVM Guest VM里面没有PV drivers,替代的是为每一个Dom U HVM Guest在Dom 0里面启动一个对应的Daemon, 叫做Qemu-dm。Qemu-dm用来支持Domain U HVM Guest的network和disk access 请求。

Dom U HVM Guest 必须被初始化,使得它好像是某种特定的机器,而相应的软件要被加入到Dom U HVM Guest中去,这个软件是Xen virtual firmware,它被用来模拟一个OS在启动的时候需要的BIOS信息。

image

Domain Management and Control

一系列的linux daemons被开源社区归类到Domain Management and Control. 这些服务支持所有的虚拟化环境的管理和控制工作,并且这些服务都存在于Dom 0 VM里面。

Xend

Xend daemon是一个Python App,它被认为是Xen 环境的系统管理器。 它通过使用libxenctrl 库来对Xen hypervisor发出请求。 所有对Xend发出的请求都是通过xm工具以XML RPC方式递交。

image

XM

命令行工具,用来接收用户的输入,通过XML RPC将请求传送给Xend。

Xenstored

Xenstored daemon维护了一个包括内存和Domain 0和其他Domain U Guest之间的event channel link在内的registry信息。 Domain 0 vm通过这些registry信息来为其他VM建立device channel。

libxenctrl

libxenctrl是一个c语言编写的库,它为Xend提供通过Dom 0同Xen hypervisor通话的能力。 在Dom 0中一个特殊的称之为privcmd的driver,用来将Xend的请求交付给hypervisor。

image

Qemu-dm

每一个在Xen 虚拟环境中运行的HVM Guest需要一个Qemu daemon。这个工具用来处理所有从HVM Guest来的network和disk请求,进而在Xen 虚拟化环境中实现全虚拟化。 Qemu必须存在于hypervisor之外,这是因为它需要访问网络和I/O,而这些功能存在于Dom 0,所有Qemu daemon存在于Dom 0.(一个新的feature正在开发当中,stub-dm,用来取代qemu-dm,可能随xen 3.3发布)

xen virtual firmware

xen virtual firmware是一个虚拟的BIOS,被嵌到每一个Dom U HVM VM 当中去,用来确保每个OS启动的过程中可以收到所有它期待的指令。

Xen operation – Domain 0 to Domain U communication

 

Xen hypervisor 不支持网络和disk请求,因此一个Dom U PV Guest必须通过Xen hypervisor同Dom 0 进行通信进而完成一个一次网络或disk请求。

下面以一次Dom U PV Guest 写操作为例来进行说明。

当在Dom U PV Guest 里面进行写操作时,Guest PV Block driver收到写disk操作请求,然后通过Xen hypervisor将数据写入本地内存当中,这块内存是和Dom 0 共享的。一个event channel存在于Dom 0和Dom U PV Guest之间,这使得它们可以通过在xen hypervisor中异步的inter-domain interrupt来进行通信。 Domain 0会收到一个从xen hypervisor来的interrupt,这使得Domain 0中Block Backend Driver 开始访问系统内存,将Domain U PV Guest本地共享内存的数据读出,然后Domain 0将读出的数据写入到本地disk相应的位置。

posted @ 2011-07-19 22:23  yub0yue  阅读(798)  评论(0编辑  收藏  举报