SlideShare una empresa de Scribd logo
1 de 10
x86 平台三种不同的虚拟化之路

  从 1998 年 开 始 , VMware 创 造 性 的 将 虚 拟 化 引 入 x86 平 台 , 通 过 二 进 制 翻 译

(BT,Binary Translation )和直接执行的模式,让 x86 芯片可以同时运行不同的几种操作

系统,并且确保性能、稳定性和安全性。从那时起,数以万计的企业已经从虚拟化中获得了

极大的收益。但是,关于虚拟化的几种实现方式,引起了很多误解,为此,希望通过此文澄

清几种虚拟化道路的优缺点,以及 VMware 公司对几种虚拟化之路的支持情况。 1 总结了
                                       图

x86 虚拟化技术的进展情况,从 VMware 的 BT 最近的内核部分虚拟化和硬件辅助虚拟化。




  1. x86 虚拟化概览

   所谓 x86 服务器的虚拟化,就是在硬件和操作系统之间引入了虚拟化层,如图 2 所示。

虚拟化层允许多个操作系统实例同时运行在一台物理服务器上,动态分区和共享所有可用

的物理资源,包括:CPU、内存、存储和 I/O 设备。
图 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 进行
了硬件抽取,负责运行传统的操作系统。每个 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. 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. BT 实现 x86 架构虚拟化

  BT 和直接执行技术的结合实现了全虚拟化,此时客户操作系统可以通过虚拟化层从物

理硬件上完全抽取出来,客户操作系统感知不到是否发生了虚拟化,完全不需要进行修改。

全虚拟化是迄今为止唯一不需要硬件或操作系统协助来进行敏感和特权指令虚拟化的技术

Hypervisor(管理程序)可以翻译所有的操作系统特权指令,并保存在缓存里备用,而用户

级的指令完全可以全速直接执行。

  全虚拟化提供了最好的虚拟机隔离和安全性,简化了客户操作系统迁移和移植能力 。

VMware ESX Server 就是通过全虚拟化技术来实现的最好案例。

  b. 技术 2 – 半虚拟化

  该文中我们将 Para-Virtualization 翻译为半虚拟化。Para 是来自希腊语的英语前缀,意指

“和”、“在边上”、“一道”等。因此,“半虚拟化”指得是客户操作系统和 hypervisor 之间的通讯如

何提高性能和有效性。如图 6 所示,半虚拟化需要修改操作系统内核,替换掉不能虚拟化的

指令,通过超级调用(hypercall )直接和底层的虚拟化层 hypervisor 来通讯,hypervisor 同

时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。
图 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 来支持半虚拟化技术的进步,更进
一步的细节,我们将在后面进行探讨。

   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. 内存虚拟化
除了 CPU 虚拟化,下一个关键是内存虚拟化,通过内存虚拟化共享物理系统内存,动

态分配给虚拟机。虚拟机的内存虚拟化很象现在的操作系统支持的虚拟内存方式,应用程序

看到邻近的内存地址空间,这个地址空间无需和下面的物理机器内存直接对应,操作系统

保持着虚拟页到物理页的映射。现在所有的 x86 CPU 都包括了一个称为内存管理的模块

MMU ( Memory Management Unit ) 和 TLB(Translation Lookaside Buffer) , 通 过 MMU 和

TLB 来优化虚拟内存的性能。




   图 8. 内存虚拟化

   为了在一台机器上运行多个虚拟机,需要增加一个新的内存虚拟化层,也就是说,必

须虚拟 MMU 来支持客户操作系统。客户操作系统继续控制虚拟地址到客户内存物理地址的

映射,但是客户操作系统不能直接访问实际机器内存。VMM 负责映射客户物理内存到实际

机器内存,它通过影子页表来加速映射。如图 8 所示,VMM 使用 TLB 硬件来映射虚拟内存

直接到机器内存,从而避免了每次访问进行两次翻译。当客户操作系统更改了虚拟内存到物

