Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达128个有完全功能的操作系统

在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。

2013年4月,Linux基金会宣布Xen成为Linux基金会合作项目。[2]

使用

IBM经常在其主机和服务器上使用虚拟机来尽可能发挥其性能,并类似chroot监禁那样将程序置于隔离的虚拟OS中以增强安全性。除此之外,它还能使不同和不兼容的OS运行在同一台计算机上。Xen支持在运行时进行迁移,保证正常运行并且避免宕机。

Xen的半虚拟化

Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失,典型的情况下大约损失2%,在最糟的情况下会有8%的效能耗损;与其它使用完全的虚拟化却造成最高到20%损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术不友好的架构上(如x86),Xen也有极佳的表现。但是这要求虚拟机使用经过修改的客户端操作系统,早期能有限的支持Linux,后来支持将BSD等部分类Unix系统作为客户端操作系统。与那些传统透过软件模拟实现硬件的虚拟机不同,在3.0版本及在Intel VT-X支援前的Xen需要让客户端操作系统(guest operating systems)与Xen API进行连接。到目前为止,这样连结已经可以运用在NetBSDGNU/LinuxFreeBSD贝尔实验室Plan 9系统上。在Brainshare 2005会议上,Novell展示了NetWare与Xen的连通。与Windows XP连通的技术曾在Xen开发初期进行,但微软的协议未能允许它发布。Sun微系统公司也正积极研究Solaris与Xen的连结,使其能在Xen平台上运作。

Xen的完全虚拟化

Intel为Xen贡献了补丁以支持其VT-X架构扩展,而AMD则进行修改以支持其AMD-V架构扩展。如果系统处理器支持虚拟硬件扩展(Intel和AMD对本地支持虚拟化的扩展),这项技术将允许未经修改的操作系统运行在Xen虚拟机中。事实上,这意味着性能的提升,用户也可以在不违背任何修改限制协议的情况下对Windows进行虚拟。也就是说,Xen的完全虚拟化模式允许Xen虚拟机运行未经修改的Windows等操作系统。但是在x86平台上,只有支持x86虚拟化的电脑才支持Xen的全虚拟化模式。

虚拟机的迁移

Xen 虚拟机可以在不停止的情况下在多个物理主机之间即时迁移(live migration)。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60-300 毫秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后 可以恢复。

系统平台支援

Xen目前可以运行在x86x86-64系统上,并正在向IA64PPC移植。移植到其他平台从技术上是可行的,未来有可能会实现。

Unix-like系统中的Xen

参见

Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个满特征的操作系统操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。
中文名
 Xen
采    用
ICA协议 
技    术
做准虚拟化 
实    质
开源虚拟化技术 

定义

编辑

Xen采用ICA协议[1]  ,通过一种叫做准虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有上佳的表现。与那些传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-X支持下3.0版本之前的Xen需要系统的来宾权限,用来和Xen API进行连接。到目前为止,这种技术已经可以运用在NetBSD, GNU/Linux, FreeBSD和Plan 9系统上。Sun微系统公司也正在积极地将Solaris移植到Xen平台之上。
Xen虚拟机可以在不停止的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60-300毫秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复。
XEN 是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SUSE Linux Enterprise Server 最先采用了XEN虚拟技术。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。
XEN 是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,XEN 可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源最少。编写文档时稳定版本为XEN3.0。支持万贯虚拟化和超虚拟化。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。
IBM经常在其主机和服务器上使用虚拟机来尽可能发挥其性能,并类似chroot监禁那样将程序置于隔离的虚拟OS中以增强安全性。除此之外,它还能使不同和不兼容的OS运行在同一台计算机上。Xen对虚拟机活跃迁移的支持允许工荷平衡和避免停时。

工作原理

编辑

