Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

KVM 核心概念

一、KVM 是什么

KVM(Kernel-based Virtual Machine)是 Linux 内核中的虚拟化模块,把 Linux 本身变成一个 Type-1 Hypervisor。

关键点:

  • 不是独立程序
  • 内核模块
  • 依赖 CPU 硬件虚拟化(VT-x / AMD-V)

二、KVM 的整体架构(必须吃透)

硬件 (CPU / Memory / NIC / Disk)
 └── Linux Kernel
      ├── KVM 模块(kvm.ko / kvm_intel.ko / kvm_amd.ko)
      ├── 内存管理 / 调度 / NUMA
      └── QEMU(用户态进程)
           └── 虚拟机(Guest OS)

各组件职责

组件 作用
KVM CPU / 内存虚拟化
QEMU 设备模拟(磁盘、网卡、显卡)
libvirt 管理 API(VM 生命周期)
virtio 半虚拟化设备驱动

三、KVM 的工作原理(底层)

1️⃣ CPU 虚拟化

核心依赖

  • Intel VT-x
  • AMD-V

执行机制

  • Guest CPU 指令 -> VMX 模式
  • 特权指令 -> Trap -> Host 处理

👉 性能接近裸机

2️⃣ 内存虚拟化(难点)

地址转换

Guest Virtual Address
 -> Guest Physical Address
 -> Host Physical Address

关键技术

技术 说明
EPT / NPT 二级页表
HugePage 减少 TLB miss
Balloon 内存回收
NUMA 内存亲和

3️⃣ I/O 虚拟化

三种模式

模式 特点
全虚拟化 模拟真实硬件(慢)
半虚拟化 virtio(主流)
直通 PCI Passthrough / SR-IOV

四、QEMU 在 KVM 中的角色(常被误解)

KVM ≠ QEMU

  • KVM:内核模块,负责执行
  • QEMU:用户态进程,负责设备

没有 KVM

QEMU -> 纯模拟 -> 很慢

有 KVM

QEMU + KVM -> 硬件辅助 -> 高性能

五、libvirt 的作用(管理层)

libvirt 是 KVM 的“控制面”

能做什么

  • 创建 / 启动 / 停止 VM
  • 网络 / 存储池管理
  • XML 配置抽象

常见 URI

URI 场景
qemu:///system 生产
qemu:///session 测试

六、KVM 网络模型(高频)

1️⃣ NAT(default)

VM -> virbr0 -> NAT -> 外网
  • 简单
  • 性能一般
  • 不适合生产

2️⃣ Bridge(生产主流)

VM ─┐
    ├─ br0 ── 物理网卡 ── 外网
Host┘
  • VM 与宿主同网段
  • 性能好
  • K8S / OpenStack 必用

3️⃣ OVS(云平台)

  • VXLAN
  • SDN
  • OpenStack / Kubernetes

七、KVM 存储模型

类型 场景
文件(qcow2) 测试
LVM 生产
Ceph RBD 云平台
NFS 简单共享

qcow2 特点

  • 支持快照
  • 写时复制
  • 性能略低于 raw

八、KVM 权限与安全模型(很关键)

system vs session

模式 权限
system root / libvirt 组
session 当前用户

安全机制

  • SELinux
  • cgroup
  • namespace
  • sVirt

九、KVM vs 其他虚拟化

对比 KVM Xen ESXi
类型 内核 裸金属 裸金属
生态 最强 下降 商业
云厂商 主流

十、KVM 的典型应用场景

  • 私有云(OpenStack)
  • 云厂商 IaaS
  • Kubernetes 节点
  • CI / 测试环境
  • 数据库隔离部署

十一、常见误区(一定要避)

  • ❌ KVM 是 Type-2
  • ❌ QEMU = KVM
  • ❌ virtio 不重要
  • ❌ 容器能替代 VM
  • ❌ 不需要 NUMA 规划

十二、总结

KVM 是 Linux 内核中的虚拟化能力,依赖硬件辅助,通过 QEMU 模拟设备、libvirt 管理生命周期,性能接近裸机,是云计算的事实标准。

十三、进阶路线(建议)

  • 1️⃣ KVM 核心原理
  • 2️⃣ 网络(Bridge / OVS)
  • 3️⃣ 存储(LVM / Ceph)
  • 4️⃣ 性能调优(NUMA / HugePage)
  • 5️⃣ OpenStack / K8S