Xen与虚拟化技术

Xen与虚拟化技术
Xen与虚拟化技术

目录

2010-6-21

1.虚拟化发展历史 (2)

1.1硬件虚拟化 (2)

1.2处理器虚拟化 (2)

1.3指令集虚拟化 (2)

2.虚拟化技术的类型 (3)

2.1硬件仿真 (3)

2.2完全虚拟化 (3)

2.3超虚拟化 (3)

2.4操作系统级的虚拟化 (4)

2.5内核虚拟机(Linux KVM) (4)

3.与Linux相关的虚拟化项目 (5)

4.Xen (6)

4.1Xen的体系架构 (6)

4.2Xen Hypervisor,操作系统,应用程序 (8)

4.3Xen的半虚拟化和全虚拟化 (9)

4.4Xen的网络架构 (11)

4.4.1Xen支持三种网络工作模式 (11)

4.4.2Xen Domain U Guests发送数据包处理流程 (12)

4.4.3xen中虚拟网卡与物理网卡之间的关系 (12)

5.Xen的配置和管理 (13)

5.1Xen相关配置文件 (13)

5.2/etc/xen/下的配置文件 (14)

1.虚拟化发展历史

1.1硬件虚拟化

IBM早在20世纪60年代开发System/360?Model67大型机时就开始使用该技术。Model67通过VMM(Virtual Machine Monitor)对所有的硬件接口都进行了虚拟化。在早期计算机中,操作系统被称为supervisor。能够在其他操作系统上运行的操作系统被称为hypervisor(这个术语是在20世纪70年代出现的)。

VMM可以直接在底层硬件上运行,允许运行多个虚拟机(VM)。每个VM都可以运行一个自己私有操作系统的实例——称为CMS(Conversational Monitor System)

1.2处理器虚拟化

虚拟化早期的另外一种用法是P-code(或伪码)机。P-code是一种机器语言,运行于虚拟机而不是实际硬件。它将Pascal程序编译成P-code,然后在一个P-code虚拟机上运行。这就使P-code程序具有了高度的可移植性,而且,只要有可用的P-code虚拟机,P-code 程序就可以运行。Java语言的虚拟机沿用了这种P-code模型。

1.3指令集虚拟化

虚拟化最新的发展称为指令集虚拟化,或者二进制转换。在这种模型中,虚拟指令集被转换成底层硬件的物理指令集,这个过程通常都是动态的。当代码执行时,就会对代码的某个段进行转换。如果出现分支情况,就会导入新代码集并进行转换。这使它与缓存操作非常类似,后者是将指令块从内存移动到本地快速缓存中执行。

2.虚拟化技术的类型

2.1硬件仿真

最复杂的虚拟化实现技术。可以在宿主系统上创建一个硬件VM来仿真所想要的硬件。每条指令都必须在底层硬件上进行仿真,因此速度会减慢100倍甚至1000倍。但优点是可以在一个ARM处理器主机上运行为PowerPC设计的操作系统,而不需要任何修改。主要应用在硬件开发。

2.2完全虚拟化

也称为原始虚拟化,是另外一种虚拟化方法。这种模型使用一个虚拟机,它在客户操作系统和原始硬件之间进行协调。“协调”在这里是一个关键,因为VMM在客户操作系统和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在hypervisor中进行处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过hypervisor共享。

完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行。惟一的限制是操作系统必须要支持底层硬件。有些比较老的硬件,例如x86,会给完全虚拟化带来一些问题。例如,需要VMM处理的一些特定敏感指令并没有捕获。因此,hypervisor必须要动态扫描并捕获这些特权模式代码来解决这一问题。

2.3超虚拟化

超虚拟化(paravirtualization)也称为半虚拟化。是另外一种流行的虚拟化技术,它与完全虚拟化有一些类似。这种方法使用了一个hypervisor来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中。这种方法不再需要重新编译或捕获特权指

令,因为操作系统本身在虚拟化进程中会相互紧密协作。