理内存的映射表, VMM 也会更新影子页表来启动直接查询。 MMU 虚拟化引入了虚拟化损

耗,第二代的硬件辅助虚拟化将支持内存的虚拟化辅助,从而大大降低因此而带来的虚拟

化损耗,让内存虚拟化更高效。

   4. 设备和 I/O 虚拟化

   最后一个模块是设备和 I/O 虚拟化,也就是如何管理和路由物理设备和虚拟设备之间

的 I/O 请求。
图 9. 设备和 I/O 虚拟化

  基于软件的 I/O 虚拟化和管理为设备管理带来了新的特性和功能,让设备的管理更容

易。就拿网络为例,通过虚拟网卡和交换机可以在一台物理机上不同虚拟机之间建立虚拟网

络,而这不会在物理网络上产生任何的流量;网卡 teaming 允许多个物理网卡绑定成一个

虚拟机网卡,提供了很好的容错能力,同时保持了同一 MAC 地址。I/O 虚拟化的关键是保

持虚拟化优势的同时,尽量降低虚拟化给 CPU 造成的负担。

  Hypervisor 虚拟化物理硬件,为每台虚拟机提供一套标准的虚拟设备,如图 9 所示。这

些虚拟设备高效模拟常见的物理硬件,将虚拟机的请求发送到物理硬件。该硬件标准化的过

程也让虚拟机标准化,让虚拟机更容易在各种平台上自由移动,而无需关心下面实际的物

理硬件类型。

  5. 目前几种 x86 虚拟化技术对比总结

  VMware 目前利用了以上三种的虚拟化技术,或者用在生产上,或者用在开发实验室 ,

在性能和功能之间找到平衡。下表是三种虚拟路线的总结比较,可以看到它们的优劣,从而

可以取长补短,对三种虚拟化路线进行科学选择。

              利 用 BT 的 全 虚      硬件辅助虚拟化       操作系统协助 / 半

           拟化                               虚拟化
   实现技术       BT 和直接执行          遇到特权指令转到      Hypercall

                             root 模式执行
   客户操作       无需修改客户操           无需修改客户操作系     客户操作系统需
系统修改 / 兼容作系统,最佳兼容性 统,最佳兼容性                                   要 修 改 来 支 持

性                                                            hypercall,因此它不能

                                                             运行在物理硬件 本身

                                                             或其他的 hypervisor ,

                                                             兼容性差,不支持

                                                             Windows
    性能             好                     一般                      某些情况下好

                                     目前很多情况下比 BT 性

                                     能差,随着时间推移会逐

                                     步改善
    应用厂商           VMware/Microsof       VMware/Microsoft/       VMware/Xen

              t/                     Parallels/Xen

              Parallels
    客户操作           是                     是                       XenLinux 只 能 运

系 统 独 立 于                                                    行在 Xen 的 hypervisor

hypervisor?                                                  上

                                                             VMI-Linux 可 以 支 持

                                                             各种 hypervisor

Más contenido relacionado

La actualidad más candente

Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
sprdd
 
Introduction to storage
Introduction to storageIntroduction to storage
Introduction to storage
sagaroceanic11
 
Chapter 9: SCSI Drives and File Systems
Chapter 9: SCSI Drives and File SystemsChapter 9: SCSI Drives and File Systems
Chapter 9: SCSI Drives and File Systems
askme
 

La actualidad más candente (20)

Software-Defined Storage (SDS)
Software-Defined Storage (SDS)Software-Defined Storage (SDS)
Software-Defined Storage (SDS)
 
Red hat enterprise linux 7 (rhel 7)
Red hat enterprise linux 7 (rhel 7)Red hat enterprise linux 7 (rhel 7)
Red hat enterprise linux 7 (rhel 7)
 
