四、虚拟化技术

文章目录

  • 虚拟化技术介绍
    • 一、虚拟化基础概念
      • [1. 什么是虚拟化](#1. 什么是虚拟化)
      • [2. 重要概念(必背)](#2. 重要概念(必背))
      • [3. 虚拟化发展史关键节点](#3. 虚拟化发展史关键节点)
      • [4. 虚拟化三种类型(易考对比)](#4. 虚拟化三种类型(易考对比))
      • [5. 虚拟化四大特点](#5. 虚拟化四大特点)
    • [二、CPU 虚拟化](#二、CPU 虚拟化)
      • [1. 需要解决的两个问题](#1. 需要解决的两个问题)
      • [2. x86 特权级 Ring](#2. x86 特权级 Ring)
      • [3. CPU 与 vCPU 对应关系](#3. CPU 与 vCPU 对应关系)
    • 三、内存虚拟化
      • [1. 需要解决的两个问题](#1. 需要解决的两个问题)
      • [2. 核心:三级地址转换(必背)](#2. 核心:三级地址转换(必背))
      • [3. MMU](#3. MMU)
      • [4. 影子页表 vs EPT](#4. 影子页表 vs EPT)
      • [5. 透明大页 THP](#5. 透明大页 THP)
    • [四、I/O 虚拟化](#四、I/O 虚拟化)
      • [1. 需要解决的两个问题](#1. 需要解决的两个问题)
      • [2. QEMU/KVM 三类 I/O 设备(重点对比)](#2. QEMU/KVM 三类 I/O 设备(重点对比))
    • [五、Xen 虚拟化](#五、Xen 虚拟化)
    • [六、KVM 虚拟化(重点)](#六、KVM 虚拟化(重点))
      • [1. KVM 简介](#1. KVM 简介)
      • [2. 1型虚拟化 vs 2型虚拟化(补充)](#2. 1型虚拟化 vs 2型虚拟化(补充))
    • [七、KVM 与 QEMU(补充)](#七、KVM 与 QEMU(补充))
      • [1. 分工(必背)](#1. 分工(必背))
      • [2. Xen 与 KVM 架构对比](#2. Xen 与 KVM 架构对比)
      • [3. KVM 三种运行模式](#3. KVM 三种运行模式)
    • [八、虚拟化平台管理工具 Libvirt(补充)](#八、虚拟化平台管理工具 Libvirt(补充))
      • [1. Libvirt 是什么](#1. Libvirt 是什么)
      • [2. Libvirt 四大管理工具(必记)](#2. Libvirt 四大管理工具(必记))
    • 九、必背缩略语
    • 十、考点速记

虚拟化技术介绍

一、虚拟化基础概念

1. 什么是虚拟化

将任何一种形式的资源抽象成另一种形式的技术都是虚拟化,是资源的一种逻辑表示 。本质是解除物理硬件与操作系统之间的紧耦合,把资源抽象成共享资源池,OS 从池中分配资源。

2. 重要概念(必背)

概念 含义
Host Machine 物理机(宿主机硬件)
Host OS 运行在物理机上的操作系统
Hypervisor(VMM) 虚拟化软件层 / 虚拟机监控机(Virtual Machine Monitor)
Guest Machine 虚拟机
Guest OS 虚拟机里的操作系统

3. 虚拟化发展史关键节点

年份 事件
1964 IBM 首次在大型机上尝试虚拟化
1999 VMware 推出 x86 虚拟化产品
2002 Xen 开源
2006 Qumranet 宣布 KVM 诞生
2007.2 KVM 集成进 Linux 2.6.20 内核
2008 微软 Hyper-V;LXC 容器推出
2010 红帽 RHEL 6.0 默认仅提供 KVM
2013 Docker 推出

4. 虚拟化三种类型(易考对比)

类型 实现方式 是否改 Guest OS 优缺点
全虚拟化 VMM 实现 CPU、内存、设备 I/O 全部虚拟化 不需要改 兼容性好,但处理器额外开销大
半虚拟化 VMM 只做 CPU/内存,I/O 由 Guest OS 自己实现 必须修改 Guest OS 兼容性差,但性能好
硬件辅助虚拟化 借助处理器硬件支持实现高效全虚拟化(Intel VT-x / AMD-V) 不需要改 兼容性好,是未来发展趋势

5. 虚拟化四大特点

特点 一句话说明
分区 一台物理机上同时运行多台虚拟机
隔离 虚拟机之间相互隔离,一台崩溃不影响其他
封装 整台 VM 环境封装成独立文件,拷走文件即可迁移
相对硬件独立 VM 无需修改即可在任何服务器上运行

二、CPU 虚拟化

1. 需要解决的两个问题

  1. 如何模拟 CPU 指令(敏感指令)
    • 敏感指令:可以读写系统关键资源的指令
    • 特权指令 :绝大多数敏感指令是特权指令,只能在处理器最高特权级(内核态 Ring 0)执行
  2. 如何让多台 VM 共享 CPU:定时器中断触发时陷入 VMM,由 VMM 按调度机制分配 CPU

2. x86 特权级 Ring

  • x86 有 4 个特权级:Ring 0(内核态,最高)→ Ring 1 → Ring 2 → Ring 3(用户态)
  • 无虚拟化时:OS 内核占 Ring 0,应用程序在 Ring 3
  • 全虚拟化(二进制翻译):VMM 捕获 Guest OS 指令 → 翻译 → 模拟执行
  • 硬件辅助虚拟化 :CPU 新增 root 模式(VMM 运行)和非 root 模式(Guest 运行),Guest 执行特权指令自动陷入 VMM,效率高

3. CPU 与 vCPU 对应关系

  • 一个物理核心(含超线程 Super Thread)可虚拟出多个 vCPU
  • vCPU 由 CPU 统一调度,虚拟机看到的 vCPU 本质是被调度的执行线程

三、内存虚拟化

1. 需要解决的两个问题

传统 OS 认为:①内存都从物理地址 0 开始;②内存都是连续的。但物理地址 0 只有一个,连续分配效率低 → 需要虚拟化抽象。

2. 核心:三级地址转换(必背)

缩写 全称 含义
GVA Guest Virtual Address 客户机虚拟地址(Guest OS 里程序看到的地址)
GPA Guest Physical Address 客户机物理地址(Guest OS 认为的"物理内存")
HVA Host Virtual Address 宿主机虚拟地址
HPA Host Physical Address 宿主机真实物理地址

转换路径:GVA → GPA → HPA(KVM 中虚机的物理内存就是 qemu-kvm 进程占用的内存空间)

3. MMU

  • Memory Management Unit,内存管理单元
  • 功能:虚拟地址 → 物理地址的转换,以及内存保护、缓存控制、总线仲裁

4. 影子页表 vs EPT

技术 原理 特点
影子页表 软件维护 GVA→HPA 的直接映射表,省去多次转换 实现复杂,页表维护开销大
EPT(Intel)/ NPT(AMD) CPU 硬件直接完成 GVA→GPA→HPA 两级转换 硬件自动完成,效率高,降低实现复杂度

EPT 工作流程:CR3 寄存器把 GVA 转成 GPA,EPT 再把 GPA 转成 HPA,两次转换都由 CPU 硬件自动完成。

5. 透明大页 THP

  • 普通页 4K,THP 大页 = 2M,对使用者完全透明
  • 作用:提高 TLB 命中率、减少访存时间、减少页表项、提高 CPU Cache 效率
  • 需要共享或 swap 时拆回 4K;兼容 KSM、EPT/NPT、影子页表

四、I/O 虚拟化

1. 需要解决的两个问题

  • 设备发现:控制每台 VM 能访问哪些设备
  • 访问截获:截获 Guest OS 通过 I/O 端口或 MMIO 对设备的访问(设备通过 DMA 与内存交换数据)

2. QEMU/KVM 三类 I/O 设备(重点对比)

方式 原理 优点 缺点
全模拟(模拟设备) QEMU 纯软件模拟完整设备(PIO/MMIO/DMA/中断接口一致) 兼容好,不影响 VM 软件栈,可模拟不存在的设备 每次 I/O 多次上下文切换(VM↔Hypervisor、QEMU↔Hypervisor),性能最差
Virtio(半虚拟化) VM 内装 Front-end 前端驱动,主机上跑 Back-end 后端驱动,二者通过共享内存高效通信 减少数据传输开销,性能好;用 Eventfd 做轻量级等待/通知、Batched I/O 批处理 需要 VM 装专用 virtio 驱动
PCI 设备直接分配 把宿主机物理 PCI/PCI-E 设备独占 分配给一台 VM,靠 VT-d(IOMMU) 硬件支持 性能接近物理机,几乎不需要 Hypervisor 参与 一个设备只能给一台 VM,利用率低

性能排序:PCI 直通 > Virtio > 全模拟


五、Xen 虚拟化

  • Xen 的 Hypervisor 是服务器 BIOS 启动后载入的第一个程序
  • Dom0(Domain 0)
    • 具有特殊权限的管理虚拟机,OS 为 Linux/Unix
    • 唯一能直接访问物理硬件(存储、网卡)的 VM,加载物理驱动
    • 负责控制管理 Hypervisor,为其他 VM 提供硬件访问桥梁
  • DomU(Domain U):普通业务虚拟机,通过虚拟驱动经 Dom0 访问硬件
  • 架构:Hardware → Xen Hypervisor → Dom0(带物理驱动)+ 多个 DomU(带虚拟驱动)

六、KVM 虚拟化(重点)

1. KVM 简介

  • KVM:Kernel-based Virtual Machine,基于内核的虚拟机
  • 本质是 Linux 内核中的虚拟化模块 kvm.ko,复用 Linux 内核做任务调度、内存管理、硬件交互
  • 开源,2007 年 2 月集成进 Linux 2.6.20 内核
  • KVM 中,一台虚拟机就是一个 Linux 进程,由 CPU 调度运行
  • KVM 运行在内核空间,只负责 CPU、内存虚拟化,本身不做任何设备模拟

2. 1型虚拟化 vs 2型虚拟化(补充)

类型 别名 架构 代表产品 优点
1 型虚拟化 裸金属型 Hypervisor 直接装在服务器硬件上,无宿主机 OS KVM、Xen、VMware ESXi(企业级) 性能强
2 型虚拟化 宿主型 先装宿主机 OS(如 Win10),虚拟化软件作为应用程序运行 VMware Workstation(和 QQ 一样跑在 Win10 上) 开发简单

大白话:1 型 = Hypervisor 直接踩硬件;2 型 = 虚拟化软件寄居在现成的操作系统里。


七、KVM 与 QEMU(补充)

1. 分工(必背)

组件 负责部分 说明
KVM CPU 虚拟化 + 内存虚拟化 内核模块,基于硬件辅助,性能强
QEMU I/O 设备虚拟化(网卡、USB、磁盘等输入输出设备) 用户空间纯软件模拟
  • QEMU 本身是一款开源虚拟化软件,能模拟整套虚拟机(CPU、内存、IO、USB、网卡),但它纯软件模拟 CPU/内存的性能很差
  • KVM 诞生背景(课堂补充):以色列公司 Qumranet 为了开发桌面云,顺带着开发了 KVM
  • 二者结合成 qemu-kvm:QEMU 负责 IO 虚拟化,KVM 负责 CPU/内存虚拟化,取长补短
  • 通信接口:QEMU 通过 /dev/kvm 设备文件与内核中的 KVM 模块交互

2. Xen 与 KVM 架构对比

  • Xen:Hypervisor 直接管硬件 → Dom0 跑物理驱动和后端 → DomU 跑前端驱动
  • KVM:Linux 内核本身就是 Hypervisor(KVM 模块)→ QEMU 作为用户空间进程模拟设备 → Guest OS

3. KVM 三种运行模式

模式 运行位置 干什么
客户模式(Guest) VMX Non-Root 执行 Guest OS 客户机代码
内核模式(Kernel) Linux 内核 / KVM 模块(VMX Root) 处理 VM Exit,负责 CPU/内存调度
用户模式(User) 用户空间 QEMU 处理 I/O 设备模拟、执行 ioctl 调用 KVM

工作流程:QEMU 用户模式发起 ioctl → KVM 内核模式进入客户模式执行 Guest 代码 → 遇到 I/O 或信号触发退出(VM Exit)→ 回到用户模式由 QEMU 处理 I/O → 循环


八、虚拟化平台管理工具 Libvirt(补充)

1. Libvirt 是什么

  • 一套 C 语言开发的 API ,提供通用、稳定的软件层来统一管理物理机上多种虚拟化方式
  • Linux 上的开源虚拟化库,支持远程管理
  • 被管理对象不限 KVM,还可以是 Xen、VMware、Hyper-V、VirtualBox 等(对上屏蔽底层差异)

2. Libvirt 四大管理工具(必记)

工具 作用
virsh 命令行管理工具(最常用)
virt-manager 图形界面管理工具
virt-viewer 查看/连接虚拟机控制台
virt-install 创建虚拟机

架构层次:用户工具(virsh/virt-manager 等)→ libvirt(daemon + API) → 底层 Hypervisor(KVM/QEMU、Xen、VMware...)


九、必背缩略语

缩写 全称 中文
VMM Virtual Machine Monitor 虚拟机监控器(Hypervisor)
KVM Kernel-based Virtual Machine 基于内核的虚拟机
GVA/GPA/HPA Guest Virtual/Guest Physical/Host Physical Address 客户机虚拟/客户机物理/宿主机物理地址
MMU Memory Management Unit 内存管理单元
EPT Extended Page Tables 扩展页表(Intel 硬件内存虚拟化)
THP Transparent Huge Pages 透明大页
VT-d Intel Virtualization Technology for Directed I/O Intel I/O 直通技术(IOMMU)
Dom0/DomU Domain 0 / Domain U Xen 管理域 / 普通客户域

十、考点速记

  1. 虚拟化本质:硬件与 OS 解耦、资源池化 ;四大特点:分区、隔离、封装、硬件无关
  2. 全虚拟化不改 Guest OS(兼容好、开销大);半虚拟化要改 Guest OS (性能好、兼容差);硬件辅助虚拟化是趋势
  3. 特权指令只能在 Ring 0 内核态 执行;硬件辅助虚拟化引入 root / 非 root 模式
  4. 内存地址转换:GVA → GPA → HPAEPT 由 CPU 硬件完成转换,影子页表靠软件
  5. I/O 虚拟化三种方式:全模拟(QEMU,最慢)、Virtio(前后端+共享内存)、PCI 直通(VT-d,最快)
  6. Xen:Dom0 是唯一能直接访问硬件的管理 VM,DomU 是普通虚拟机
  7. KVM = Linux 内核模块 kvm.ko,一台虚拟机 = 一个 Linux 进程,2007.2 进入 Linux 2.6.20
  8. 1 型(裸金属:KVM/Xen/ESXi,性能强)vs 2 型(宿主型:Workstation,开发简单)
  9. KVM 管 CPU+内存,QEMU 管 I/O,通过 /dev/kvm 通信,合称 qemu-kvm
  10. KVM 三模式:客户模式、用户模式(QEMU)、内核模式(KVM)
  11. Libvirt 统一管理 KVM/Xen/Hyper-V;virsh 命令行、virt-manager 图形界面、virt-viewer 查看、virt-install 创建
相关推荐
Lzg_na15 分钟前
WiFi吞吐量和实际文件传输时速率差异原因以及定位
运维·网络
技术猿禁19 分钟前
Linux运维开发
linux·运维·运维开发
民乐团扒谱机22 分钟前
【读论文】基于波分复用和时分复用的单纤高精度双向时间传递系统
运维·服务器·网络
夜雪一千25 分钟前
服务器快慢怎么测?从命令行到脚本的完整指南
运维·服务器
不会就选b28 分钟前
Linux之socket编程(三)
linux·运维·服务器
秋风&萧瑟37 分钟前
【Linux系统编程】Linux IPC 的使用
linux·运维·网络
DOLA_Tech1 小时前
WIN电脑中VMware虚拟机网速慢的解决办法
运维·服务器
En^_^Joy1 小时前
Nginx 从入门到精通:配置、原理与实战详解
运维·nginx
玖石书2 小时前
WSL2 手动安装 Ubuntu 24.04 到指定磁盘位置
linux·运维·ubuntu·wsl