文档库 最新最全的文档下载
当前位置:文档库 › 基于X86体系架构的系统虚拟机技术发展现状与应用

基于X86体系架构的系统虚拟机技术发展现状与应用

2006年7月

July 2006

—71—

计 算 机 工 程Computer Engineering 第 第13期

Vol 32卷.32 № 13

·软件技术与数据库· 文章编号:1000—3428(2006)13—0071—03

文献标识码:A

中图分类号:TP316

基于X86架构的系统虚拟机技术与应用

董耀祖1,2,周正伟1

(1. 上海交通大学微电子学院,上海 200030;2. 英特尔中国有限公司,上海 200336)

摘 要:介绍了基于X86的主流泛虚拟化(Paravirtualization)及完全虚拟化技术(Full-virtualization)尤其是芯片虚拟化技术的支持。描述了两个实现泛虚拟化技术的系统虚拟机Denali 及XEN ,阐述了完全虚拟化的发展现状,以及支持两种技术结合的解决方案,展望了虚拟机技术的发展前景及其应用。

关键词:虚拟机;虚拟化技术;泛虚拟化;完全虚拟化;服务器加固

X86-based System Virtual Machine Development and Application

DONG Yaozu 1,2, ZHOU Zhengwei 1

(1. School of Semiconductor, Shanghai Jiaotong University, Shanghai 200030; 2. Intel China Co. Ltd., Shanghai 200336)

【Abstract 】This article introduces the current status of X86 architecture based paravirtualization technology and full-virtualization technology,especially for hardware assistant virtualization technology, proposes two systemic virtual machines, Denali and XEN, which support the paravirtualization technology. Then it discusses the development of full-virtualization technology. In the meantime, it presents the solution scheme that supports these two technologies, and focuses on the trends of development of virtualization technology and its usage model. 【Key words 】Virtual machine; Virtualization; Paravirtualization; Full-virtualization; Server consolidation

1 概述

计算机的运行通常都离不开一个合适的操作系统,一个特定的指令集(实现它的处理器)、内存系统和I/O 系统的硬件平台。安装Linux 的机器无法直接运行Windows 的应用程序,同样装Windows 的机器无法直接运行Linux 的应用程序,另

外应用程序之间无法真正相互隔离使得一个应用程序的错误可能导致整个系统的崩溃。这些都促进了虚拟计算机(Virtual Machine)技术的发展。基于X86架构的商用电脑虚拟机产品的推出,如Vmware 、Virtual PC 等,使虚拟计算机技术得到了前所未有的发展。如图1(a)所示,虚拟化技术通过在现有平

台(机器)上添加一层薄的虚拟机监控(Virtual Machine Monitor, VMM)软件而实现对系统的虚拟化,如虚拟处理器、虚拟内存管理器(MMU)和虚拟I/O 系统等。从应用程序的角度看,程序运行在虚拟机上同运行在其对应的实体计算机上一样,即在某一特定的指令体系 (Instruction Set Architecture, ISA)和/或操作系统上,如图1(b)所示。

Host

VMM Guest (a)

(b)

图1 虚拟化软件及虚拟计算机的层次结构

根据应用程序,操作系统和硬件平台之间的关系和VMM 向客户机(guest)抽象的层次不同,Wisconsin-Madison 大学电

子和计算机工程系的James E. Smith 教授和IBM 公司的Ravi Nair 将基于指令体系接口(ISA)抽象的虚拟机称之为系统虚拟机(System VMs),而将基于应用程序接口(Application Binary Interface ,ABI)抽象的虚拟机称之为进程虚拟机(Process VMs)。在X86体系架构中,由于其固有的虚拟化技术漏洞,基于X86体系架构的系统虚拟机技术长期没有得到发展,直到最近几年才形成了井喷式的发展。 1.1 VMM 模型的分类

根据VMM 在整个物理系统中(或上一层虚拟机系统中)的实现位置及实现方法的不同,如图2所示系统虚拟机的模型可以分为:(1)监控模型(Hypervisor Model),即VMM 直接运行在裸机上(没有操作系统)。采用这种模型的VMM 运行在处理器的最高特权级,而所有的客户机则运行在较低的特权级以使VMM 可以截取所有客户OS 对系统资源的访问,从而实现对系统资源的虚拟化;(2)主机模型(Host-based Model),即VMM 运行在主机OS 上(Host OS)。这种方式的虚拟机也叫有宿主的虚拟机,它使得VMM 可以充分利用宿主OS 所提供的设备驱动及底层服务且不需要去除原来机器上已经安装的操作系统。但缺点是宿主OS 的介入可能会导致系统性能的损失;(3)混合模型(Hybrid Model)。混合模型集成二者的优点,既可以利用主机OS 的现成设备驱动实现虚拟机的设备模型,又可以利用监控模型的高效率。 1.2 虚拟化技术的分类