“Zen 3”: AMD 2nd Generation 7nm x86-64 Microprocessor Core
“Zen 3”: AMD 2nd Generation 7nm x86-64 Microprocessor Core“Zen 3”: AMD 2nd Generation 7nm x86-64 Microprocessor Core
“Zen 3”: AMD 2nd Generation 7nm x86-64 Microprocessor Core
 
New Accelerated Compute Infrastructure Solutions from Supermicro
New Accelerated Compute Infrastructure Solutions from SupermicroNew Accelerated Compute Infrastructure Solutions from Supermicro
New Accelerated Compute Infrastructure Solutions from Supermicro
 
Linux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sLinux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA's
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
 
Performance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingPerformance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshooting
 
Introduction to storage
Introduction to storageIntroduction to storage
Introduction to storage
 
Introduction to Linux Kernel
Introduction to Linux KernelIntroduction to Linux Kernel
Introduction to Linux Kernel
 
Windows と標準的なハードウェアで構築するストレージ サーバー
Windows と標準的なハードウェアで構築するストレージ サーバーWindows と標準的なハードウェアで構築するストレージ サーバー
Windows と標準的なハードウェアで構築するストレージ サーバー
 
Deploying a 3 tier application using docker
Deploying a 3 tier application using dockerDeploying a 3 tier application using docker
Deploying a 3 tier application using docker
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
Chapter 9: SCSI Drives and File Systems
Chapter 9: SCSI Drives and File SystemsChapter 9: SCSI Drives and File Systems
Chapter 9: SCSI Drives and File Systems
 
Virtualization Architecture & KVM
Virtualization Architecture & KVMVirtualization Architecture & KVM
Virtualization Architecture & KVM
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
 
Db2 analytics accelerator on ibm integrated analytics system technical over...
Db2 analytics accelerator on ibm integrated analytics system   technical over...Db2 analytics accelerator on ibm integrated analytics system   technical over...
Db2 analytics accelerator on ibm integrated analytics system technical over...
 
Hyperconverged Infrastructure, It's the Future
Hyperconverged Infrastructure, It's the FutureHyperconverged Infrastructure, It's the Future
Hyperconverged Infrastructure, It's the Future
 
Presentation aix performance updates & issues
Presentation   aix performance updates & issuesPresentation   aix performance updates & issues
Presentation aix performance updates & issues
 
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs community
 

Similar a X86平台三种不同的虚拟化之路

关于服务器虚拟化的测试汇报
关于服务器虚拟化的测试汇报关于服务器虚拟化的测试汇报
关于服务器虚拟化的测试汇报
博 孟
 
虚拟化介绍201012
虚拟化介绍201012虚拟化介绍201012
虚拟化介绍201012
ITband
 
方建国 -V mware-ha实战1
方建国 -V mware-ha实战1方建国 -V mware-ha实战1
方建国 -V mware-ha实战1
landece
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric
John Chang
 
Leverage virtualization in software test
Leverage virtualization in software testLeverage virtualization in software test
Leverage virtualization in software test
drewz lin
 
嘉陽高中V mware 虛擬化 專案
嘉陽高中V mware 虛擬化 專案嘉陽高中V mware 虛擬化 專案
嘉陽高中V mware 虛擬化 專案
nike800m
 

Similar a X86平台三种不同的虚拟化之路 (20)

Ezilla
EzillaEzilla
Ezilla
 
Hyper V Final
Hyper  V FinalHyper  V Final
Hyper V Final
 
关于服务器虚拟化的测试汇报
关于服务器虚拟化的测试汇报关于服务器虚拟化的测试汇报
关于服务器虚拟化的测试汇报
 
Linux Virtualization Goes Mobile
Linux Virtualization Goes MobileLinux Virtualization Goes Mobile
Linux Virtualization Goes Mobile
 
虚拟化介绍201012
虚拟化介绍201012虚拟化介绍201012
虚拟化介绍201012
 
