RHEL 8 中 KVM 虚拟化技术全解析
1. 虚拟化技术概述
虚拟化技术允许在单个主机操作系统内运行多个客户操作系统。常见的虚拟化方式有基于客户操作系统的虚拟化和基于管理程序(Hypervisor)的虚拟化。
1.1 基于客户操作系统的虚拟化
在这种虚拟化方式中,虚拟化应用会进行二进制重写(Binary Rewriting),即扫描执行中的客户系统指令流,用安全的模拟指令替换特权指令,让客户系统以为自己直接运行在系统硬件上,而非应用程序内的虚拟机中。不过,客户操作系统和底层主机硬件间存在多层抽象,不利于虚拟机性能提升,但它的优点是无需对主机或客户操作系统做更改,也不需要特殊的 CPU 硬件虚拟化支持。
1.2 基于管理程序的虚拟化
管理程序负责为虚拟机处理资源和内存分配,还为高级管理和监控工具提供接口,可分为 Type - 1 和 Type - 2 两类。
-Type - 2 管理程序:也叫托管型管理程序,作为软件应用安装在主机操作系统之上,通过协调客户虚拟机对 CPU、内存和网络等资源的访问来提供虚拟化功能。
-Type - 1 管理程序:也称为裸金属或原生管理程序,直接在主机系统硬件的 Ring 0 层运行。但大多数操作系统内核设计为在 Ring 0 层运行,为解决此问题,近年来有以下几种解决方案:
-半虚拟化(Paravirtualization):修改客户操作系统内核以在管理程序上运行,将只能在 Ring 0 层执行的特权操作替换为对管理程序的调用(Hypercall