现在的位置: 首页 > 综合 > 正文

Xen Architecture Overview

2019年05月05日 ⁄ 综合 ⁄ 共 1732字 ⁄ 字号 评论关闭

http://wiki.xensource.com/xenwiki/XenArchitecture?action=AttachFile&do=get&target=Xen+Architecture_Q1+2008.pdf

一个 Xen 虚拟化环境包括一组项目,它们一起工作来提供虚拟化环境:
Xen hypervisor;
dom0;
domain management and control,域的管理和控制;
domU PV 客户机;
domU HVM 客户机。

它们之间的关系参见:
http://www.chenyajun.com/2009/03/01/xen-virtualization-model-explored/

hypervisor 是操作系统以下硬件以上的一个软件抽象。负责 CPU 调度,虚拟机内存分配。hypervisor 不仅为虚拟机抽象硬件,也要控制虚拟机的执行。它对于网络、存储设备和其它 IO 功能等一无所知。
tmp

dom0
是一个修改的 linux 内核,是一个运行在 xen hypervisor 之上的独特虚拟机,对访问物理 IO 和其它 domu 虚拟机具有特殊的权利。 xen 虚拟环境需要 dom0 在其它任何虚拟机之前先启动。
在 dom0 中包括的驱动用来支持 domu 的网络和本地磁盘请求,包括Network Backend Driver 和 the Block Backend Driver。

domU
所有运行在 Xen hypervisor 上的半虚拟化客户机被称为 domain U PV 客户机,可以运行修改过的Linux,Solaris,FreeBSD 和其它操作系统。所有运行在 Xen hypervisor 之上的完全虚拟化的客户机被称为 Domain U HVM 客户机,运行标准的 windows 或者其它未修改的操作系统。
DomU PV 客户机意识到它不直接访问到硬件,认识到其它的虚拟机运行在同样的机器上。DomU HVM Guest 不会意识到它在和其它虚拟机共享硬件资源。
一个 domU PV 客户机包含用于网络和磁盘访问的 2 种驱动,PV Network Driver 和 PV Block Driver。

一个 domU HVM 客户机没有那种 PV 驱动;取而代之的是在 dom0 下对每个 HVM 有一个特别的守护进程:qemu-dm。它支持 domU HVM 客户机来进行网络和磁盘访问请求。
domU HVM 客户机必须进行一些初始化,加载一些软件模块(固件)来模拟 BIOS 。

dom 的管理和控制
一系列的 Linux 进程被归类为 dom 管理和控制工具,它们被用来进行 dom 0 内虚拟机的管理和控制。

xend
Xend 是一个 python 应用,它是 Xen 环境的系统管理器。它调节 libxenctrl 来向 hypervisor 请求,所有经由 Xend 的请求通过 xm 工具用 xml-rpc 接口发起。

xm
命令行工具,接收用户输入通过 xml rpc 传递到 Xend。

Xenstored
这个维护在 dom0 和 domU 之间的内存和事件通道等的信息。

libxenctrl
一个 C 库提供 Xend 和 Xen hypervisor 通过 dom0 对话的能力。在 dom0 中,privcmd 分发请求到 hypervisor。

Qemu-dm
每个 HVM 客户机要求有自己的 Qemu 守护进程。这个工具处理所有来自 domU HVM 完全虚拟化的客户机的网络和磁盘请求。Qemu 必须存在于 Xen hypervisor 之外,因为它必须能访问 dom0 中的网络和IO。

Xen 虚拟固件
一个虚拟的 BIOS 插入到每个 domU HVM 客户机中,保证操作系统接收到在正常启动过程中各种标准的启动指令。

dom0 和 domU 之间的通讯
Xen hypervisor 不用来支持网络或者磁盘请求,因此一个 domU 通过 hypervisor 向 dom0 通信来进行磁盘或者网络请求。
domU PV 客户机块设备驱动接收到磁盘写请求时,它将通过 Xen hypervisor 写数据到和 dom0 共享的一块本地内存。在 dom0 和 domU PV 客户机之间存在一个事件通道允许它们使用 Xen hypervisor 的异步域间中断来通信。dom0 将接收到一个来自 hypervisor 的中断引起 PV Block Backend Driver 来访问本地系统内存读取 domU PV 客户机共享内存中的块。共享内存中的数据然后被写到本地磁盘。

【上篇】
【下篇】

抱歉!评论已关闭.