VMM 抽象虚拟机的ISA 可以等同于它运行的物理机器,也可以不完全相同。当虚拟的ISA 与物理的ISA 相同时,该虚拟机可以运行没有任何修改的原操作系统;而当二者不相

作者简介:董耀祖(1968—),男,硕士、工程师,主研方向:虚拟机和虚拟化技术;周正伟,博士、副教授

收稿日期:2005-08-18 E-mail :eddie.dong@https://www.wendangku.net/doc/3e7355374.html,

同时,客户机的操作系统就必须修改。根据VMM 抽象虚拟机架构的不同,或根据是否需要修改客户OS ,虚拟化技术又可以分为泛虚拟化(Paravirtualization)和完全虚拟化(Full-virtualization)两类。

监控模型

(Hypervisor Model )

主机模型

(Host-based Model )

混合模型(Hybrid Model )

Processor Mgt code Memory Mgt code

Device Driver Device Model

ULM: User Level Model LKM: Living Kernel Model

图2 VMM 实现的3种模型

完全虚拟化由于不需要修改客户OS ,具有很好的兼容性

和同时支持异种OS 或不同版本OS 的能力。泛虚拟化因为需要修改客户OS 以适应新的体系结构从而产生对现有OS 的兼容性问题,但同时它也可以按照需求变动客户机的体系结构,以此来提高虚拟机的总体性能。因此泛虚拟化技术通常具有比完全虚拟化技术更好的性能。

2 泛虚拟化技术的现状

由美国华盛顿大学计算机科学与工程系的Steven D. Gribble 领导的Denali 项目和英国剑桥大学计算机实验室的Ian Pratt 和Keir Fraster 领导的Xen 项目组都实现了X86架构上的泛虚拟化,并且具有比完全虚拟化更佳的性能。 2.1 Denali

Denali 是一个监控模型的系统虚拟机,用于提供互联网上服务之间的隔离(每一种服务运行在一个独立的虚拟机上)。Denali 可以同时支持数千个运行网络服务的虚拟机。

Denali 运行在基于X86指令集的机器上,客户处理器上的大多数虚拟指令可以直接在物理处理器上执行,但Denali 虚拟机ISA 并不完全等同于X86。Denali 具备以下特点:

(1)引入了部分纯虚拟的指令(virtual instructions)。这些指令在物理处理器中并不存在,而是通过未定义指令的异常处理程序在物理处理器上得到实现,如空闲指令(idle instruction)。

(2)修改了部分指令的语义(instructions’ semantics),将某些很少用到的指令语义改为未定义(但不能从物理处理器上去除)。

(3)添加了一些虚拟寄存器(virtual registers)用于实现VMM 和虚拟机之间的简单参数传递,这些寄存器通过映像在预先定义的虚拟机内存空间中而实现。

(4)虚拟I/O 设备通过简化的架构接口(simplified architectural interface)来降低VMM 和虚拟机之间的边界 切换。 2.2 XEN

XEN 是一个基于开源(Open Source)代码的混合模型系统虚拟机,设计支持多至约100个运行Xeno 操作系统的虚拟机。XEN 引入了管理接口(Hypercalls)和事件(Events)机制,同时引入客户机和VMM 之间的共享内存数据交换机制。 XEN 将客户机称之为虚拟域(Domain),其中虚拟域0为服务域,拥有绝大部分的I/O 资源(其他部分为监控程序所有)并向其他虚拟域提供设备模型以及控制平台。XEN 本身主要基于开源的Linux 核心代码移植,同时运行其上的XenoLinux 也从Linux 移植而来,意为支持XEN 架构的Linux 。同样支持XEN 架构的free BSD 和WindowsXP 也已经能够在XEN 上运行。所有原来的X86应用程序均不需任何修改就可以在XEN 上运行,如X86的Linux 应用程序可以在XenoLinux 上

