Xen与虚拟化技术


1 目 录 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.1 Xen 的体系架构................................................................................................................6 4.2 Xen Hypervisor,操作系统,应用程序.....................................................................8 4.3 Xen 的半虚拟化和全虚拟化............................................................................................9 4.4 Xen 的网络架构..............................................................................................................11 4.4.1 Xen 支持三种网络工作模式.............................................................................. 11 4.4.2 Xen Domain U Guests 发送数据包处理流程................................................. 12 4.4.3 xen 中虚拟网卡与物理网卡之间的关系.......................................................... 12 5.Xen 的配置和管理...................................................................................................................... 13 5.1 Xen 相关配置文件..........................................................................................................13 5.2 /etc/xen/下的配置文件...............................................................................................14 2 1.1.1.1.虚拟化发展历史 1.1 硬件虚拟化 IBM 早在 20 世纪 60 年代开发 System/360™ Model 67 大型机时就开始使用该技 术。Model 67 通过 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 指令集虚拟化 虚拟化最新的发展称为指令集虚拟化,或者二进制转换。在这种模型中,虚拟指令集被 转换成底层硬件的物理指令集,这个过程通常都是动态的。当代码执行时,就会对代码的某 个段进行转换。如果出现分支情况,就会导入新代码集并进行转换。这使它与缓存操作非常 类似,后者是将指令块从内存移动到本地快速缓存中执行。 3 2.2.2.2.虚拟化技术的类型 2.1 硬件仿真 最复杂的虚拟化实现技术。可以在宿主系统上创建一个硬件 VM 来仿真所想要的硬 件。每条指令都必须在底层硬件上进行仿真,因此速度会减慢 100 倍甚至 1000 倍。但优点 是可以在一个 ARM 处理器主机上运行为 PowerPC 设计的操作系统,而不需要任何修改。 主要应用在硬件开发。 2.2 完全虚拟化 也称为原始虚拟化,是另外一种虚拟化方法。这种模型使用一个虚拟机,它在客户操作 系统和原始硬件之间进行协调。“协调”在这里是一个关键,因为 VMM 在客户操作系统和 裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在 hypervisor 中进行处理,因 为这些底层硬件并不由操作系统所拥有,而是由操作系统通过 hypervisor 共享。 完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行。惟一的限制是操作系 统必须要支持底层硬件。有些比较老的硬件,例如 x86,会给完全虚拟化带来一些问题。例 如,需要 VMM 处理的一些特定敏感指令并没有捕获。因此,hypervisor 必须要动态扫描 并捕获这些特权模式代码来解决这一问题。 2.3 超虚拟化 超虚拟化(paravirtualization)也称为半虚拟化。是另外一种流行的虚拟化技术,它与完 全虚拟化有一些类似。这种方法使用了一个 hypervisor 来实现对底层硬件的共享访问,还 将与虚拟化有关的代码集成到了操作系统本身中。这种方法不再需要重新编译或捕获特权指 4 令,因为操作系统本身在虚拟化进程中会相互紧密协作。 超虚拟化技术需要为 hypervisor 修改客户操作系统,这是它的一个缺点。但是超虚拟化提 供了与未经虚拟化的系统相接近的性能。 2.4 操作系统级的虚拟化 它使用的技术与前面所介绍的有所不同。这种技术在操作系统本身之上实现服务器的虚 拟化。这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来。操作系统 级的虚拟化要求对操作系统的内核进行一些修改,但是其优点是可以获得原始性能。 2.5 内核虚拟机(Linux KVM) KVM 是一种完全虚拟化解决方案,它有一个方面非常独特:它将 Linux 内核转换为 一个使用内核模块的 hypervisor。这个模块允许使用其他客户操作系统,然后在宿主 Linux 内核的用户空间中运行。内核中的 KVM 通过 /dev/kvm 字符设备来公开虚拟化后的硬件。 客户操作系统使用为 PC 硬件仿真修改过的 QEMU 进程与 KVM 模块接口。 5 KVM 模块向内核中引入了一个新的执行模块。普通内核支持内核 模式和用户 模式,而 KVM 则引入了一种客户 模式。客户模式用来执行所有非 I/O 客户代码,而普通用户模式 支持客户 I/O。 3.3.3.3.与Linux Linux Linux Linux 相关的虚拟化项目 项目名称 类型 Bochs 硬件仿真 QEMU 硬件仿真 VMware 完全虚拟化 z/VM 完全虚拟化 Kvm 完全虚拟化(内核虚拟化) Xen 超虚拟化 UML 超虚拟化 Linux-Vserver 操作系统级虚拟化 OpenVZ 操作系统级虚拟化 6 4.Xen4.Xen4.Xen4.Xen Xen 采用超虚拟化技术和完全虚拟化技术。 一个 Xen 虚拟化环境由以下部件构成: 1)Xen Hypervisor 2)Domain 0 (包括 Domain 管理和控制工具 ) 3)Domain U(Domain U PV 客户系统和 Domain U HVM 客户系统) 4.1 Xen 的体系架构 Xen 的VMM(Xen Hyperviso) 位于操作系统和硬件之间,负责为上层运行的操作系统内核 提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相 互隔离。Xen 采用混合模式,因而设定了一个特权域用以辅助 Xen 管理其他的域,并提供 虚拟的资源服务,该特权域称为 Domain 0,而其余的域则称为 Domain U。 Xen 的体系架构如图所示。Xen 向Domain 提供了一个抽象层,其中包含了管理和虚拟硬件 的API。Dom0 内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责 与Xen 提供的管理 API 交互,并通过用户模式下的管理工具来管理 Xen 的虚拟机环境。 xen2.0之后,引入了分离设备驱动模式。该模式在每个用户域中建立前端(front end)设备, 在特权域(Dom0)中建立后端(back end)设备。所有的用户域操作系统像使用普通设备一样向 前端设备发送请求,而前端设备通过 IO 请求描述符(IO descripror ring)和设备通道(device channel)将这些请求以及用户域的身份信息发送到处于特权域中的后端设备 。这种体系将 7 控制信息传递和数据传递分开处理。在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 方法。 8 4.2 Xen Hypervisor,操作系统,应用程序 IA-32 X86-64 9 4.3 Xen 的半虚拟化和全虚拟化 半虚拟化:子操作系统使用一个专门的API与VMM通信,VMM则负责处理虚拟化请求, 并将这些请求递交到硬件上,由于有了这个特殊的API,VMM不需要去做好为资源的指 令翻译工作。而且使用准虚拟化API时,虚拟操作系统能够发出更有效的指令。 优点:使用准虚拟化API时,虚拟操作系统能够发出更有效的指令,效率更高。 缺点:需要修改包含这个特殊API的操作系统,而且这个缺点对于某些操作系统(主要 是Windows)来说是致命的,因为它们不提供这种API。 完全虚拟化:虚拟机与虚拟机监控器(VMM)的部件进行通信,而VMM则与硬件平 台进行通信,要在Xen中利用完全虚拟化方法,需要一个特殊的CPU,此CPU能解释虚 拟操作系统发出的未修改的指令,如果没有这样的特殊CPU功能,是不可能在Xen中使 用完全虚拟化的。 优点:完全虚拟化的优势在于,它安装了一个未修改的操作系统,这意味着运行于同样 架构的所有操作系统都可以被虚拟化。 缺点:因为在Xen方法中不是每条虚拟操作系统发出的指令都可以被翻译为每个CPU都 能识别的格式,因为这非常耗资源。 运行在xen上的半虚拟化虚拟机被称为“Domain UPV Guests”,全虚拟化虚拟机被称为 “Domain UHVM Guests”。 Domain 0 中包含两个驱动: 10 Domain UPV Guests 中包含两个驱动: Domain UHVM Guests 中没有PV Drivers,而是在Domain 0 中为每一个 HVM Guests 启动一个特殊的守护进程Qemu-dm,由Qemu-dm负责HVM Guest的网络和磁盘操作请 求。 11 4.4 Xen 的网络架构 4.4.1 Xen 支持三种网络工作模式 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)开启 Domain 0 的 IP forward Domain U 启动时的流程: 1)创建 vif.0,dom U eth0 的 IP 地址被拷贝到 vif.0 2)启动 vif.0 3)为domU 的配置文件中指向虚拟接口 vif.0 分配的 IP 地址增加静态路由 NAT 模式(不清楚) NAT 模式会使用虚拟局域网 virbr0 12 4.4.2 Xen Domain U Guests 发送数据包处理流程 4.4.3 xen 中虚拟网卡与物理网卡之间的关系 安装了 xen 的Linux 机器,在 Dom 0 中能看到以下几类网卡(网络接口设备): (X,Y都为数字) pethY ethY xenbrY virbrY vifX.Y (X为DomaiID,Y表示该虚拟网卡是该 Domain 的第几块虚拟网卡) vethY (一般在 xend 启动完成以后就不存在了) 这些网络接口设备之间的关系如下: 13 5.Xen 5.Xen 5.Xen 5.Xen 的配置和管理 5.1 Xen 相关配置文件 Xen 以及支持 Xen 的linux 内核:/boot/ 内核模块:/lib/modules/ Xen 配置文件:/etc/xen/ Xen 守护进程:/etc/init.d/xend (bash 脚本) Domain 启动脚本:/etc/init.d/xendomains 负责第一个虚拟机 Domain 0 以及其他 Domain U 启动,非守护进程 Xen 相关可执行命令:/usr/sbin/ xm 、brct1、virt-clone 命令 14 5.2 /etc/xen/下的配置文件 vm000 vm001 vm002 vm003 vm004 都是虚拟机 Domain U 的配置文件,文件名与创建虚拟 机时虚拟机的名字对应。 xemexample* 是示例配置文件 15 Xend 以及 Domain 启动时(xm create)调用的脚本
还剩14页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

wuang

贡献于2013-12-19

下载需要 6 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf