云计算之服务器虚拟化技术普及

一、Hypervisor架构分类

1.定义:计算虚拟化的软件层,通常叫Hypervisor,即虚拟化层,也叫虚拟机监控器(Virtual Machine MonitorVMM),负责Guest OS所有硬件资源调用

Hypervisor 是一 种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和 应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系 统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器

(Virtual Machine Monitor VMM)。Hypervisor 是所有虚拟化技术的核心。 非中断地支持多工作负载迁移的能力是 Hypervisor 的基本功能。当服务器 启动并执行 Hypervisor 时,它会给每一台虚拟机分配适量的内存、CPU、网 络和磁盘,并加载所有虚拟机的客户操

作系统。

2.架构分类

TYPE-I(裸金属架构):VMM直接运行在裸机上,使用和管理底层硬件资源,Guest OS对硬件资源访问都需通过VMM完成,VMM拥有硬件驱动程序

  • 裸机型 Hypervisor Bare-metal(业界有时会统称其为 Type 1 Hypervisor):最为常见,直接安装在硬件计算资源上,直接管理和调 用硬件资源,不需要底层操作系统,可以理解为 Hypervisor 被做成了 一个很薄的操作系统。操作系统安装并且运行在 Hypervisor 之上。主 流的虚拟化产品都使用裸机型

    的 Hypervisor,其中包括 VMware ESX Server、 Microsoft Hyper-V 和 Citrix XenServer,KVM。此种方案的性能处 于主机虚拟化和操作系统虚拟 化之间。

 
云计算之服务器虚拟化技术普及_第1张图片
TYPE-II (宿主型、主机型): VMM 之下还有一层宿主操作系统, Guest OS 对硬件资源访问必须经过宿主操作系统,带来额外开销,所有硬件驱动、内存管理、进程调度等由宿主操作系统执行。
 
 
云计算之服务器虚拟化技术普及_第2张图片
3.CPU虚拟化

CPU 虚拟化的目标是使虚拟机上的指令能被正常地执行,而且效率接近物理机。

CPU指令系统

云计算之服务器虚拟化技术普及_第3张图片

CPU指令系统

内核态:操作系统访问硬件(物理内存,IO设备等),关键数据结构,运行中断等;Ring 0

用户态:用户运行应用进程;Ring 3;

3.1 CPU全虚拟化

全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调 Guest 操作系统和 原始硬件,VMM 在 Guest 操作系统和裸硬件之间用于工作协调,一些受保护 指令必须由 Hypervisor(虚拟机管理程序)来捕获处理。

全虚拟化主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的 特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不 同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而 且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有

IBM CP/CMS、VirtualBox、KVM、VMware Workstation 和 VMware ESX (它在其 4.0 版,被改名为 VMware vSphere)。

Binary translation

原理:将虚拟机内核指令在运行时替换为一系列指令模拟虚拟机内核态指令的执行:如下图所示;

 

Ring 3

用户态(Application

Ring3

虚拟机用户态

Ring0

虚拟机内核态

Ring 2

 

Ring 1

 

Ring 0

内核态(OS  kernel

采用的技术类型:

主要采用优先级压缩(Ring Compression)和二进制代码翻译技术(Binary Translation)这两个技术。优先级压缩能让 VMM 和 Guest 运行在不同的特 权级下,对 X86 架构而言,就是 VMM 运行在特权级最高 Ring 0 下,Guest 的内核代码运行在 Ring 1 下,Guest 的应用代码运行在 Ring 3 下。通过这 种方式能让 VMM 截获一部分在 Guest 上执行的特权指令,并对其进行虚拟化。 但是有一些对虚拟化不友好的指令则需要二进制代码翻译来处理,它通过扫 描并修改 Guest 的二进制代码来将那些难以虚拟化的指令转化为支持虚拟化 的指令。

3.2 CPU半虚拟化

半虚拟化是另一种类似于全虚拟化技术,它使用 Hypervisor 分享存取底层 硬件,但是它的 Guest 操作系统集成了虚拟化方面代码。该方法无需重新编 译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。

它与完全虚拟化有一些类似,它也利用 Hypervisor 来实现对底层硬件的共 享访问,但是由于在 Hypervisor 上面运行的 Guest OS 已经集成与半虚 拟化有关的代码,使得 Guest OS 能够非常好地配合 Hyperivosr 来实现虚 拟化。通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物 理机,其最经典的产品就是 Xen,而且因为微软的 Hyper-V 所采用技术和 Xen 类似,所以也可以把 Hyper-V 归属于半虚拟化。

采用的技术类型

其通过修改 Guest OS 的代码,使其将那些和特权指令相关的操作都转换会 发给 VMM 的 Hypercall(超级调用),而且 Hypercall 支持 Batch(批处理) 和异步这两种优化方式,使得通过 Hypercall 能得到近似于物理机的速度,

 
3.3 CPU硬件辅助虚拟化

Intel/AMD 等硬件厂 商通过对部分全虚拟化和半 虚拟化使用到的软件技术进 行硬件化(具体将在下文详 述)来提高性能。硬件辅助

虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名 的例子莫过于 VMware Workstation,它虽然属于全虚拟化,但是在它的 6.0 版本中引入了硬件辅助虚拟化技术,比如 Intel 的 VT-x 和 AMD 的 AMD-V。 现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括 VirtualBox,KVM,VMware ESX 和 Xen。

采用的技术类型

主要有 Intel 的 VT-x 和 AMD 的 AMD-V 这两种技术,而且这两种技术在核心 思想上非常相似,都是通过引入新的指令和运行模式,来让 VMM 和 Guest OS 能分别运行在其合适的模式下。在实现方面,VT-X 支持两种处理器工作 方式:第一种称为 Root 模式(Operation),VMM 运行于此模式,用于处理 特殊指令,另一种称为 Non-Root 模式(Operation),Guest OS 运行于此模 式,当在 Non-Root 模式 Guest 执行到特殊指令的时候,系统会切换到运行 于 Root 模式 VMM,让 VMM 来处理这个特殊指令。

 

4.内存虚拟化
内存虚拟化的目标是能做好虚拟机内存空间之间的隔离,使每个虚拟机都认为自己拥有了整个内存地址,并且效率也能接近物理机。

4.1全虚拟化

影子页表 (Shadow Page Table),就是为每个 Guest 都维护一个“影子页 表”,在这个表中写入虚拟化之后的内存地址映射关系,而 Guest OS 的页表 则无需变动,最后,VMM 将影子页表交给 MMU(Memory Management Unit 内存管理单元) 进行地址转换。

4.2 半虚拟化

页表写入法,当 Guest OS 创建一个新的页表时,其会向 VMM 注册该页表, 之后在 Guest 运行的时候,VMM 将不断地管理和维护这个表,使 Guest 上面 的程序能直接访问到合适的地址。

4.3 硬件辅助虚拟化

EPT(Extended Page Table,扩展页表),EPT 通过使用硬件技术,使其能 在原有的页表的基础上,增加了一个 EPT 页表,通过这个页表能够将 Guest 的物理地址直接翻译为主机的物理地址,从而减低整个内存虚拟化所需的 Cost。

5.IO虚拟化
 

I/O 虚拟化的目标是不仅让虚拟机访问到它们所需要的 I/O 资源,而且要做 好它们之间的隔离工作,更重要的是,减轻由于虚拟化所带来的开销。

5.1 全虚拟化

通过模拟 I/O 设备(磁盘和网卡等)来实现虚拟化。对 Guest OS 而言,它 所能看到就是一组统一的 I/O 设备,同时 Guest OS 每次 I/O 操作都会陷入
到 VMM,让 VMM 来执行。这种方式,对 Guest 而言,非常透明,无需顾忌底 层硬件,比如 Guest 操作的是 SCSI 的设备,但实际物理机只有 SATA 的硬盘。

5.2 半虚拟化

通过前端(Front-End)/后端(Back-End)架构,将 Guest 的 I/O 请求通过 一个环状队列传递到特权域(Privileged Domain,也被称为 Domain-0)。 因为这种方式的相关细节较多,所以会在后文进行深入分析。

5.3 硬件辅助虚拟化

最具代表性莫过于 Intel 的 VT-d,AMD 的 IOMMU 和 PCI-SIG 的 IOV(I/O Virtulization)这三个技术。在这里介绍一下 VT-d,其核心思想就是让虚 拟机能直接使用物理设备,但是这会牵涉到 I/O 地址访问和 DMA 的问题,而 VT-d 通过采用 DMA 重映射(Remapping)和 I/O 页表来解决这两个问题,从而让虚拟机能直接访问物理设备。

 

你可能感兴趣的:(虚拟化)