超虚拟化技术需要为hypervisor修改客户操作系统,这是它的一个缺点。但是超虚拟化提供了与未经虚拟化的系统相接近的性能。

2.4操作系统级的虚拟化

它使用的技术与前面所介绍的有所不同。这种技术在操作系统本身之上实现服务器的虚拟化。这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来。操作系统级的虚拟化要求对操作系统的内核进行一些修改,但是其优点是可以获得原始性能。

2.5内核虚拟机(Linux KVM)

KVM是一种完全虚拟化解决方案,它有一个方面非常独特:它将Linux内核转换为一个使用内核模块的hypervisor。这个模块允许使用其他客户操作系统,然后在宿主Linux 内核的用户空间中运行。内核中的KVM通过/dev/kvm字符设备来公开虚拟化后的硬件。客户操作系统使用为PC硬件仿真修改过的QEMU进程与KVM模块接口。

KVM模块向内核中引入了一个新的执行模块。普通内核支持内核模式和用户模式,而KVM则引入了一种客户模式。客户模式用来执行所有非I/O客户代码,而普通用户模式支持客户I/O。

3.与Linux相关的虚拟化项目

项目名称类型

Bochs硬件仿真

QEMU硬件仿真

VMware完全虚拟化

z/VM完全虚拟化

Kvm完全虚拟化(内核虚拟化)

Xen超虚拟化

UML超虚拟化

Linux-Vserver操作系统级虚拟化

OpenVZ操作系统级虚拟化

4.Xen

Xen采用超虚拟化技术和完全虚拟化技术。

一个Xen虚拟化环境由以下部件构成:

1)Xen Hypervisor

2)Domain0(包括Domain管理和控制工具)

3)Domain U(Domain U PV客户系统和Domain U HVM客户系统)

4.1Xen的体系架构

Xen的VMM(Xen Hyperviso)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相互隔离。Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain0,而其余的域则称为Domain U。

Xen的体系架构如图所示。Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。Dom0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。

xen2.0之后,引入了分离设备驱动模式。该模式在每个用户域中建立前端(front end)设备,在特权域(Dom0)中建立后端(back end)设备。所有的用户域操作系统像使用普通设备一样向前端设备发送请求,而前端设备通过IO请求描述符(IO descripror ring)和设备通道(device channel)将这些请求以及用户域的身份信息发送到处于特权域中的后端设备。这种体系将

控制信息传递和数据传递分开处理。在xen体系结构设计中,后端设别运行的特权域被赋予一个特有的名字---隔离设备域(Isolation Device Domain,IDD),而在实际设计中,IDD就处在Dom0中。所有的真实硬件访问都由特权域的后端设备调用本地设备驱动(native device drive)发起。前端设备的设计十分简单,只需要完成数据的转发操作,由于它们不是真实的设备驱动程序,所以也不用进行请求调度操作。而运行在IDD中的后端设备,可以利用linux的现有设备驱动来完成硬件访问,需要增加的只是IO请求的桥接功能---能完成任务的分发和回送。xen的实际体系架构如下:

为了提升IO操作的性能,xen采用零拷贝的策略处理数据传递。当数据从用户域送出时,用户域允许IDD域中的设备驱动程序将包含数据的页面映射到IDD得地址空间并用于DMA 传输,从而避免了从用户域到IDD,从IDD再到设备的多次拷贝。当IDD域将数据送往用户域时,xen通过页面交换重映射操作,将IDD域中的数据页面和用户域提供的一个空白页进行也表交换。交换之后,空白页面进入到设备域中,而数据页面进入到用户域中,该技术也称为page-flipping方法。

4.2Xen Hypervisor,操作系统,应用程序

IA-32

X86-64

4.3Xen的半虚拟化和全虚拟化

半虚拟化:子操作系统使用一个专门的API与VMM通信,VMM则负责处理虚拟化请求,并将这些请求递交到硬件上,由于有了这个特殊的API,VMM不需要去做好为资源的指令翻译工作。而且使用准虚拟化API时,虚拟操作系统能够发出更有效的指令。

