作者:Yatmiiml | 来源:互联网 | 2014-05-27 20:19
名词缩写VM:virtualmachinexen虚拟环境由多个组件构成,它们一起提供虚拟化的环境。这些组件包括:xenhypervisorDomain0DomainManagementandControl(XenDMC)DomainU(DomU)PVGuestDomainU(DomU)HVMGuest下图为这些组件的基
名词缩写
VM: virtual machine
xen虚拟环境由多个组件构成,它们一起提供虚拟化的环境。这些组件包括:
xen hypervisor
Domain 0
Domain Management and Control (Xen DM & C)
Domain U (Dom U) PV Guest
Domain U (Dom U) HVM Guest
下图为这些组件的基本组成图
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。
一个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信息。
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方式递交。
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。
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相应的位置。