在 libvirt 虚拟机管理中,domain_type 的设置决定了虚拟机使用的虚拟化技术。在 domain_type 中,qemu 和 kvm 是两种不同的虚拟化模式,它们的区别主要在于是否使用硬件虚拟化加速。
qemu 模式
- 定义:qemu 是一种完全软件模拟的虚拟化模式,使用 QEMU(Quick Emulator)作为虚拟机的执行引擎。
- 特点:
– 纯软件模拟:QEMU 完全通过软件模拟 CPU、内存、I/O 设备等,因此它可以模拟几乎所有的硬件,但性能相对较差。
– 无需硬件虚拟化支持:由于是纯软件模拟,qemu 可以在不支持硬件虚拟化扩展(如 Intel VT-x 或 AMD-V)的 CPU 上运行。
– 跨平台性:qemu 具有很好的跨平台能力,可以模拟不同架构的机器。例如,在 x86_64 机器上模拟 ARM 架构的系统。
– 性能:由于没有使用硬件加速,性能相比 KVM 模式较差。
kvm 模式
- 定义:kvm 是基于硬件虚拟化加速的虚拟机模式,它使用 KVM(Kernel-based Virtual Machine)模块,通过硬件辅助虚拟化技术(如 Intel VT-x 或 AMD-V)来加速虚拟机的执行。
- 特点:
– 硬件虚拟化:KVM 依赖硬件虚拟化扩展(如 Intel VT-x 或 AMD-V)。因此,kvm 模式需要 CPU 支持这些技术。
– 性能优越:由于依赖于硬件辅助的虚拟化,kvm 模式的性能相比 qemu 要高得多,接近原生系统的性能。
– 需要内核模块:KVM 是 Linux 内核的一部分,允许多个虚拟机共享硬件资源,因此需要在系统中加载 KVM 内核模块(kvm-intel 或 kvm-amd)。
– 操作系统支持:几乎所有现代操作系统(Windows、Linux、BSD 等)都可以作为 KVM 虚拟机运行,并享受硬件加速的优势
主要区别
如何选择
qemu 模式适用于:
- 需要在没有硬件虚拟化支持的机器上运行虚拟机。
- 跨架构的模拟需求,例如在 x86_64 机器上模拟 ARM 架构。
- 开发、测试或者需要进行设备和硬件模拟的场景。
kvm 模式适用于:
- 在支持硬件虚拟化的 CPU 上运行虚拟机,追求高性能的场景。
- 需要在生产环境中运行接近原生性能的虚拟机。