虚拟化 - Xen
http://www.cnblogs.com/BloodAndBone/archive/2010/11/02/1866907.html
1. XEN 简介
XEN 是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。
Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SUSE Linux Enterprise Server 最先采用了XEN虚拟技术。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。
XEN 是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,XEN 可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源最少。目前稳定版本为XEN3.0。支持万贯虚拟化和超虚拟化。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。
http://www.cnblogs.com/ventlam/archive/2010/10/09/1846862.html
XEN架构如图2-1所示:
最底层的是计算机硬件,包括CPU,RAM,硬盘接口,网卡,外设数据总线等等。
硬件层之上,是Xen hypervisor层,包括总控界面(Xen Control Interface),虚拟CPU,虚拟RAM,虚拟硬盘,虚拟网卡等等。
在Xen层之上,是各个OS实例(OS instances)。其中最左边的OS实例很特别。在启动Xen的时候,最左边的OS实例,Domain0 on XenoLinux,自动被启动。Domain0里运行着Xen Control Software,这个软件控制着各个OS实例的启动,终止,以及监控其运行情况。
Domain0对于其它OS实例的控制,是通过Xen层中Xen Control Interface来实现的。而这个Xen Control Interface只对Domain0开放。其它OS实例只有被管理的义务,而没有管理其它实例的权力。DomUs可以运行被修改过或者标准化的操作系统。被修改的系统运行在paravirtualization(半虚拟化)每个OS实例都被分配一套虚拟的CPU,RAM,硬盘和网卡。每个OS实例使用这些虚拟的设备,与通常的OS并无不同。在新版的XEN中通过PCI允许客户OS直接读取硬件,以提高整体性能。如图2-2所示,客户OS直接使用硬件
2. VMware与XEN比较
XEN和VMware是目前市场上主流的两大虚拟化产品。现将两者进行比较说明如下表:
序号 | 虚拟化产品 | 详 细 说 明 |
---|---|---|
1 | VMware | 建立在直接执行(直接在硬件上上运行用户级的虚拟机编码)和二进制译码(对特权级别编码进行动态编译)的基础上的。把一个完整的X86平台导出到虚拟机上,使大多数能在X86上执行的OS都能在虚拟机上运行,而不需要进行任何修改。 |
2 | XEN | Xen的架构中使用了Para虚拟化技术。对虚拟出来的客户操作系统进行修改,使它明白它是在虚拟环境下运行。不过现在Intel和AMD已有支持超虚拟化技术的CPU,不需再做修改。Xen提供了API(Application Programming Interface),这样VMM就不需要进行指令翻译工作。运行Xen的系统开销确实非常小,大约占3%。系统性能可以接近在裸机上的性能,比Vmware快很多。 |
3. XEN 虚拟化技术特性
Xen 是目前业界性能最高的超级管理 程序,其开销比同类专有产品低十倍。 Xen 独特的性能价值来自超虚拟化的使 用。超虚拟化使托管虚拟服务器可以与 超级管理程序共同协作,使企业应用程 序达到最佳的性能。其他供应商 (例如 Microsoft) 正争先恐后地实施自己的超 级管理程序,但至少已落后 Xen 项目 3 年。另外,Xen 还利用了 Intel VT 和 AMD 虚拟化处理器的硬件虚拟化能力。
XEN 虚拟化技术的主要特性如下所示:
◆ 虚拟机的性能更接近真实的硬件平台;
◆ 可实现物理平台和虚拟平台间的自由切换;
◆ 在每个客户虚拟机支持到 32个虚拟CPU,通过VCPU热插拔;
◆ 支持PAE指令集的x86/32, x86/64平台;
◆ 能通过硬件辅助虚拟技术进行虚拟原始操作系统,可支持Microsoft Windows虚拟;
◆ 得到广泛的硬件厂家的大力支持,支持几乎所有的Linux设备驱动。
3.1 PV(Para-Vritralization)和FV(Full-Vritralization)的差别
转自:http://blog.csdn.net/hp_2008/article/details/7619980
PV(Para-Vritralization)和FV(Full-Vritralization)的差别,主要以guest OS的硬件仿真程度做区分。
FV:FV是一般较常看到的作法,所有的guest OS完全不会看到实际的硬件为何,只能使用由Supervisor所提供的所有虚拟硬件,因此,在这种机制下,guest OS动作的性能一定会大受虚拟接口的影响。另外还有一个特点,就是因为完全仿真的关系,不支持新的技术,连ACPI开关机的机制都无法使用,也就是当使用 者在FV的guest OS下,若直接触动关机的按钮(这里的按钮是由VMM所提供的,不是主机上的)会直接断电,而不会进行关机程序。
PV:至于PV的作法,有鉴于一般Virtual Machine工具都是以完全仿真的方式,造成性能上的降低,因此,XEN在设计上,希望各操作系统可以在开发时就已经将XEN的技术包括进去,这样在使 用时,就可以用局部仿真的方式,让操作系统可以直接使用到硬件中的CPU、内存等,而不需要通过XEN做仿真的操作。
这样,若硬件都是由Virtual Machine仿真出来的,性能自然会变得比较慢,所以XEN所主推的概念就是,当操作系统默认支持XEN时就可以通过XEN的机制,直接使用到底层的硬件,而不是每个OS都要通过Hypervisor的接口,性能上就可大为提高。
半虚拟化的技术获得高效能的表现:较少的效能损失,典型的情况下大约损失2%,在最糟的情况下会有8%的效能耗损;与其它使用完全的虚拟化却造成最高到20%损耗的其他解决方案形成一个明显的对比。
在PV与FV的安装上,对CPU的要求是有差异的。以PV而言,因为OS原本就支持XEN,所以不需要经过特殊的处理步骤,因此,对CPU来于,没有特殊的要求,基本上都可以使用。
但FV就不同,因为FV模式是以完全仿真的方式进行,所以CPU必须要特别将此功能加入到CPU的核心中,因此,CPU是有特殊需求的。在Intel与AMD中针对Virtual Machine所加入的功能名称不同,分别为Intel VT与AMD-V。
3.2 Xen 的特点
在目前Linux的世界,XEN并不是唯一的,除了XEN这一架构外,另外还有一个KVM(Kernel based Vitrual Machine),从2.6.20版本之后的Linux Kernel就支持其功能。因为KVM的做法是以原本Kernel为依据,只要将其module加载即可使用,唯一较XEN弱势的是KVM以单一Full Virtuallization为服务方式。
- Xen是一款虚拟化软件,支持半虚拟化和完全虚拟化。它在不支持VT技术的cpu上也能使用,但是只能以半虚拟化模式运行。
- 半虚拟化的意思是需要修改被虚拟系统的内核,以实现系统能被完美的虚拟在Xen上面。完全虚拟化则是不需要修改系统内核则可以直接运行在Xen上面。
- VMware是一款完全虚拟化软件。完全虚拟的弱点是效率不如半虚拟化的高。半虚拟化系统性能可以接近在裸机上的性能。
- Xen是由一个后台守护进程维护的,叫做xend,要运行虚拟系统,必须先将它开启。它的配置文件在/etc/xen/xend-config.sxp, 内容包括宿主系统的类型,网络的连接结构、宿主操作系统的资源使用设定,以及vnc连接的一些内容。(如果你想增加一个虚拟网络设备的话,是需要在这里设 定的)
- /etc/xen/auto 的含义是如果你想让被虚拟系统随着宿主系统一同启动的话,就把虚拟系统的配置文件放到这个目录下面来。
- /etc/xen/scripts 是些脚本文件,用于初始化各种虚拟设备,比如虚拟网桥等。(如果要增加一个虚拟网络设备,同样需要在此处调节)
- 在/etc/xen下面会有些配置文件,这就是虚拟系统引导时所必须的些文件,里面记录了引导和硬件信息。
- Xen的配置工具有许多,我使用的是virt-manager(GUI)、virt-install和xm。第一个用于管理和安装系统,第二个只用于安装系统,第三个用于启动系统。
- 安装半虚拟Linux有两种方法,一种是利用Linux的网络安装方式安装,http、ftp、nfs方式都是可以的(特别注意:半虚拟环境下安装 Linux是不支持本地光驱或者iso镜像安装的!),并且RHEL5会自动生成配置文件。第二种是先建立镜像文件,并格式化,然后挂载到本地文件系统上 来,将虚拟系统需要用到的文件拷贝进去并修改,然后手工创建配置文件并启动。
- 虚拟网络设备有三种模式:bridge桥模式、router路由模式和nat模式。其中桥模式是默认模式,在这种模式下,虚拟系统和宿主系统被认为是并列的关系,虚拟系统被配置IP或者dhcp后即可联通网络。
- 原来的iptables无法对桥模式下的数据包做处理,RHEL5的iptables中增加了一个physdev的模块,可用iptables -m physdev -h查看帮助
4. Xen 和 KVM 比较
内容来自于阿里的分享,2017/12/13.