方建国 -V mware-ha实战1
方建国 -V mware-ha实战1方建国 -V mware-ha实战1
方建国 -V mware-ha实战1
 
三通it学院-KVM虚拟化技术
三通it学院-KVM虚拟化技术三通it学院-KVM虚拟化技术
三通it学院-KVM虚拟化技术
 
賽門鐵克 VMware 完整解決方案
賽門鐵克 VMware 完整解決方案賽門鐵克 VMware 完整解決方案
賽門鐵克 VMware 完整解決方案
 
BAS010_虛擬化基礎_v190325-Draft
BAS010_虛擬化基礎_v190325-DraftBAS010_虛擬化基礎_v190325-Draft
BAS010_虛擬化基礎_v190325-Draft
 
Wang Chao
Wang ChaoWang Chao
Wang Chao
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
Acronis iomega文件备份和虚拟机数据保护方案
Acronis iomega文件备份和虚拟机数据保护方案Acronis iomega文件备份和虚拟机数据保护方案
Acronis iomega文件备份和虚拟机数据保护方案
 
2. hadoop
2. hadoop2. hadoop
2. hadoop
 
BAS010_虛擬化基礎_v190330
BAS010_虛擬化基礎_v190330BAS010_虛擬化基礎_v190330
BAS010_虛擬化基礎_v190330
 
BAS010_虛擬化基礎_v190330 (View online)
BAS010_虛擬化基礎_v190330 (View online)BAS010_虛擬化基礎_v190330 (View online)
BAS010_虛擬化基礎_v190330 (View online)
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric
 
云计算与开源 刘黎明 世纪互联
云计算与开源  刘黎明  世纪互联云计算与开源  刘黎明  世纪互联
云计算与开源 刘黎明 世纪互联
 
从网格计算到云计算
从网格计算到云计算从网格计算到云计算
从网格计算到云计算
 
Leverage virtualization in software test
Leverage virtualization in software testLeverage virtualization in software test
Leverage virtualization in software test
 
嘉陽高中V mware 虛擬化 專案
嘉陽高中V mware 虛擬化 專案嘉陽高中V mware 虛擬化 專案
嘉陽高中V mware 虛擬化 專案
 

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. 内存虚拟化
  • 8. 除了 CPU 虚拟化,下一个关键是内存虚拟化,通过内存虚拟化共享物理系统内存,动 态分配给虚拟机。虚拟机的内存虚拟化很象现在的操作系统支持的虚拟内存方式,应用程序 看到邻近的内存地址空间,这个地址空间无需和下面的物理机器内存直接对应,操作系统 保持着虚拟页到物理页的映射。现在所有的 x86 CPU 都包括了一个称为内存管理的模块 MMU ( Memory Management Unit ) 和 TLB(Translation Lookaside Buffer) , 通 过 MMU 和 TLB 来优化虚拟内存的性能。 图 8. 内存虚拟化 为了在一台机器上运行多个虚拟机,需要增加一个新的内存虚拟化层,也就是说,必 须虚拟 MMU 来支持客户操作系统。客户操作系统继续控制虚拟地址到客户内存物理地址的 映射,但是客户操作系统不能直接访问实际机器内存。VMM 负责映射客户物理内存到实际 机器内存,它通过影子页表来加速映射。如图 8 所示,VMM 使用 TLB 硬件来映射虚拟内存 直接到机器内存,从而避免了每次访问进行两次翻译。当客户操作系统更改了虚拟内存到物 理内存的映射表, VMM 也会更新影子页表来启动直接查询。 MMU 虚拟化引入了虚拟化损 耗,第二代的硬件辅助虚拟化将支持内存的虚拟化辅助,从而大大降低因此而带来的虚拟 化损耗,让内存虚拟化更高效。 4. 设备和 I/O 虚拟化 最后一个模块是设备和 I/O 虚拟化,也就是如何管理和路由物理设备和虚拟设备之间 的 I/O 请求。
  • 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