1.2 Xen虚拟化技术简介
1.2.1 Xen的历史
早在20世纪90年代,伦敦剑桥大学在一个叫作Xenoserver的研究项目中开发了Xen虚拟机。作为Xenoserver的核心,Xen虚拟机负责管理和分配系统资源,并提交必要的统计功能。在那个年代,X86的处理器还不具备对虚拟化技术的硬件支持,所以Xen一开始是作为一个准虚拟化的解决方案出现的。因此,为了支持多个虚拟机,内核必须针对Xen做出特殊的修改才可以运行。为了吸引更多开发人员参与,2002年Xen被正式开源。在先后推出了1.0和2.0版本后,Xen开始被诸多如Red Hat、Novell和Sun的Linux发行版集成,作为其中的虚拟化解决方案。2004年,Intel的工程师开始为Xen添加硬件虚拟化的支持,从而为即将上市的新款处理器做必需的软件准备。在他们的努力下,2005年发布的Xen 3.0开始正式支持Intel的VT技术和IA64架构,从而使Xen虚拟机可以运行完全没有修改的操作系统。
1.2.2 Xen功能概览
Xen是一个直接在系统硬件上运行的虚拟机管理程序。Xen在系统硬件与虚拟机之间插入一个虚拟化层,将系统硬件转换为一个逻辑计算资源池,Xen可将其中的资源动态地分配给任何操作系统或应用程序。在虚拟机中运行的操作系统能够与虚拟资源交互,就好像它们是物理资源一样。
图1-7显示了一个运行虚拟机的Xen系统。
图1-7 运行虚拟机的Xen系统
Xen采用ICA协议,通过一种叫作准虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(X86), Xen也有很好的表现。与传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-x支持下,3.0版本之前的Xen需要系统的来宾权限,用来和Xen API连接。到目前为止,这种技术已经可以运用在NetBSD、GNU/Linux、FreeBSD和Plan 9系统上。Sun微系统公司也正在积极地将Solaris移植到Xen平台上。
Xen被设计成微内核的实现,其本身只负责管理处理器和内存资源。在Xen上面运行的所有虚拟机中,0号虚拟机是特殊的,其中运行的是经过修改的支持准虚拟化的Linux操作系统,大部分的输入输出设备都交由这个虚拟机直接控制,而Xen本身并不直接控制它们。这样做可以使基于Xen的系统最大限度地复用Linux内核的驱动程序。更广泛地说,Xen虚拟化方案在Xen Hypervisor和0号虚拟机的功能上做了聪明的划分,既能够重复使用大部分Linux内核的成熟代码,又可以控制系统之间的隔离性和针对虚拟机进行更加有效的管理和调度。通常,0号虚拟机也被视为Xen虚拟化方案的一部分。
Xen虚拟机可以在不停止的情况下在多个物理机之间实时迁移。在操作过程中,虚拟机在没有停止的情况下,内存被反复地复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60~300毫秒的非常短暂的暂停,以执行最终的同步化,给使用者无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到硬盘,并切换到另外一台,第一台虚拟机在以后可以恢复。
Xen已经可以运行在X86系统上,并正在向X86-64、IA64、PPC移植。移植到其他平台从技术上是可行的,未来有可能实现。
Xen是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全地执行多个虚拟机,与Linux是一个完美的开源组合,Novell Suse Linux Enterprise Server最先采用了Xen虚拟技术。它特别适用于整合服务器应用,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT结构。
1.2.3 Xen虚拟化技术的优点
Xen构建于开源的虚拟机管理程序上,结合使用半虚拟化和硬件协助的虚拟化。操作系统与虚拟化平台之间的这种协作支持较简单的虚拟机管理程序开发,来提供高度优化的性能。
Xen提供了复杂的工作负载均衡功能,可捕获CPU、内存、硬盘I/O和网络I/O数据,它提供了两种优化模式:一种针对性能;另一种针对密度。
Xen利用一种名为Citrix Storage Link的独特的存储集成功能。使用Citrix Storage Link,系统管理员可直接利用来自HP、Dell、NetApp、EMC等公司的存储产品。
Xen包含多核处理器支持、实时迁移、物理服务器到虚拟机转换(P2V)和虚拟机到虚拟机转换(V2V)工具。集中化的多服务器管理、实时性能监控,以及Windows和Linux的快速性能。
1.2.4 Xen虚拟化技术的缺点
Xen会占用相对较大的空间,且依赖于0号虚拟机中的Linux操作系统。
Xen依靠第三方解决方案来管理硬件设备驱动程序,存储、备份、恢复以及容错。
任何具有高I/O速率的操作或任何会吞噬资源的操作都会使Xen陷入困境,使其他虚拟机缺乏资源。
Xen缺少802.1Q虚拟局域网(VLAN)中继,出于安全考虑,它没有提供目录服务集成、基于角色的访问控制、安全日志记录和审计或管理操作。
Xen目前最大的困难在于Linux内核社区的抵制,这导致Xen相关的内核改动一直不能顺利进入内核源代码,从而无法及时得到内核最新开发成果的支持。