硬件辅助虚拟化是什么
CPU 厂商在指令集里加入虚拟化扩展,让敏感指令的陷入与拦截由硬件直接处理,不再依赖二进制翻译或半虚拟化改造。这是全虚拟化能接近原生性能的前提,也是嵌套虚拟化、设备直通等能力的基础。Intel 平台称 VT-x,AMD 平台称 AMD-V,两者功能对应但参数与检查方式不同。
基本信息
| Intel | VT-x,CPU 标志位 vmx |
|---|---|
| AMD | AMD-V,CPU 标志位 svm |
| 配套能力 | EPT / NPT 二级地址转换、VT-d / AMD-Vi 的 I/O 虚拟化(直通依赖) |
| 检查方法 | grep -oE 'vmx|svm' /proc/cpuinfo | head -1 |
| 启用层级 | 固件(BIOS/UEFI)开关 → 内核模块 → 虚拟化平台 |
典型使用场景
- 部署 KVM 前确认:装虚拟化平台前的第一步硬件与固件检查
- 云主机跑容器与虚机:需要实例类型支持嵌套虚拟化
- 设备直通:同时依赖虚拟化扩展与 IOMMU 能力
- 性能评估:对比开启前后同一负载的表现
- 故障排查:虚机启动报硬件加速不可用时定位到哪一层被关闭
开启后确认内核识别
开启后确认内核识别
grep -cE 'vmx|svm' /proc/cpuinfo # 大于 0 表示 CPU 侧可用
journalctl -k | grep -i -m5 'kvm' # 查看 kvm 模块初始化日志
lsmod | grep -E '^kvm' # 确认模块已加载
ls -l /dev/kvm # 设备节点存在才可用 QEMU 加速
# 直通场景还需确认 IOMMU 已开启:dmesg | grep -i iommu分层排查
| 现象 | 常见原因 | 验证方式 |
|---|---|---|
| 无 vmx/svm 标志 | 固件未开虚拟化开关 | 进 BIOS/UEFI 确认开关状态 |
| 有标志但模块加载失败 | 内核参数禁用或平台封锁 | 看 dmesg 与内核命令行 |
| 模块正常但无 /dev/kvm | 设备未创建或权限不足 | 检查模块参数与设备节点 |
| 直通报 IOMMU 未启用 | 未开启 IOMMU 或未分组 | dmesg 与 IOMMU 组信息 |
宿主固件未开虚拟化开关时 KVM 模块加载失败;云主机需选择支持嵌套虚拟化的实例类型,并在镜像层面确认已启用。
启用后需要重启或重载模块才生效;生产宿主重载虚拟化模块前要先确认没有运行中的虚机,否则模块被占用无法卸载,只能等到维护窗口重启。