Más contenido relacionado
La actualidad más candente (20)
Similar a X86平台三种不同的虚拟化之路 (20)
X86平台三种不同的虚拟化之路
- 1. x86 平台三种不同的虚拟化之路
从 1998 年 开 始 , VMware 创 造 性 的 将 虚 拟 化 引 入 x86 平 台 , 通 过 二 进 制 翻 译
(BT,Binary Translation )和直接执行的模式,让 x86 芯片可以同时运行不同的几种操作
系统,并且确保性能、稳定性和安全性。从那时起,数以万计的企业已经从虚拟化中获得了
极大的收益。但是,关于虚拟化的几种实现方式,引起了很多误解,为此,希望通过此文澄
清几种虚拟化道路的优缺点,以及 VMware 公司对几种虚拟化之路的支持情况。 1 总结了
图
x86 虚拟化技术的进展情况,从 VMware 的 BT 最近的内核部分虚拟化和硬件辅助虚拟化。
1. x86 虚拟化概览
所谓 x86 服务器的虚拟化,就是在硬件和操作系统之间引入了虚拟化层,如图 2 所示。
虚拟化层允许多个操作系统实例同时运行在一台物理服务器上,动态分区和共享所有可用
的物理资源,包括:CPU、内存、存储和 I/O 设备。
- 2. 图 2. x86 架构上的虚拟化层
近年来,随着服务器和台式机的计算能力急剧增加,虚拟化技术应用广泛普及,很多
用户已经在开发/测试、服务器整合、数据中心优化和业务连续性方面证实了虚拟化的效用。
虚拟架构已经可以将操作系统和应用从硬件上分离出来,打包成独立的、可移动的虚拟机,
从来带来了极大的灵活性。例如:现在可以通过虚拟架构,让服务器 7x24x365 运行,避免
因为备份或服务器维护而带来的停机。已经有用户在 VMware 平台上运行 3 年而没有发生任
何的停机事件。
对于 x86 虚拟化,有两种常见的架构:寄居架构和裸金属架构。寄居架构将虚拟化层运
行在操作系统之上,当作一个应用来运行,对硬件的支持很广泛。相对的,裸金属架构直接
将虚拟化层运行在 x86 的硬件系统上,可以直接访问硬件资源,无需通过操作系统来实现
硬件访问,因此效率更高。VMware Player、ACE、Workstation 和 VMware Server 都是基于寄
居架构而实现的,而 VMware ESX Server 是业界第一个裸金属架构的虚拟化产品,目前已
经发布了第四代产品。ESX Server 需要运行在 VMware 认证的硬件平台上,可以提供出色的
性能,完全可以满足大型数据中心对性能的要求。
为了更好的理解 x86 平台虚拟化,在此简要介绍一下部件虚拟化的背景。虚拟化层是运
行在虚拟机监控器(VMM,Virtual Machine Monitor)上面、负责管理所有虚拟机的软件。如
图 3 所示,虚拟化层就是 hypervisor(管理程序)直接运行在硬件上,因此, hypervisor 的
功能极大地取决于虚拟化架构和实现。运行在 hypervisor(管理程序)上的每个 VMM 进行
- 3. 了硬件抽取,负责运行传统的操作系统。每个 VMM 必须进行分区和 CPU、内存和 I/O 设备
的共享,从而实现系统的虚拟化。
图 3. Hypervisor 通过 VMM 管理虚拟机
2. CPU 虚拟化
根据原来的设计, x86 上的操作系统需要直接运行在裸机上,因此默认拥有和控制所
有的硬件。如图 4 所示,x86 架构提供了四种特权级别 Ring 0、 、 和 3,通过这四种级别来
1 2
控制和管理对硬件的访问。通常,用户级的应用一般运行在 Ring 3 级别,操作系统需要直
接访问内存和硬件,需要在 Ring 0 执行它的特权指令。为了虚拟 x86 架构,需要在操作系统
下面运行虚拟化层,由虚拟化层来创建和管理虚拟机,进行共享资源分配。而有些敏感指令
不能很好的进行虚拟化,它们在 Ring 0 以外级别执行时,会出现不同的结果。如何在运行
时捕获和翻译这些敏感指令成为 x86 虚拟化的一大挑战,使得 x86 架构虚拟化最初是不可
能的。
- 4. 图 4. x86 架构虚拟化前的特权级别
VMware 在 1998 年成功克服了这个难点,开发出了 BT 技术,从而将操作系统移到
Ring 3 的用户模式运行,而 VMM 运行在 Ring 0 级别实现隔离和性能提升。尽管 VMware 通
过 BT 技术实现的全虚拟化已经成为默认的业界标准,超过 2 万家的 VMware 用户都在这种
技术的支持下可靠、高效运行,但整个业界还没有统一定义的行业标准,因此每家公司都在
自由发挥,来试图解决这个技术难点,不同的方案都有自己的优势和劣势。
到今天为止,有三种典型的技术来解决 x86 虚拟化的难题:
通过 BT 实现的全虚拟化
操作系统帮助下的虚拟化,也叫半虚拟化
硬件帮助的虚拟化
a. 技术 1 – 通过 BT 实现的全虚拟化
VMware 可以通过 BT 和直接执行技术的结合来实现任何 x86 操作系统的虚拟化。如图 5
所示,BT 可以翻译核心指令来代替那些不能虚拟化的指令,通过翻译后的指令直接访问虚
拟硬件。同时,所有用户级指令还是可以直接在 CPU 上执行来确保虚拟化的性能。每个
VMM 为每个虚拟机提供完整的硬件支持服务,包括虚拟 BIOS、虚拟设备和虚拟内存管理。
- 5. 图 5. BT 实现 x86 架构虚拟化
BT 和直接执行技术的结合实现了全虚拟化,此时客户操作系统可以通过虚拟化层从物
理硬件上完全抽取出来,客户操作系统感知不到是否发生了虚拟化,完全不需要进行修改。
全虚拟化是迄今为止唯一不需要硬件或操作系统协助来进行敏感和特权指令虚拟化的技术
Hypervisor(管理程序)可以翻译所有的操作系统特权指令,并保存在缓存里备用,而用户
级的指令完全可以全速直接执行。
全虚拟化提供了最好的虚拟机隔离和安全性,简化了客户操作系统迁移和移植能力 。
VMware ESX Server 就是通过全虚拟化技术来实现的最好案例。
b. 技术 2 – 半虚拟化
该文中我们将 Para-Virtualization 翻译为半虚拟化。Para 是来自希腊语的英语前缀,意指
“和”、“在边上”、“一道”等。因此,“半虚拟化”指得是客户操作系统和 hypervisor 之间的通讯如
何提高性能和有效性。如图 6 所示,半虚拟化需要修改操作系统内核,替换掉不能虚拟化的
指令,通过超级调用(hypercall )直接和底层的虚拟化层 hypervisor 来通讯,hypervisor 同
时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。
- 6. 图 6. 操作系统协助的 x86 架构虚拟化
半虚拟化和全虚拟化不同,全虚拟化不需要修改上面的操作系统,敏感的操作系统指
令直接通过 BT 进行处理。半虚拟化的价值在于降低了虚拟化的损耗,但是半虚拟化的性能
优势很大程度上依赖于运行的负载。由于半虚拟化不支持未修改的操作系统 ( 例如:
Windows 2000/XP),它的兼容性和可移植性差。在实际的生产环境中,半虚拟化也会导致操
作系统支持和维护的艰难,因为半虚拟化往往要深入修改操作系统内核。开源的 Xen 项目
是半虚拟化的代表,它可以通过修改 Linux 的内核来实现 CPU 和内存的虚拟化,通过定制
的操作系统驱动来实现 I/O 的虚拟化。
为了实现全虚拟化,需要构建复杂的 BT 技术,这往往比直接修改客户操作系统来启
用半虚拟化更艰难。 VMware 实际上已经在产品中使用了半虚拟化的一些技术,来构建
VMware Tools 和优化虚拟设备驱动。VMware tools 服务为 VMM Hypervisor 提供了 一个后
门服务,用来同步时间、记录日志和客户操作系统关机等。Vmxnet 是半虚拟化的 I/O 设备驱
动程序,它可以和 hypervisor 共享数据结构。这些半虚拟化技术的应用改善了设备的兼容能
力,提高了数据吞吐速率,降低了 CPU 利用率。需要重点澄清的是:VMware tools 服务和
vmxnet 设备驱动并不是 CPU 半虚拟化解决方案,它们紧紧对客户操作系统进行了微小的、
非关键的修改,并不需要修改客户操作系统内核。
面向未来,VMware 也在帮助开发虚拟化版的 Linux 来支持半虚拟化技术的进步,更进
- 7. 一步的细节,我们将在后面进行探讨。
c. 技术 3 – 硬件辅助虚拟化
硬件厂商面对虚拟化都相当热情,他们都投入了大量的精力来开发新的特性来简化虚
拟化技术的应用。第一代的虚拟化增强包括 Intel Virtualization Technology (VT-x)和 AMD 的
AMD-V ,这两种技术都为 CPU 增加了新的执行模式 root 模式,可以让 VMM 运行在 root
模式下,而 root 模式位于 Ring 0 的下面。如图 7 所示,特权和敏感指令自动在 hypervisor 上
执行,从而无需 BT 或半虚拟化技术。客户操作系统的状态保存在 VT-x ( Virtual Machine
Control Structure ,虚拟机控制结构)中或 AMD-v(Virtual Machine Control Block ,虚拟机控
制块)。支持 Intel VT 和 AMD-V 的 CPU 从 2006 年开始推向市场,因此只有新的系统包含了
这些硬件辅助的虚拟化功能。
图 7.硬件辅助的 x86 架构虚拟化
由于 hypervisor 到客户操作系统转换的损耗和严格的编程模式要求,第一代的硬件辅
助虚拟化性能并不理想, VMware 的 BT 技术很多时候性能更好。第一代硬件辅助虚拟化为
编程留了很小的空间,降低了软件的灵活性,增加了 hypervisor 到客户操作系统转换的损
耗,正式基于此, VMware 仅仅在很少的情况下利用了第一代的硬件辅助虚拟化,比如,
在 Intel 平台上支持 64 位操作系统的时候,VMware 使用了 Intel 的 VT-x。
3. 内存虚拟化
- 9. 图 9. 设备和 I/O 虚拟化
基于软件的 I/O 虚拟化和管理为设备管理带来了新的特性和功能,让设备的管理更容
易。就拿网络为例,通过虚拟网卡和交换机可以在一台物理机上不同虚拟机之间建立虚拟网
络,而这不会在物理网络上产生任何的流量;网卡 teaming 允许多个物理网卡绑定成一个
虚拟机网卡,提供了很好的容错能力,同时保持了同一 MAC 地址。I/O 虚拟化的关键是保
持虚拟化优势的同时,尽量降低虚拟化给 CPU 造成的负担。
Hypervisor 虚拟化物理硬件,为每台虚拟机提供一套标准的虚拟设备,如图 9 所示。这
些虚拟设备高效模拟常见的物理硬件,将虚拟机的请求发送到物理硬件。该硬件标准化的过
程也让虚拟机标准化,让虚拟机更容易在各种平台上自由移动,而无需关心下面实际的物
理硬件类型。
5. 目前几种 x86 虚拟化技术对比总结
VMware 目前利用了以上三种的虚拟化技术,或者用在生产上,或者用在开发实验室 ,
在性能和功能之间找到平衡。下表是三种虚拟路线的总结比较,可以看到它们的优劣,从而
可以取长补短,对三种虚拟化路线进行科学选择。
利 用 BT 的 全 虚 硬件辅助虚拟化 操作系统协助 / 半
拟化 虚拟化
实现技术 BT 和直接执行 遇到特权指令转到 Hypercall
root 模式执行
客户操作 无需修改客户操 无需修改客户操作系 客户操作系统需
- 10. 系统修改 / 兼容作系统,最佳兼容性 统,最佳兼容性 要 修 改 来 支 持
性 hypercall,因此它不能
运行在物理硬件 本身
或其他的 hypervisor ,
兼容性差,不支持
Windows
性能 好 一般 某些情况下好
目前很多情况下比 BT 性
能差,随着时间推移会逐
步改善
应用厂商 VMware/Microsof VMware/Microsoft/ VMware/Xen
t/ Parallels/Xen
Parallels
客户操作 是 是 XenLinux 只 能 运
系 统 独 立 于 行在 Xen 的 hypervisor
hypervisor? 上
VMI-Linux 可 以 支 持
各种 hypervisor