运行;X86的WindowsXP 应用程序可以在XenoXP 上运行。

3 完全虚拟化技术

完全虚拟化技术因其不需要修改客户OS 而在一诞生就

受到客户的青睐,如早期基于全软件实现的VMware Workstation 和现在基于硬件虚拟化技术的解决方案。 3.1 VMware

1998年1月,Stanford 大学的Mendel Rosenblum 教授带领他的学生Edouard Bugnion 和Scott Devine ,带着多年来对虚拟化技术及虚拟机的研究成果成立了Vmware 公司。1999年Vmware 推出了业界第1个基于X86的完全虚拟化的系统虚拟机即VMware Workstation 。VMware Workstation 是一个基于主机模型的虚拟机,可以在Windows NT 、Windows 2000和Linux 上运行。2001年Vmware 推出了面向服务器市场的VMware ESX Server 和VMware GSX Server 。VMware ESX Server 首次提出了称之为“气球(balloon)”的内存管理技术以共享虚拟机之间的物理内存。

3.2 完全虚拟化技术的处理器硬件支持

2005年1月20日Intel 向外界公布了代号为Vanderpool 的虚拟化技术(简称VT)、AMD 也于3月30日向外公布了代号为Pacifica 的虚拟化技术,弥补了X86架构的虚拟化漏洞。 3.2.1 Intel Vanderpool 技术

VT 分VT-i(支持Itanium 架构)和VT-x(支持X86架构),本文集中于VT-x 。VT-x 引入了一种新的处理器操作,称为VMX(Virtual Machine Extensions)。VMX 操作可以在根状态(root)或非根状态(non-root)下执行,通常虚拟机监控程序(VMM)在根状态下执行而客户机软件则运行在非根状态。VMM 可以通过虚拟机入口(VM entries)使处理器进入VMX 非根状态,相反,通过虚拟机退出(VM exits)可以回到VMX 根状态。在VT 技术支持下,客户机可以运行在其原先希望运行的优先级(即优先级0)上而VMM 仍能捕获客户机对特定系统资源的访问。

VMX 操作新定义了虚拟机控制结构(Virtual Machine Control Structure, VMCS)。VMCS 中包含客户机状态(Guest-state area),主机状态(Host-state area),虚拟机执行控制域(VM-execution control fields),虚拟机退出控制域(VM-exit control fields),虚拟机入口控制域(VM-entry control fields)和虚拟机退出信息域(VM-exit information fields)。当处理器控制从VMX 根状态进入VMX 非根状态即虚拟机入口时,主机状态被保存在VMCS 中,同时客户机状态及虚拟机

退出控制策略从VMCS 中装入处理器。

相反当处理器从VMX 非根状态进入VMX 根状态即虚拟机退出时,客户机状态被保存在VMCS 中而主机状态则从VMCS 中装入处理器。VMM 可以分别设置客户机的VMCS 以实现不同的虚拟化策略。 3.2.2 AMD Pacifica 技术

Pacifica 引入了一种新的处理器模式——客户机模式(Guest Mode),和新的内存管理模式——分页实模式(Real

—72—

Mode with Paging)。Pacifica 采用一个称之为虚拟机控制块VMCB(Virtual Machine Control Block)的数据结构用于存放客户机的状态,同时也引入了一条新的指令VMRUN(Virtual Machine Run)来实现主机世界(Host World)和客户机世界(Guest World)之间的切换。在主机世界执行VMRUN 指令后系统进入客户机模式,所有的主机状态被存入到内存而客户机状态则从虚拟机控制块装入处理器从而进入客户机模式。当客户机执行导致虚拟机退出的动作或VMMCALL 指令时,客户机状态被存入虚拟机控制块而主机状态则从内存被装入到处理器从而进入主机模式。每个客户机的VMCB 可以设置确定哪些动作导致客户机退出到主机模式,包括哪些指令导致客户机退出到主机模式和哪些异常或中断事件导致客户机退出到主机模式。不同的客户机VMCB 可以有不同的设置以支持对不同客户机的定制。

4 泛虚拟化技术和完全虚拟化技术的结合