优点:使用准虚拟化API时,虚拟操作系统能够发出更有效的指令,效率更高。

缺点:需要修改包含这个特殊API的操作系统,而且这个缺点对于某些操作系统(主要是Windows)来说是致命的,因为它们不提供这种API。

完全虚拟化:虚拟机与虚拟机监控器(VMM)的部件进行通信,而VMM则与硬件平台进行通信,要在Xen中利用完全虚拟化方法,需要一个特殊的CPU,此CPU能解释虚拟操作系统发出的未修改的指令,如果没有这样的特殊CPU功能,是不可能在Xen中使用完全虚拟化的。

优点:完全虚拟化的优势在于,它安装了一个未修改的操作系统,这意味着运行于同样架构的所有操作系统都可以被虚拟化。

缺点:因为在Xen方法中不是每条虚拟操作系统发出的指令都可以被翻译为每个CPU都能识别的格式,因为这非常耗资源。

运行在xen上的半虚拟化虚拟机被称为“Domain U PV Guests”,全虚拟化虚拟机被称为“Domain U HVM Guests”。

Domain0中包含两个驱动:

Domain U PV Guests中包含两个驱动:

Domain U HVM Guests中没有PV Drivers,而是在Domain0中为每一个HVM Guests 启动一个特殊的守护进程Qemu-dm,由Qemu-dm负责HVM Guest的网络和磁盘操作请求。

4.4Xen的网络架构

4.4.1Xen支持三种网络工作模式

1)Bridge安装虚拟机时默认使用Bridge模式

2)Route

3)NAT

Bridge模式下,Xend启动时的流程:

1)创建虚拟网桥xenbr0

2)停止物理网卡eth0

3)物理网卡eth0的MAC地址和IP地址被复制到虚拟网卡veth0

4)物理网卡eth0重命令为peth0

5)Veth0重命名为eth0

6)Peth0的MAC地址更改(FE:FF:FF:FF:FF:FF),ARP功能关闭

7)连接peth0、vif0.0到网桥xenbr0

8)启动peth0、vif0.0、xenbr0

Domain U启动时的流程:

1)vif.0连接到xenbr0

2)启动vif.0

Route模式下,xend启动时的流程

1)开启Domain0的IP forward

Domain U启动时的流程:

1)创建vif.0,dom U eth0的IP地址被拷贝到vif.0 2)启动vif.0

3)为domU的配置文件中指向虚拟接口vif.0分配的IP地址增加静态路由

NAT模式(不清楚)

NAT模式会使用虚拟局域网virbr0

4.4.2Xen Domain U Guests发送数据包处理流程

4.4.3xen中虚拟网卡与物理网卡之间的关系

安装了xen的Linux机器,在Dom0中能看到以下几类网卡(网络接口设备):(X,Y都为数字)

pethY

ethY

xenbrY

virbrY

vifX.Y(X为DomaiID,Y表示该虚拟网卡是该Domain的第几块虚拟网卡)vethY(一般在xend启动完成以后就不存在了)

这些网络接口设备之间的关系如下:

5.Xen的配置和管理

5.1Xen相关配置文件

Xen以及支持Xen的linux内核:/boot/

内核模块:/lib/modules/

Xen配置文件:/etc/xen/

Xen守护进程:/etc/init.d/xend(bash脚本)

Domain启动脚本:/etc/init.d/xendomains负责第一个虚拟机Domain0以及其他Domain U 启动,非守护进程

Xen相关可执行命令:/usr/sbin/

xm、brct1、virt-clone命令

5.2/etc/xen/下的配置文件

vm000vm001vm002vm003vm004都是虚拟机Domain U的配置文件,文件名与创建虚拟机时虚拟机的名字对应。

xemexample*是示例配置文件

Xend以及Domain启动时(xm create)调用的脚本

相关主题
相关文档
最新文档