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支持Intel的VT技术或者AMD的V技术。
技术特点:
半虚拟化(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下。而客户操作系统的核心是通过上下文转换来与用户应用程序隔离的。