第 1 章 · KVM 概述

1.1 虚拟化技术简介

虚拟化:在一台物理机上,用软件抽象出多台相互隔离的「虚拟机器」, 每台虚拟机(VM)都以为自己独占整台硬件。

按实现方式分三类:

  • 全虚拟化:guest 无需修改,VMM 拦截并模拟特权指令(早期靠二进制翻译)
  • 半虚拟化:guest 修改源码,敏感操作用显式 hypercall 代替
  • 硬件辅助虚拟化:CPU 提供专门模式(Intel VT-x / AMD-V),VMM 不再翻译

虚拟化的目的:提高资源利用率、增强隔离与安全、方便迁移与灾备。

1.2 什么是 KVM

KVM(Kernel-based Virtual Machine) 是集成在 Linux 内核中的 硬件辅助虚拟化方案:

  • 本质是一个内核模块(kvm.ko + 各架构的 kvm-intel.ko / kvm-amd.ko
  • 加载后,Linux 内核本身变成一台 Hypervisor
  • 对外暴露 /dev/kvm 设备接口,用户态程序用它创建 VM
  QEMU(用户态:设备模拟 / 管理)
        │  ioctl(/dev/kvm)
  Linux 内核(kvm 模块:CPU / 内存虚拟化)
        │  VT-x / AMD-V
        硬件

1.3 KVM 的功能与优势

功能

  • 支持多个 guest 操作系统(Linux / Windows 等)
  • CPU、内存、I/O 的虚拟化
  • 热迁移(live migration)、快照

优势

  • 性能高:直接利用硬件虚拟化,接近原生
  • 免授权、开源:随 Linux 内核一起
  • 生态成熟:与 libvirt、QEMU、OpenStack 无缝集成