Xen是一个虚拟机监视器(Virtual machine monitor),针对X86系列计算机设计,它能够支持多个客户计算机的同时运行,并且能够达到较好的一个性能水平和资源隔离。Xen是一个开放源代码软件,在GNU General Public License 下发布。

基本功能:

Xen通过对Linux,NetBSD和Solaris内核进行一些简单修改,来提高系统虚拟化后的性能,经过修改后的内核就是Linux With Xen的一个操作系统,可以直接作为一个操作系统来使用,也就是说Xen是直接运行于硬件之上的一个操作系统(Xen技术中所称的domain 0(dom0)),其他的被虚拟化的操作系统(domainU)运行于硬件之上的第二层(第一层是Xen-Linux,第二层就是客户操作系统)。

可以被虚拟化的操作系统包括UNIX-like系列(经过修改可以作为客户操作系统),对于Microsoft Windows操作系统可以不经修改运行于Xen V3.0以上的版本,但是需要CPU支持IntelVT技术或者AMDV技术。

技术特点:

       半虚拟化(Paravirtualization)或叫做超虚拟化技术,该技术需要客户操作系统做一些修改。这种技术意味着客户操作系统被修改之后,使用特殊的系统调用ABI,而不是调用原有的接口。通过这种超虚拟化技术,Xen能够达到高性能。

       在硬件支持的情况下,允许不经修改的客户操作系统运行。Intel的VT技术和AMD的V技术。

可控性:

功能特点:

虚拟机的性能更接近真实硬件环境)

在真实物理环境的平台和虚拟平台间自由切换)

在每个客户虚拟机支持到 32个虚拟CPU,通过 VCPU热插拔)

支持PAE指令集的x86/32, x86/64平台

通过Intel 虚拟支持VT的支持来用虚拟原始操作系统(未经修改的)支持(包括Microsoft Windows)

优秀的硬件支持.支持几乎所有的Linux设备驱动

应用范围:

服务器整合:在虚拟机范围内,在一台物理主机上安装多个服务器, 用于演示及故障隔绝;

无硬件依赖:允许应用程序和操作系统对新硬件的移值测试;

多操作系统配置:以开发和测试为目的,同时运行多个操作系统;

内核开发:在虚拟机的沙盒中,做内核的测试和调试,无需为了测试而单独架设一台独立的机器;

集群运算:和单独的管理每个物理主机相比较,在VM级管理更加灵活,在负载均衡方面,更易于控制,和隔离;

为客户操作系统提供硬件技术支持:可以开发新的操作系统, 以得益于现存操作系统的广泛硬件支持,比如Linux;

局限:

是否开源:

       是

备注:

       在http://jailtime.org/这个网站上提供了很多Linux操作系统的压缩包,可以直接下载用于Xen的虚拟操作,这些压缩包中已经添加了内核和一些基本的软件包。

       在Linux发行版Ubuntu8.10Server版中,最新加入了关于虚拟化技术,可以通过VM-Builder来很迅速的建立一个虚拟环境。

       如果使用Intel的VT技术的CPU,Xen可以虚拟不经任何修改的操作系统,例如Windows。


 

 

Xen VMM是一个剑桥大学的开源项目,它可以创建多个虚拟机。这些虚拟的客户操作系统是一个修改过的Linux kernel,2.4或者2.6,或者是一个修改过的NetBSD,FreeBSD。运行于其上的应用程序保持原样,不需要改变就可用。Sun公司同样也正在开始基于Xen的项目--Solaris-on-Xen port.。

全虚拟化是通过一些硬件模拟器,这其中的一个最为流行的开源项目就是Bochs IA-32 Emulator。另一个就是qemu.。而对于硬件模拟器的一个明显的劣势就是它们的性能。

Xen项目(半虚拟化)所依赖的思想并不是新的。它可以达到较高的性能。但是通过处理器的支持,Xen可以不对操作系统进行修改就虚拟化。例如:intel的VT技术以及AMD的Pacifica处理器。

2005年8月,XenSource,一个开发基于Xen的虚拟化解决方案的商业公司,对外宣布,利用Intel的VT技术已经可以对windows进行虚拟化。

在这个领域中,Vmware是一个商业公司开发ESX Server,但是它并没有基于Xen项目进行开发。Vmware在2005年的8月宣称它将开放它的ESX Server的源代码,VMware Community Source

一个Vmware明显的有点就是它并不需要对于客户操作系统进行修改。VMWare的解决方案大概会比Xen慢一些,因为它使用影子页表,然而Xen使用的是直接和影子页表。

Xen同样对Intel的新技术IA-64留有开发接口,对于其他类型处理器的支持正在开发过程中。

 

 

1.       Xen采用由IBM VM/370发起的“whole machine”虚拟化技术,但是做了一定的修改,Xen并没有完全的将底层机器进行虚拟化,而只是将客户计算机进行部分的修改来与Xen的核心管理部件进行交互,因为将一个操作系统移植到一个新的硬件平台只需要修改的是依赖于硬件的代码,其用户级的API是不需要变化的。

除过导出虚拟化的CPU,内存,网络以及块设备,Xen还向外暴露一组控制接口,这些接口控制这些虚拟化过的资源是如何在不同的运行操作系统直接分配的。这组控制接口严格限制在特定的domain下,既dom0也就是Xen本身。

