KVM(Kernel-based Virtual Machine,内核虚拟机)是基于x86虚拟化扩展(Intel VT或者AMD-V) 技术的虚拟机软件是一个开源的系统虚拟化模块。KVM是基于Linux 内核实现的,自Linux 2.6.20开始集成在Linux的各个主要发行版本中。OpenStack 对KVM支持得也最好。
发展史
- 2006 年有
Qumranet公司发布,同年 10 月正式纳入Linux Kernel - 2008 年 9 月
Qumranet被Redhat收购 - 2010 年 11 月
Redhat 6.0的改造版本中,KVM替代原来的Xen
组成

KVM的内核空间模块叫kvm.ko,作为一个Hypervisor,只用于管理虚拟CPU和内存。对应的设备文件:/dev/kvmQEMU(quick emulator)运行在用户空间,是一个纯软件的虚拟机实现(在没有KVM模块的情况下可以独立运行,但性能比较低),包括CPU虚拟化、内存虚拟化以及I/O设备虚拟化(存储和网络)QEMU是系统模拟器,包括提供Guest OS 虚拟化平台,提供整个系统的仿真(PCI host controller, disk, network, video hardware, USB controller 等)。
- 每个虚拟机都是 Linux 的一个常规进程,由 Linux 调度程序进行调度
架构
从上到下一般包括如下部分:
- 云资源管理:如
OpenStack等 - 主机管理工具:
libvirt,可以管理的Hypervisor包括:KVM、Xen、VirtualBox。libvirt 有 3 部分组成:API 库virsh:KVM 命令行工具,实现虚拟机的创建、删除等管理操作libvirtd:服务程序,接收和处理 API 请求
- 虚拟化仿真:
QEMU - 硬件资源访问管理:
KVM
其他
Q35
Q35 主要指的是在 QEMU 和 KVM 等虚拟化环境中用于模拟现代硬件架构的芯片组/主板模型。它是对传统且老旧的 i440fx 机器类型的一个更现代的替代方案。
以下是 Q35 机器类型的主要特点和优势:
- 原生 PCI Express (PCIe) 支持:
- 这是 Q35 与
i440fx最大的区别。Q35 模拟的是一个原生的 PCIe 总线拓扑(通常基于 Intel ICH9 芯片组架构),而i440fx主要模拟老式的 PCI 总线。 - 重要应用: 这对于**PCI 设备直通(VFIO/GPU Passthrough)**至关重要。使用 Q35 可以提供更真实的硬件环境,大大提高将物理 PCIe 设备(如显卡、NVMe 硬盘)直通给虚拟机时的兼容性和性能。
- 这是 Q35 与
- 现代硬件组件:
- Q35 模拟了更现代的 I/O 控制器和架构,例如通常配备 AHCI 存储控制器,更接近现代物理主机。
- 更好的 IOMMU 支持:
- 它为虚拟 IOMMU 仿真和高级 PCIe 功能(如热插拔、AER)提供了更好的支持。
- UEFI 固件支持:
- Q35 通常与 OVMF(Open Virtual Machine Firmware)配对使用,这为虚拟机提供了 UEFI 环境,而不是传统的 BIOS,这对于安装和运行现代操作系统(尤其是 Windows 10/11)很有利。
- 架构更接近现实:
- Q35 架构包含北桥(MCH/内存控制器中心)和南桥(ICH9/I/O 控制器中心),它们通过高速链路连接,这种设计比
i440fx更接近现代的物理电脑主板。
- Q35 架构包含北桥(MCH/内存控制器中心)和南桥(ICH9/I/O 控制器中心),它们通过高速链路连接,这种设计比