服务器虚拟化技术按照虚拟对象来分, 可分为: CPU 虚拟化, 内存虚拟化, I/O 虚拟化; 按照虚拟化程度可分为: 全虚拟化, 半虚拟化, 硬件辅助虚拟化.
虚拟化技术的分类主要有服务器虚拟化, 存储虚拟化, 网络虚拟化, 应用虚拟化.
服务器虚拟化技术按照虚拟对象来分, 可分为: CPU 虚拟化, 内存虚拟化, I/O 虚拟化; 按照虚拟化程度可分为: 全虚拟化, 半虚拟化, 硬件辅助虚拟化.
将不同的虚拟化对象和程度组合, 可得出 9 种不同的服务器虚拟化技术.
首先详细介绍下服务器虚拟化之 CPU 虚拟化, 后续讲解中再详细介绍内存虚拟化及 I/O 虚拟化.
CPU 虚拟化
CPU 全虚拟化技术
主要采用优先级压缩技术 (Ring Compression) 和二进制代码翻译技术(BinaryTranslation). 优先级压缩技术让 VMM 和 Guest 运行在不同的特权级下. 对 x86 架构而言, 即 VMM 运行在最高特权级别 Ring 0 下, Guest OS 运行在 Ring 1 下, 用户应用运行在 Ring 3 下. 因此, Guest OS 的核心指令无法直接下达到计算机系统硬件执行, 而是需要经过 VMM 的捕获和模拟执行(部分难以虚拟化的指令需要通过 Binary Translation 技术进行转换).
CPU 半虚拟化技术
主要采用 Hypercall 技术. Guest OS 的部分代码被改变, 从而使 Guest OS 会将和特权指令相关的操作都转换为发给 VMM 的 Hypercall(超级调用), 由 VMM 继续进行处理. 而 Hypercall 支持的批处理和异步这两种优化方式, 使得通过 Hypercall 能得到近似于物理机的速度.
CPU 硬件辅助虚拟化技术
目前主要有 Intel 的 VT-x 和 AMD 的 AMD-V 这两种技术. 其核心思想都是通过引入新的指令和运行模式, 使 VMM 和 Guest OS 分别运行在不同模式 (ROOT 模式和非 ROOT 模式) 下, 且 Guest OS 运行在 Ring 0 下. 通常情况下, Guest OS 的核心指令可以直接下达到计算机系统硬件执行, 而不需要经过 VMM. 当 Guest OS 执行到特殊指令的时候, 系统会切换到 VMM, 让 VMM 来处理特殊指令.
CPU 的虚拟化技术可以单 CPU 模拟多 CPU 并行, 允许一个平台同时运行多个操作系统, 并且应用程序都可以在相互独立的空间内运行而互不影响, 从而显著提高计算机的工作效率.
GuestOS 负责第 2 级调度, 即线程或进程在 VCPU 上的调度(将核心线程映射到相应的虚拟 CPU 上).
VMM(Virtual Machine Monitor)负责第 1 级调度, 即 VCPU 在物理处理单元上的调度.
两级调度的调度策略和机制不存在依赖关系. VMM 负责物理处理器资源在各个虚拟机之间的分配与调度, 本质上即把各个虚拟机中的 VCPU 按照一定的策略和机制调度在物理处理单元上可以采用任意的策略来分配物理资源, 满足虚拟机的不同需求.
来源: http://biz.51cto.com/art/201811/586807.htm