Xen 架构

本文介绍了Xen Hypervisor的整体架构及其相关组件,包括Xen Hypervisor、Domain0、DomainU PVGuest及HVMGuest等关键部分。文章详细阐述了各部分的功能与交互方式,并解释了Xen环境下虚拟机如何通过Domain0访问网络和存储设备。

小结:

这个文档是从高层次分析Xen hypervisor的整体架构以及相关工具和应用程序。这个架构是基于2008年2月发布的Xen3.2版本。该文档是Xen架构的简介,更多信息请参考Xen books。

 

Xen组成部分
Xen虚拟环境由以下几个组成部分:
Xen Hypervisor Xen管理程序
Domain 0 域0
Domain Management and Control(Xen DM&C) 域管理控制程序
Domain U(Dom U) PV Guest 域U半虚拟化客户
Domain U(Dom U)HVM Guest 域U全虚拟化客户

下图是Xen的架构

xen架构

 

Xen Hypervisor Xen管理程序
Xen Hypervisor是软件的抽象底层,位于硬件和操作系统之间。它负责管理各个虚拟机的CPU时间分配和内存分配。由于管理程序和上层虚拟机共享进程环境,所以管理程序不仅向虚拟机抽象出底层的硬件,还对上层虚拟机进行控制,它不负责网络,硬盘,音频或者其他IO功能。

 

域0
域0,基于修改过的linux内核,它是一个运行在Xen Hypervisor上的虚拟机,它具有访问物理IO资源的权限,并能同其他的虚拟机( Domain U:PV HVM Guests )进行交互。域0启动后,通过域0来启动其他虚拟机。
域0中带有(Network backend Driver)网络后端驱动和(block Backend Driver)块设备后端驱动,通过驱动可以访问网络和硬盘,其他虚拟机可以通过域0使用网络和硬盘资源(如下图)。网络后端驱动直接和网卡通信,处理其他虚拟机发送过来的任务。块设备后端驱动根据其他虚拟机的需求读写硬盘。

Domain 0

 

域U
Xen Hypervisor上运行的半虚拟化的机器叫做PV客户机,可以运行修改过的linux操作系统,如Solaris、FreeBSD。Xen hypervisor上运行的全虚拟化机器叫做HVM客户机,可以运行Windows或者其他未修改过的操作系统。

PV虚拟客户机不直接访问硬件,可以识别运行在同一机器上的其他虚拟机。HVM虚拟客户机可直接访问硬件,通其他HVM虚拟机共享CPU处理时间。PV虚拟客户机的网络和硬盘驱动分别是PV Network Driver和PV Block Driver。

Domain U


HVM虚拟客户机没有PV虚拟客户机的那两个驱动,它由域0给分配一个进程,叫Qemu-dm。Qemu-dm可以支持HVM虚拟客户机使用网络的硬盘资源。由于Xen用来模拟BIOS的虚拟固件要作为软件加载HVM虚拟客户机的底层,所以HVM虚拟客户机需要这样的要求进行初始化。

域管理控制一些Xen相关的进程统称域管理控制进程。这些进程在域0虚拟机中,用于管理和控制整个虚拟环境。下图阐述了域0外的进程和域0的关系,可以清楚的理解整体架构。

qemu-dm

 

Xend
Xend是基于Python语言的用于管理xen环境的进程。它通过libxenctrl库来访问xen hypervisor,所有要求xend处理的请求都由xm工具通过XML RPC接口发送给xend。

 

xend

XM
XM命令工具接受用户的输入,通过XML RPC发送给xend。

 

Xenstored
Xenstored进程包含内存、域0和其他虚拟机之间的事件链接的注册信息,域0虚拟机通过这些注册信息同系统内的其他虚拟机建立通信频道。


Libxenctrl
Libxenctrl是一个c库,用来支持xend通过域0同xen hypervisor之间的通信。域0中有个特别的驱动,用来向xen hypervisor发送请求。

 

libxenctrl

Qemu-dm
Xen环境中的每个HVM虚拟客户机需要有自己的Qemu进程,这个进程用来处理HVM虚拟客户集中所有的网络和硬盘请求,实现全虚拟化。由于Qemu要直接访问网络和IO口,所以它位于xen hypervisor的外面,也就是存在于域0中。
一个叫做Stub-dm的新工具已经在开发中,采用Stub-dm之后,不用再每个HVM虚拟客户机中都建立一个Qemu,Stub-dm可以给HVM虚拟客户机提供服务。Xen 3.3以后的版本会包含这个工具。


Xen 虚拟固件
Xen虚拟固件时虚拟BIOS,插入每个HVM虚拟客户机,保证他们的操作系统在正常启动时能得到启动所需的所有标准指令。


Xen操作
这部分阐明一个半虚拟化的客户机如何通过域0和xen hypervisor访问网络和存储设备。
域0和域U通信
前面提到过,xen hypervisor没有支持网络和硬盘的驱动,所以域U必须通过xen hypervisor同域0通讯,进而完成网络和硬盘操作。下面的例子是PV虚拟客户机想硬盘中写入数据的过程。
PV虚拟客户机的PV块设备驱动收到一个像本地磁盘中写入数据的请求,它先通过xen hypervisor将数据写入内存的合适位置(PV虚拟客户机和域0共享内存),域0和域U之间的事件信道,允许他们通过xen hypervisor进行域间的异步中断。域0收到xen hypervisor发来的中断,中断使得PV后端块设备驱动到域0和域U共享内存中读取合适的数据,内存中的数据通过域0写入硬盘。
事件信道如下图所示,图中域0和域U之间的直接连接表示事件信道。实际上,事件信道要通过xen hypervisor使用xenstored中注册过的特定中断来实现域0和域U之间通过本地内存进行数据共享。
图示详细的说明了整个过程。

xen操作

 

 

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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值