全部博文(370)
分类: 虚拟化
2011-10-23 15:03:12
一个 Xen 虚拟化环境包括一组项目,它们一起工作来提供虚拟化环境:
Xen hypervisor;
dom0;
domain management and control,域的管理和控制;
domU PV 客户机;
domU HVM 客户机。
它们之间的关系参见: dom0 domU 一个 domU HVM 客户机没有那种 PV 驱动;取而代之的是在 dom0 下对每个 HVM 有一个特别的守护进程:qemu-dm。它支持 domU HVM 客户机来进行网络和磁盘访问请求。 dom 的管理和控制 xend xm Xenstored libxenctrl Qemu-dm Xen 虚拟固件 dom0 和 domU 之间的通讯
hypervisor 是操作系统以下硬件以上的一个软件抽象。负责 CPU 调度,虚拟机内存分配。hypervisor 不仅为虚拟机抽象硬件,也要控制虚拟机的执行。它对于网络、存储设备和其它 IO 功能等一无所知。
是一个修改的 linux 内核,是一个运行在 xen hypervisor 之上的独特虚拟机,对访问物理 IO 和其它 domu 虚拟机具有特殊的权利。 xen 虚拟环境需要 dom0 在其它任何虚拟机之前先启动。
在 dom0 中包括的驱动用来支持 domu 的网络和本地磁盘请求,包括Network Backend Driver 和 the Block Backend Driver。
所有运行在 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 客户机必须进行一些初始化,加载一些软件模块(固件)来模拟 BIOS 。
一系列的 Linux 进程被归类为 dom 管理和控制工具,它们被用来进行 dom 0 内虚拟机的管理和控制。
Xend 是一个 python 应用,它是 Xen 环境的系统管理器。它调节 libxenctrl 来向 hypervisor 请求,所有经由 Xend 的请求通过 xm 工具用 xml-rpc 接口发起。
命令行工具,接收用户输入通过 xml rpc 传递到 Xend。
这个维护在 dom0 和 domU 之间的内存和事件通道等的信息。
一个 C 库提供 Xend 和 Xen hypervisor 通过 dom0 对话的能力。在 dom0 中,privcmd 分发请求到 hypervisor。
每个 HVM 客户机要求有自己的 Qemu 守护进程。这个工具处理所有来自 domU HVM 完全虚拟化的客户机的网络和磁盘请求。Qemu 必须存在于 Xen hypervisor 之外,因为它必须能访问 dom0 中的网络和IO。
一个虚拟的 BIOS 插入到每个 domU HVM 客户机中,保证操作系统接收到在正常启动过程中各种标准的启动指令。
Xen hypervisor 不用来支持网络或者磁盘请求,因此一个 domU 通过 hypervisor 向 dom0 通信来进行磁盘或者网络请求。
domU PV 客户机块设备驱动接收到磁盘写请求时,它将通过 Xen hypervisor 写数据到和 dom0 共享的一块本地内存。在 dom0 和 domU PV 客户机之间存在一个事件通道允许它们使用 Xen hypervisor 的异步域间中断来通信。dom0 将接收到一个来自 hypervisor 的中断引起 PV Block Backend Driver 来访问本地系统内存读取 domU PV 客户机共享内存中的块。共享内存中的数据然后被写到本地磁盘。