2.       虚拟架构:

在一个Xen/x86系统中,只有hypervisor超级管理程序运行在最高特权级(ring 0)。它能够操作物理内存,负责对各个客户操作系统分配内存。

在一个32位的x86系统中,客户操作系统使用ring 1,ring 2 或者ring 3。这些分配严格限制了客户操作系统可能访问到Xen的地址空间。期望的是大多数的客户操作系统都能够运行在ring1下,而将其应用程序运行在ring 3下。

在64位的操作系统下,不可能将超级管理程序与不可信的运行在ring1和ring2下的客户代码相隔离。所以客户操作只能被严格限制运行在ring3下。而客户操作系统的核心是通过上下文转换来与用户应用程序隔离的。




该文档对Xen Hypervisor(管理程序)和其相关的工具以及所有支撑一个虚拟化环境所必需的应用程序做了一个较高层的,对于架构的综述。

Xen Components

一个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是对这个软件的最基本、最底层的抽象层。它主要负责针对运行在该硬件设备之上的多个虚拟机的CPU轮转,内存划分的工作。Hypervisor不仅仅对底层硬件设备进行了抽象,而且同时控制着虚拟机的执行。它不负责联网、外存、显示以及任何其他IO功能。

Domain 0

Domain 0是一个修改过的Linxu kernel,一个运行在Xen hypervisor之上的独特的虚拟机,它可以控制物理IO资源,并且同时与其他运行于该平台上的虚拟机进行交互(Domain U:PV and HVM Guests)。所有的Xen虚拟环境都需要一个运行着的Domain 0来启动其他的虚拟机。

Domain 0包括了两个驱动,来支持来自于其他虚拟机的网络和本地磁盘请求。(见下图);Network Backend Driver和Block Backend Driver。NB Driver直接与本地网络硬件进行交互,来处理所有来自于Domain U的虚拟机请求。BB Driver直接与本地磁盘进行交互,基于Domain U的请求来从驱动器读写数据。



 Domain U

所有的运行于Xen hypervisor之上的半虚拟机(Paravirtualization),都叫做Domain U PV Guests,他们(PV Guests)运行的是修改后的Linux OS,Solaris, FreeBSD和其他UNIX OS。所有运行于Xen hypervisor之上的全虚拟机都是叫做Domain U HVM Guests,并且可以运行标准的Windows或者任何没有修改过的操作系统。

Domain U PV Guests知道不能直接访问硬件,并且知道在本地机器上运行的其他虚拟机。Domain U HVM Guests不知道它在分享处理器时间以及其他虚拟机的存在。

PV Guest包含有两个针对网络和磁盘访问的驱动,PV Network Driver和PV Block Driver



 HVM Guest没有PV驱动安装在虚拟机上,但是针对每一个启动的HVM Guest都有一个特殊的daemon---- Qemu-dm。Qemu-dm支持HVM Guests进行网络互联和磁盘访问请求。

HVM Guests必须初始化,以便于软件能够添加到HVM Guests,Xen Virtual firmware来模拟BIOS来启动操作系统。(??The Domain U HVM Guest must initialize as it would on a typical machine so software is added to the Domain U HVM Guest,Xen virtual firmware, to simulate the BIOS an operating system would expect on startup.)。



 域管理和控制

很多的Linux daemons都被开源社区定义为域管理和控制的。这些服务支持对整个虚拟环境的管理和控制,存在于Domain 0的虚拟机中。

Xend

Xend daemon是一个python程序,它被认为是Xen环境的系统管理员。它利用libxenctrl库来发起对Xen hypervisor的请求。所有由Xend所处理的请求都是通过一个XML RPC接口,这些RPC请求来自于Xm工具。



 

Xm

一个命令行工具,它获取用户输入,通过XML RPC传递给Xend。

Xenstored

Xenstored daemon 维护一个注册信息,这些信息包括了内存和事件管道(event channel),其将Domain 0 与所有其他的Domain U连接起来。Domain 0 虚拟机利用这个注册信息来设置与其他虚拟机的通信管道。

Libxenctrl

Libxenctrl是一个C函数库,它提供给Xend与Xen hypervisor进行交互的能力,通过Domain 0.在Domain 0 中的一个特殊驱动,privcmd将这些请求发送给hypervisor。

 

  

 Qemu-dm

每一个HVM Guest都需要一个Qemu daemon。这个工具处理所有从HVM Guest发出的联网和磁盘请求。Qemu必须存在于Xen hypervisor的外面,因为它需要访问网络和IO,因此它存在于Domain 0。

Xen Virtual Firmware

Xen Virtual Firmware是一个虚拟的BIOS,它被插入到每一个Domain U HVM Guest中,来确保操作系统收到所有标准的启动指令。

Xen Operation

Domain 0 与Domain U交互

Xen hypervisor是不支持网络或者平请求的,因此一个Domain U PV Guest必须通过xen hypervisor与Domain 0通信来完成一个网络或磁盘请求。

下图中的事件管道是Domain 0 和Domain U之间的一个直接连接。事实上,事件管道贯穿Xen hypervisor,并且已经在Xenstored注册了具体的中断,允许Domain 0 和Domain U的PV Guest通过本地内存快速的共享信息。


Logo

更多推荐