在Xen使用的方法中,没有指令翻译。这是通过两种方法之一实现的。第一,使用一个能理解和翻译虚拟操作系统发出的未修改指令的CPU(此方法称作完全虚拟化或full virtualization)。另一种,修改操作系统,从而使它发出的指令最优化,便于在虚拟化环境中执行(此方法称作准虚拟化或paravirtualization)。 
在Xen环境中,主要有两个组成部分。一个是虚拟机监控器(VMM),也叫hypervisor。Hypervisor层在硬件与虚拟机之间,是必须最先载入到硬件的第一层。Hypervisor载入后,就可以部署虚拟机了。在Xen中,虚拟机叫做“domain”。在这些虚拟机中,其中一个扮演着很重要的角色,就是domain0,具有很高的特权。通常,在任何虚拟机之前安装的操作系统才有这种特权。
Domain0要负责一些专门的工作。由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由domain0来提供了。通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(Xen术语叫domainU)。这些domainU也叫无特权domain。这是因为在基于i386的CPU架构中,它们绝不会享有最高优先级,只有domain0才可以。
在domain0中,还会载入一个xend进程。这个进程会管理所有其它虚拟机,并提供这些虚拟机控制台的访问。在创建虚拟机时,管理员使用配置程序与domain0直接对话。 [2]   

性能比较

编辑

与其它VMM的比较
Denali使用准虚拟化技术来提高x86电脑上虚拟机的性能。Denali的虚拟机为因特网服务专门支持了最小化的操作系统。系统可以运行上千虚拟机。Xen与Denali不同,因为它试图运行适当数量的完整操作系统,而非大量轻量级操作系统。
VMware为x86提供虚拟机,这些虚拟机可以运行未修改的PC操作系统。所涉及的技术极为复杂,也导致了性能的(有时相当显著)下降。Xen牺牲了完全的二进制兼容,换取相对的简易性和改善的性能。
KVM在全虚拟化情况下性能优于Xen,但Xen在运行修改过的操作系统时效率更高。

半虚拟化

编辑

Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失, 典型的情况下大约损失 2%, 在最糟的情况下会有 8% 的效能耗损; 与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有极佳的表现。与那些传统通过软件模拟实现硬件的虚拟机不同,在3.0版本及在Intel VT-X支援前的Xen需要让客户操作系统(guest operating systems)与Xen API进行连接。到目前为止,这样连结已经可以运用在NetBSD, GNU/Linux, FreeBSD和贝尔实验室的Plan 9系统上。在Brainshare 2005会议上,Novell展示了NetWare与 Xen的连通。与Windows XP连通的技术曾在Xen开发初期进行,但微软的协议未能允许它发布。Sun微系统公司也正积极研究Solaris与Xen的连结,使其能在Xen平台上运作。

全虚拟化

编辑

Intel对Xen贡献修改以支持其VT-X Vanderpool架构扩展。如果主系统支持Vanderpool或者Pacifica扩展(Intel和AMD对本地支持虚拟化的扩展),这项技术将允许未修改的客作业系统运行在Xen虚拟机中。事实上,那意味著性能的提升,并且你可以在没有进行任何协议不允许的修改的情况下对Windows进行虚拟。

平台支持

编辑

Xen可以运行在x86,x86_64和ARM系统上,并正在向IA64、PPC移植。移植到其他平台从技术上是可行的,未来有可能会实现。

应用领域

编辑

Xen凭着独特的虚拟化性能优势赢得了越来越的广泛应用。被用户充分应用在以下领域:
◆ 服务器应用整合:在虚拟机范围内,在一台物理主机上虚拟出多台服务器, 以安装多个不同的应用,充分利用服务器的物理性能,灵活进行服务器的应用迁移。
软件开发测试:用户可利用Linux的低成本优势非常灵活地搭建多个应用系统开发平台,由此节省了大量的开发成本,加快了开发进程。
◆ 集群运算:和单独的管理每个物理主机相比较,虚拟机管理更加灵活,同时在负载均衡方面,更易于控制和隔离。
◆ 多操作系统配置:以开发和测试为目的,同时运行多个操作系统;
◆ 内核开发:在虚拟机的沙盒中,做内核的测试和调试,无需为了测试而单独架设一台独立的机器;
◆ 为客户操作系统提供硬件技术支持:可以开发新的操作系统, 以得益于现存操作系统的广泛硬件支持,比如Linux;

应用案例

编辑

