一、问题描述
在尝试使用 virsh 启动名为 gpu1 的虚拟机时,遇到错误提示,显示当前主机不支持 VFIO PCI 透传。这表明虚拟机管理器在尝试为虚拟机配置物理设备直接访问时失败了。
[root@pm- a]# virsh start gpu1
error: Failed to start domain gpu1
error: unsupported configuration: host doesn't support VFIO PCI passthroug
二、问题原因
该错误通常由硬件虚拟化支持不充分或相关虚拟化技术未在 BIOS 中启用引起。具体来说,该错误提示 VFIO 需要启用 IOMMU(输入输出内存管理单元)来提供安全的设备隔离,而在本例中,宿主机的 IOMMU 显然未被启用或配置不正确。
三、问题解决方案
解决方案涉及修改 GRUB 启动加载器的配置以启用 IOMMU。详细步骤如下:
-
编辑
/etc/default/grub
文件,修改 GRUB 的启动参数,确保包括intel_iommu=on
和iommu=pt
来开启和配置 IOMMU。 -
根据系统的固件类型(UEFI 或 Legacy BIOS),使用不同的命令更新 GRUB 配置。可以通过检查
/sys/firmware/efi
目录的存在来判断系统是使用 UEFI 还是 Legacy BIOS。- 如果是 UEFI,执行命令:
grub2-mkconfig -o /boot/efi/EFI/ctyunos/grub.cfg
- 如果是 Legacy BIOS,执行命令:
grub2-mkconfig -o /boot/grub2/grub.cfg
- 如果是 UEFI,执行命令:
-
重启系统。
-
使用
dmesg | grep -i iommu
命令检查系统启动日志中关于 IOMMU 的条目,确认 IOMMU 功能已启用。这样配置后,系统应能够支持 VFIO PCI 透传,从而允许虚拟机直接访问物理 PCI 设备。