Xen虚拟化技术研究
2014-10-20李仲龙杨斌孙林花
李仲龙 杨斌 孙林花
摘要:对开源Xen虚拟化平台的体系结构、域的管理与控制、虚拟机通信机制、vcpu调度、虚拟化存储系统等进行了研究,并搭建试验环境进行了测试和模拟。
关键词: Xen; 虚拟机; 调度; 存储; 通信
中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2014)25-5887-03
Research on Xen Virtual Technology
LI Zhong-long,YANG Bin ,SUN Lin-hua
(Gansu Meteorological Information & Technique Support & Equipment Centre, Lanzhou 730020, China)
Abstract:The paper focus on Xens architecture, domain management and control, virtual machine communication mechanism, vcpu scheduling, virtual memory system,etc. and build a test environment for the conduct of the test and simulation.
Key words:Xen; Virtualization machine; Scheduling; Storage; Communication
Xen是一个开源的虚拟化管理软件,即VMM,起源于英国的剑桥大学计算机实验室,支持X86平台,目前正在向x86_64、IA64、PPC等平台移植。Xen通过硬件虚拟化抽象出多个虚拟机(VM)。原来运行于物理主机上的操作系统(OS)可以直接运行在Xen上(称为客户操作系统,即GOS),多个VM透明地复用物理主机资源且在逻辑上严格分离。见图1。
Xen在初始化完成后会运行一个指定的虚拟机,这一般称之为Domain 0.其它虚拟机统称为DomU。Domain 0 一般运行Linux kernel,直接在Xen hypervisor之上运行,可以访问物理I/O资源。其它DOM U通过与Domain 0的交互访问硬件资源。Domain 0通过网络后端驱动(Network Backend Driver)和块设备后端驱动(block backend driver)为其它Dom U提供网络和磁盘服务。所有半虚拟化(paravirtualized)的VM被称为半虚拟化域(DOM U PV Guests),而全虚拟化的VM称为硬件虚拟化域(DOM U HVM Guests),其上一般运行非开源OS,如Windows。
半虚拟化域内核不直接访问物理硬件,而硬件虚拟化域直接访问物理硬件。硬件虚拟化域通过Domain 0里的一个特殊守护进程,由其负责客户操作系统的网络和磁盘请求。硬件虚拟化域必须初始化为某类确定的机器,所以需要附加Xen固件以模拟bios。
3 Xen运行机制
3.1 Xen初始化
由于Xen是VM和硬件交互的中介,所以其运行在X86架构的特权层(Ring0)。Domain 0可以根据需要选择运行在Ring0或者Ring1层,其它域运行在Ring3层。设备加电后,Xen首先开始引导,然后Linux内核作为模块也被引导入内存。x86_32.S是从Grub进入Xen的入口文件,Grub根据镜像头信息获得入口地址,然后读入整个镜像,最后把控制权交给Xen。__startxen()函数中会从启动信息中获取物理内存分配情况,初始化内存。之后是分页初始化、IRQ中断初始化、调度程序初始化、异常处理程序表初始化、时间设置、安全机制设置等初始化工作。并且Xen会初始化一个空闲虚拟域(Idle Domain),当没有合适的虚拟域可以运行的时候,Xen会选择空闲虚拟域来运行,这类似于Linux中的init进程。当Xen初始化工作结束后,便开始设置Domain0的数据结构。然后Xen将控制权交给Domain0中的Linux,而自己进入idle_loop。Domain0得到控制权后,开始自己的引导过程。
3.2 域管理
Xen用vcpu结构来代表一个虚拟机,vcpu是物理处理器的虚拟。创建好一个VM之后,就会调用超级调用设置VM的各种状态参数。这个DOM U都运行在vcpu0上,其占有的vcpu个数可以由用户设定。在处理器的初始化阶段,默认为每个物理处理器分配一个空闲vcpu,这个空闲vcpu称为空闲域。
在Xen半虚拟化环境中,Xend是一个守护进程,是Xen的系统管理员。它使用Libxenctrl类库向Xen Hypervisor发送请求,并接收由Xm通过Xml RPC接口发送过来的请求。
Xen对各个域的管理见图3。
在Xen全虚拟化环境中,HVM客户的所有网络和磁盘请求都由Qemu-Dm守护进程处理,Qemu-dm在Domain 0中。Xenstored进程保存着客户注册信息,包括内存和事件通道信息等。Domain 0通过这些注册信息与其他Dom U建立设备通道并访问硬件资源。Libxenctrl库为Xend提供与Xen Hypervisor通信的能力。Domain 0中的privcmd驱动负责提交请求到xen hypervisor。HVM客户中的虚拟化固件是一个虚拟bios,以保证HVM客户在启动时具有兼容标准PC的软件环境。
4 Xen通信机制
事件通道是一种异步事件通知机制,Xen支持事件通道。Xen虚拟机中的每个中断都是一个事件,分别对应一条事件通道,中断时消息通过事件通道传递。事件通道主要完成中断和控制信息的传递。事件通道是Domain 0与DOM U之间交换信息的通道,这种信息交换一般采用共享内存方式。图4是PV客户机与Domain 0及Hypervisor层之间通信的示意。
5 Xen vcpu调度
Xen最常用的vcpu调度算法是Credit调度算法。Credit调度算法是Xen3.0版本以来的缺省的vcpu调度算法。Credit按照非抢占方式共享处理器资源。Credit算法的关键是credit值的确定。一般每个物理cpu都和一个vcpu队列相关联,这个队列中的每个vcpu都有一个credit值,某个vcpu个credit值代表了这个vcpu占用物理处理器的优先级,也是Xen选择vcpu的依据。在Credit算法中,将vcpu划分成两个队列,分别称为under队列和over队列。首先调度的最早入队的under队列中的vcpu,随着时间片轮转,被调度选中的vcpu占用物理处理器。一旦某个vcpu被调度,其credit值会减小,当变成负数时,该vcpu入over队列,将不再继续调度并重算credit值。为保证公平,over队列中的vcpu随着等待时间的增加会增大器credit值以利于再次被调度。
在Credit调度算法中,Xen管理系统中的所有物理CPU,这种集中管理的好处可以实现公平。Credit算法只是尽量保证公平地对vcpu实现调度。但对实时性的应用来说,这种调度算法的响应时间往往难以满足。
6 Xen虚拟化存储
Xen虚拟化平台可以使用诸如DAS、NAS、SAN和 iSCSI等各种物理存储设备上的存储空间。Xen虚拟化平台支持的存储方式如下:
直连式存储(Direct-Attached Storage, DAS ),如直接连接物理硬盘。
存域网(Storage Area Network ,SAN ),如FC SAN。
网络存储(Network Attached Storage, NAS),如CFS、GPFS等并行文件系统。
互联网小型计算机系统接口( Internet Small Computer System Interface, ISCSI)
基于逻辑卷(LogicalVolumn Manager,LVM);
虚拟磁盘镜像(Virtual Disk Image)。
上述各种存储方案中最简单的是磁盘文件镜像,这个磁盘文件镜像是通过宿主操作系统创建的,也是虚拟机安装的位置。其它的存储方案都是使用一个物理设备或逻辑设备作为一个后端存储设备,这个设备可以是一个逻辑卷、一个分区或者是SAN上的逻辑单元号(Logic Unit Numbers,即LUN)。本质上可以使用任何存储设备来完成Xen的虚拟化存储,由于SAN在性能上比较高效,所以这个方案现在用得比较广泛。但在实际的工程设计中,使用何种虚拟化存储技术决定于价格等多种因素。
7 结束语
本文在SUSE 11sp2平台上搭建了Xen试验环境,研究了Xen虚拟化平台的系统结构、运行机制、通信机制、vcpu调度和虚拟化存储等技术。研究结果可以作为虚拟化数据中心建设的基础。Xen作为开源的虚拟化平台,应用前景广阔,后续会进一步检验Xen虚拟化平台业务化能力。
参考文献:
[1] Xen Open Source Community. Xen usersmanual xen v3.3[EB/OL].http://bits.xensource.com/Xen/docs/user.pdf.
[2] Xen Open Source Community. Xen hypervisor 3.3.1 [EB/OL].http://www.xen.org.
[3] 时光,郭玉东,王晓睿,等.XEN中vcpu调度算法分析[J].计算机工程与设计,2010,31(18):4116-4119.
[4] 朱团结,艾丽蓉.基于共享内存的Xen虚拟机间通信的研究[J].计算机技术与发展,2011,21(7):5-12.
[5] 许艳军,姜进磊,王博,等.几种虚拟机镜像格式及其性能评测[J].计算机应用,2013,33(SI):22-25.
[6] 张萍,郭玉东.虚拟机外存管理技术研究分析[J].计算机工程与设计,2010,31(20):4418-4421.
[7] 薛海峰,卿斯汉,张焕国.XEN虚拟机分析[J].系统仿真学报,2007,19(23):5556-5558.