virt-host-validate 是什么
virt-host-validate 是 libvirt 自带的宿主健康检查工具,针对 QEMU(或 LXC)逐项检查硬件虚拟化支持、内核模块、设备节点、cgroup、IOMMU 与锁机制,每项给出 PASS、WARN 或 FAIL 以及处理建议。新宿主上线、内核升级之后,或者虚机莫名其妙起不来时,先跑一遍能快速排除环境层问题,把注意力集中到配置与应用上。
基本信息
| 用法 | virt-host-validate [qemu|lxc] |
|---|---|
| 检查项 | 硬件虚拟化、内核模块、设备节点、cgroup、IOMMU、锁机制 |
| 输出 | 每项 PASS / WARN / FAIL 并附建议 |
| 适用场景 | 新宿主上线、升级内核后回归 |
| 退出码 | 存在 FAIL 项时返回非零,便于脚本纳管巡检 |
典型使用场景
- 新宿主交付验收前的环境自检
- 内核或 libvirt 升级后的回归确认
- 虚机启动失败时先排除环境层问题
- 排查设备直通失败,确认 IOMMU 是否就绪
- 批量巡检多台宿主,把结果汇总为健康报表
运行与典型输出
运行与典型输出
sudo virt-host-validate qemu
# 例:QEMU: Checking for hardware virtualization : PASS
# QEMU: Checking for device /dev/kvm : PASS
# QEMU: Checking for device assignment IOMMU support : WARN
# QEMU: Checking for cgroup 'cpu' controller support : PASS
sudo virt-host-validate qemu 2>&1 | grep -E 'FAIL|WARN' # 只看需要处理的项目检查项与处理方向
| 检查项 | 含义 | 处理方向 |
|---|---|---|
| 硬件虚拟化 | CPU 是否支持且已在固件中开启 | BIOS/UEFI 打开虚拟化开关 |
| 内核模块 | kvm 与厂商模块是否加载 | 载入模块并配置开机自动加载 |
| 设备节点 | /dev/kvm 是否存在且可访问 | 检查模块与设备权限 |
| cgroup | 资源控制是否可用 | 按发行版启用对应 cgroup 层级 |
| IOMMU | 设备直通与隔离是否可用 | 内核参数开启并在固件中启用 VT-d/AMD-Vi |
| 锁机制 | CPU 与内存热插拔相关锁支持 | 按提示确认内核配置 |
WARN 不影响基本运行但值得跟进(如未启用 IOMMU 时无法做设备直通),应记录在验收清单里而不是直接忽略。
在容器或受限环境里运行会报缺少设备节点,属预期结果:该工具检查的是宿主内核环境,需要在物理宿主或具备相应权限的命名空间内执行才有意义。
把检查结果纳入交付验收模板:PASS 项留档、WARN 项记录处理计划与责任人、FAIL 项作为上线阻断条件,避免每次巡检都靠人工记忆判断。