泛虚拟化技术因其比软件完全虚拟化技术更好的性能而受到关注,但因为需要对客户机操作系统进行修改而大大限制了它的应用场合,不过其良好的性能却吸引了众多的研究者。结合了泛虚拟化技术和硬件完全虚拟化技术的解决方案开始引起更多的重视。Xen 在今年4月的高峰会(Xen summit)上宣布了它未来支持VT-x 的3.0版本以实现对完全虚拟化的支持。在这一架构下,用户可以同时运行Xeno 操作系统和未经修改的传统操作系统,从而使它的应用领域扩大到了对目前处于统治地位的Windows 操作系统的支持,如图3所示。

VM0

VM1

VM2

VM3

5 虚拟机技术的应用

由于传统操作系统下各进程之间的互相影响,一个进程的异常往往引起其他进程的死锁甚至整个系统的崩溃就像今天我们经常看到的那样,这一问题在服务器领域尤其重要。利用虚拟机技术将不同的应用程序运行在不同的虚拟机上以实现应用之间的完全隔离,避免传统操作系统下各进程之间的互相影响成为实现服务器加固(Server Consolidation)的一

个重要方法。例如当一个虚拟机上的应用受到网络病毒的感

染而不能正常响应时,系统管理员只需要关闭该虚拟机而不会影响其它虚拟机上的应用,这就在最大程度上巩固了服务器。服务器加固也是X86虚拟机诞生时的一个主要应用。

服务器的安全性也是现在最热门的话题。在虚拟机技术的帮助下,一个虚拟机无法直接访问另一个虚拟机上的资源,就如同各自运行在不同的物理机器上,这使得一个应用的安全漏洞不会影响另一个应用。另外通过在VMM 层对它上面的虚拟机资源访问施加安全认证可以有效地实施整体安全认证,例如通过VMM 对属于特定用户群的虚拟机的网络访问实施限制等。

服务器灾难恢复(Disaster Recovery)是虚拟机技术的又一个快速发展的应用领域。常规的服务器备份通常需要应用程序的支持,例如对Oracle 数据库的备份必须靠Oracle 数据库本身提供的功能,而这对某些应用并不总是适合。采用虚拟机技术的虚拟机保存和恢复功能可以将整个虚拟机状态(含内存和IO 设备)保存下来,在一旦虚拟机遇到灾难性事件无法正常执行时,恢复以前保存的虚拟机使其重新执行成为可能,而不管应用本身是否有数据备份。虚拟机技术的服务器灾难恢复很像常用的服务器硬盘备份,但其系统恢复速度则远远快于硬盘备份,应用领域也远大于硬盘备份。

通过虚拟机技术将一台Workstation 配置成由若干台虚拟机组成的局域网,并在它上面开发测试各种网络应用无疑为网络爱好者和经费相对紧张的高校和研究机构提供了很好的实验环境。同时在诸如网吧、图书馆或实验室等公共平台采用虚拟机技术,可以使客户始终工作在同一台虚拟机上而不管他登录在那一台物理机器上。同时任何的中间工作结果不用主动存盘也可以自然保存在他的虚拟机中。

6 结论

虚拟机技术正日益受到IT 业界的重视,尤其是Vmware 已经被80%以上的全球财富100(Fortune 100)企业或组织所采纳。随着Microsoft 下一代操作系统(Longhorn)对虚拟化技术支持的到来,虚拟机必将得到全面的应用。及早地加入到虚拟机技术的开发和研究中来必将在未来的虚拟机普及时代占据极其有利的地位和商机。同时在一些与安全至关重要的部门或组织采用基于开源代码的虚拟机或自行研发的虚拟机技术对应用程序进行完全隔离,将极大地提高这些组织或部门的整体安全环境。

参考文献

1 Whitaker A, Shaw M, Gribble S. Denali: Lightweight Virtual Machines for Distributed and Networked Applications[C]. Proceed- ings of the USENIX Technical Conference, Monterey, CA, 2002-06.

2 Waldspurger C A. Memory Resource Management in VMware ESX Server[C]. Proceedings of the 5th Symposium on Operating Systems Design and Implementation, 2002-12.

3 Barham P, Dragovic B, Fraser K, et al. Xen and the Art of Virtualization[C]. Proceedings of the 19th ACM Symposium on Operating Systems Principles. Bolton Landing, NY , USA: Virtual Machine Monitors, 2003: 164-177.

4 Intel Corporation. Intel?Vanderpool Technology for IA-32 Processors (VT-x) Preliminary Specification[Z]. https://www.wendangku.net/doc/3e7355374.html,, 2005.

—73—

相关文档
相关文档 最新文档