Difference with qemu kvm and libvirt
Author:ChatGPT
本笔记梳理了 Linux 下常用虚拟化组件的概念、作用及关系,方便理解和实践。
核心概念
KVM (Kernel-based Virtual Machine)
- 本质:Linux 内核模块,提供硬件虚拟化能力(CPU + 内存虚拟化)。
- 作用:把物理 CPU 转变为虚拟 CPU,让 guest OS 可以像在真实硬件上一样运行。
- 特点:仅提供虚拟化能力,不负责虚拟机管理或硬件模拟。
- 比喻:KVM 就像发动机,你有一辆车的发动机,但还没有车身,也没人开。
---
QEMU
- 本质:用户态程序,提供完整的硬件模拟(CPU、内存、硬盘、网卡等)。
- 作用:
- 当没有 KVM 时,QEMU 可以完全模拟 CPU(速度慢)。
- 当有 KVM 时,QEMU 仅模拟外围设备,CPU 部分由 KVM 加速。
- 特点:可以运行几乎任何架构的虚拟机(x86、ARM 等)。
- 比喻:QEMU 是车身和方向盘,它负责把发动机(KVM)装好,能开车。
---
libvirt
- 本质:虚拟化管理框架 / API。
- 作用:
- 提供统一接口管理不同虚拟化技术(KVM、Xen、VMware 等)。
- 管理虚拟机生命周期(创建、启动、暂停、快照等)。
- 特点:可以通过命令行工具 `virsh` 或程序调用 libvirt API,无需直接操作 QEMU/KVM。
- 比喻:libvirt 是车库管理员,帮你调度发动机和车身,让你不用手动装配每辆车。
---
virt-manager
- 本质:图形化管理工具。
- 作用:通过 libvirt 管理虚拟机。
- 特点:
- 提供图形界面创建、启动、快照、查看虚拟机。
- 底层仍由 libvirt + QEMU + KVM 驱动虚拟机运行。
- 比喻:virt-manager 是你在电脑上开车的方向盘界面,你看得见车并能操作,但发动机是 KVM,车身是 QEMU,车库管理员是 libvirt。
---
层级关系
物理主机 (Linux)
└─ KVM (内核模块, CPU/内存虚拟化)
└─ QEMU (用户态, 硬件模拟)
└─ libvirt (API/管理框架)
└─ virt-manager (图形界面, 调用 libvirt)
---
总结
- KVM + QEMU = 虚拟机的核心运行时,负责实际运行 guest。
- libvirt = 虚拟机管理器 / API。
- virt-manager = 图形界面,方便操作 libvirt。
- 总结比喻:**KVM 是发动机,QEMU 是车身,libvirt 是车库管理员,virt-manager 是你操作的方向盘界面**。
4. Linux 虚拟化栈示意图(结合比喻)
┌───────────────────────────┐
│ virt-manager │
│ (图形化管理界面) │
│ 比喻:方向盘界面 │
└─────────┬─────────────────┘
│ 调用 libvirt API
┌─────────▼─────────────────┐
│ libvirt │
│ (虚拟机管理框架/API) │
│ 比喻:车库管理员 │
└─────────┬─────────────────┘
│ 控制虚拟机生命周期
┌─────────▼─────────────────┐
│ QEMU │
│ (用户态硬件模拟程序) │
│ - CPU / 内存 (KVM加速) │
│ - 硬盘、网卡、显卡等 │
│ 比喻:车身和方向盘 │
└─────────┬─────────────────┘
│ 调用虚拟化硬件
┌─────────▼─────────────────┐
│ KVM │
│ (Linux 内核模块, CPU/内存)│
│ 比喻:发动机 │
└─────────┬─────────────────┘
│ 操作物理硬件
┌─────────▼─────────────────┐
│ 物理主机 (Linux) │
│ 比喻:真实的土地和资源 │
└───────────────────────────┘
- 注解:
- virt-manager = 你在电脑上操作的方向盘界面
- libvirt = 管理和调度虚拟机的车库管理员
- QEMU = 模拟硬件的车身和控制装置
- KVM = 内核虚拟化模块,虚拟机的发动机
- 物理主机 = 提供 CPU/内存和硬件资源的真实土地
5. Linux 虚拟化栈快速记忆图
virt-manager ──> 方向盘界面
│
libvirt ──> 车库管理员
│
QEMU ──> 车身和控制装置
│
KVM ──> 发动机
│
物理主机 ──> 土地和资源
- 快速记忆:
- virt-manager = 操作虚拟机的 GUI
- libvirt = 管理和调度虚拟机
- QEMU = 模拟硬件
- KVM = 内核虚拟化模块
- 物理主机 = 提供真实硬件