Xen工作原理

来源:互联网 发布:网络维护工具app 编辑:程序博客网 时间:2024/06/06 00:51

Xen最初是作为剑桥大学的一个项目,目前 XEN.ORG 社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。Xen 是一种直接运行在硬件上一层软件,它可以让电脑硬件上同时跑多个用户的操作系统。由于对 x86, x86-64, Itanium, Power PC, 和 ARM 这些处理器的支持,所以 Xen 管理工具可以支持的操作系统有 Linux, NetBSD,FreeBSD,Solaris, Windows 和其他一些运行在 XEN 上的正常的操作系统。如图 1 所示 XEN 在系统中的位置:


                                            图1  Xen 在系统的位置


一、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 等。


 Domain U PV Guest 中也包括两个驱动“PV Network Driver”和“PV Block Driver”,它们分别也是用来处理发送网络和本地磁盘请求用的,这与 Domain 0 中的两个驱动是相对应的。

二、Xen工作原理

Xen Hypervisor并不支持网络和磁盘访问请求,因此,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共享)。在 Domain 0 和 Domain U 之间存在一个事件通道(event channel),通过该通道二者进行异步的域间中断通信。Domain 0 会接收到一个来自 Xen Hypervisor 的中断,触发 PV Network Backend Driver 访问本地系统内存并读取来自Domain U PV Guest虚拟机的共享内存的数据,然后共享内存中的数据将被写到本地硬盘的某个特定位置。

如下图3所示,事件通道表示为连接 Domain 0 与 Domain U 的一个区域,这是系统工作流的一个简化。事实上事件通道运行在 Xen Hypervisor 中,通过 Xenstored(Xenstored 维护一个信息档案,包括内存和建立在 Domain 0 与 Domain U 之间的事件通道。Domain 0 通过改变这个档案来设置和其他虚拟机的设备通道)中的特定中断实现,提供 Domain 0 与 Domain U 之间的快速共享信息。

             图3  Domain 0 与 Domain U PV Guest 通信示意图





参考文献:
[1] https://www.slideshare.net/debugger87/xen-11880573
[2] https://www.ibm.com/developerworks/cn/linux/l-cn-xen/index.html#ibm-pcon

原创粉丝点击