1) 腾讯公司---中国最大的Web服务公司
腾讯公司经过多方测试比较后,最终选择了Novell SUSE Linux Enterprise Server中的Xen超虚拟化技术。该技术帮助腾讯改善了硬件利用率以及提高系统负载变化时的灵活性。客户说:“在引入Xen超虚拟化技术后,我们可以在每台物理机器上运行多个虚拟服务器,这意味着我们可以潜在的显著扩大用户群,而不用相应地增加硬件成本。”
2) 宝马集团----驰名世界的高档汽车生产企业
宝马集团(BMW Group)利用Novell带有集成Xen虚拟化软件的SUSE Linux Enterprise Server来执行其数据中心的虚拟化工作量,从而降低硬件成本、简化部署流程。采用虚拟化技术使该公司节省了高达70%的硬件成本,同时也节省了大量的电力成本。
3)云谷科技---基于Xen的VPS管理平台研发公司
XenSystem,是基于Xen的虚拟技术开发的一款VPS管理系统。这一款功能VPS智能管理平台,运用IT业界最新的“云计算”和“云储存”的设计理念,支持自动化的VPS云主机和服务器的实时管理功能,具备良好的兼容性和稳定性,从而简单高效地管理VPS主机的运作,与Hyper-V基于Xen的虚拟化技术后使VPS更趋稳定,运作更为高效。这也意味着IDC的运作成本会大大地降低,利润得以增加。

Xen与其它开源项目

编辑

使用Xen时,开源项目与其它项目的一些差异有时会让人感到迷惑。Xen 起源于英国的剑桥大学计算机实验室,该实验室开发了Xen开源项目。这个项目包括虚拟机监控器,即Xen环境的核心组成部分。除了剑桥大学的科学家以外, 很多其它IT领域集团也都参与了Xen开源项目,其中包括IBM、AMD、HP、Red Hat和Novell。
由于Xen方法使虚拟化领域迈出了一大步,因此Xen的创始人成立了他们 自己的公司XenSource(已被Citrix收购)。他们成立XenSource的目的是为了基于Xen hypervisor而提供一个完善的虚拟化解决方案,与其它虚拟化产品(如VMware ESX)竞争。其它企业也在它们自己的产品中综合应用了Xen hypervisor。例如,Linux厂商Red Hat和Novell公司都在自己的操作系统中包含了各自版本的Xen。由于Xen的大多数部分都是开源的,所以这些解决方案都非常相似。

版本发布

编辑

2010年04月08日,开源虚拟机 Xen 发布了4.0.0 正式版。
主要的新特性包括:
改进性能和可扩展性,客户机支持64个虚拟CPU,主机支持1 TB RAM和128个物理CPU;支持blktap2 for VHD image,包括快照和克隆;HVM客户机支持虚拟内存页共享和页到内存;支持Citrix WHQL认证的Windows PV驱动等等。
2011年04月10日,Xen 4.1 发布,开源虚拟机,变化:这个版本添加了一个架构XL toolstack,它在功能上几乎相当于XM / XEND原型credit2调度程序设计为对延迟敏感的工作负载和非常大的系统中,CPU池为先进的分区,支持大型系统(> 255处理器和1 gb / 2 mb超级页面支持),支持x86先进向量扩展(AVX),和一个新的内存访问API启用集成第三方安全解决方案到Xen虚拟化环境。
2013年04月16日,开源虚拟机 Xen成为 Linux 基金会项目。

2014年03月11日,Xen发布4.4版本,更好地支持ARM架构。

Xen的更多相关文章

  1. 虚拟机体验之 Xen 篇 —— 令人脑洞大开的奇异架构

    这一篇我要体验的虚拟机系统是 Xen.在虚拟机领域,Xen 具有非常高的知名度,其名字经常在各类文章中出现.同时 Xen 也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易.之所以如此, ...

  2. 【转】Xen与XenServer的区别

    说到XenServer,总是离不开Xen,所以我要说他们的区别,得首先从Xen开始说起! Xen体系架构 Xen hypervisor体系架构 Xen 的 VMM ( Xen Hypervisor ) ...

  3. Xen之初体验:XenMotion、 StorageMotion、Site Recovery、Power Management 各种新、高级功能免费

    Xenserver 的新版本6.2现在已经全面开源,省掉了原有的序列号,也能免费体验曾经标题中的付费高级功能. 安装镜像:http://downloadns.citrix.com.edgesuite. ...

  4. Citrix Xen Desktop安装配置

    Citrix虚拟化的东西其实和我现在做的东西完全没有关系的.反正接到通知要搭一个Citrix Xen Desktop那就做. 先放几个教程: :跟着图片通过XenDesktop7发布Win8桌面 这个 ...

  5. xen下离线读取虚拟机磁盘镜像的补丁

    之前在xen-3.4.2和xen-4.1.2下做过几个基于qemu模拟器的补丁,就是想着不用通过xm create(xen3下面)或xl create(xen4下面)启动虚拟机,而能直接去解析磁盘镜像 ...

  6. XEN的启动信息输出到“Platform timer is 14.318MHz HPET”就暂停接收的解决办法

    使用Serial Over Lan(SOL)来双机调试 XEN,在 XEN 启动时,引导信息输出到以下这一句时,就不再发送调试信息了: ...(XEN) Intel machine check rep ...

  7. 利用 Serial Over Lan(SOL)搭建 XEN 的调试信息输出环境

    如有转载,请注明出处与本文连接,谢谢! 修改XEN的源码实现额外的功能,需要有一个调试环境来得到XEN的调试信息(有关源码编译并安装 XEN 请阅读我以前的博文:在CentOS下源码安装 Xen并搭建 ...

  8. Ubuntu系统下Xen虚拟机的基本安装方法(代码创建)

    Ubuntu上Xen安装虚拟机方法一dd一个空的磁盘sudo dd if=/dev/zero of=/home/vm1.img bs=1G count=8 下载Xen VM通用配置文件 sudo wg ...

  9. Xen启动过程分析(还是分享过来吧,找了好长时间)

    XEN启动过程     ‍Xen Hypervisor运行在Ring0,在启动过程中,Xen首先被引导:系统由Grub启动,遵循Multiboot引导规范:然后Linux内核做为module也被引导入 ...

  10. 检测Linux VPS是Xen、OpenVZ还是KVM真假方法

    如果大家对自己购买和使用的VPS需要检测是否为真的Xen,我们可以用如下方法进行测试.比较专业的就是用virt-what脚本进行检测.检测Linux VPS是Xen.OpenVZ还是KVM真假方法方法 ...

随机推荐

  1. js日期比较

    alert(EDate< new Date().format("yyyy-MM-dd hh:mm:ss")); Date.prototype.format = functio ...

  2. apache指定的网络名不再可用

    如果Apache的error.log还是出现大量的:Sat Dec 24 17:21:28 2006] [warn] (OS 64)指定的网络名不再可 用. : winnt_accept: Async ...

  3. 聚合及UML表示

     聚合聚合是一种特别类型的关联,用于描述“总体到局部”的关系. 聚合分成: 基本聚合与合成聚合   基本聚合: 基本聚合一般也简称为聚合(Aggregation).在基本的聚合关系中, 部分类(B)  ...

  4. js中的继承

    js中继承的实现方式很多,此处给出两种常用方式. <!DOCTYPE html> <html> <head> <meta charset='UTF-8'> ...

  5. Linux 下从头再走 GTK+-3.0 (三)

    之前我们为窗口添加了一个按钮,接下来让这个按钮丰富一点.并给窗口加上图标. 首先创建 example3,c 的源文件. #include <gtk/gtk.h> static void a ...

  6. WCF自定义Header

    MiscWebSrvcInfClient client = new MiscWebSrvcInfClient("MiscWSBeanPort", ConfigurationMana ...

  7. 怎么找到占用usb的模块,linux下Jlink连接失败

    问题是这样产生的,我在linux下安装jlink,启动JLinkExe执行,总是提示不能通过usb连接: SEGGER J-Link Commander V5.10q (Compiled Mar :: ...

  8. plain framework 1 参考手册 入门指引之 代码风格

    代码风格 介绍 介绍 框架自身采用了google的C++风格,作者也鼓励在你的应用中使用此风格,有关此风格你可以查阅相关资料了解.下面是一段plain framework中的代码,以便大家参考: 你可 ...

  9. [Notes] Learn Python2.7 From Python Tutorial

    I have planed to learn Python for many times. I have started to learn Python for many times . Howeve ...

  10. 【2016-10-14】【坚持学习】【Day5】【单例模式】

    今天学习第二个模式:单例模式.只允许系统有一个实例运行,提供全局访问该实例的公共方法. class Singleton { private static Singleton instance=null ...