介绍

PCI 直通允许您在虚拟机中使用物理 PCI 设备(图形卡、网卡)(仅限 KVM 虚拟化)
如果对设备进行“PCI 直通”,则主机将无法再使用该设备

注意:
PCI直通是Proxmox VE的一项实验性功能!无法迁移具有直通设备的 VM

启用 IOMMU

您需要通过编辑内核命令行来启用 IOMMU
首先打开引导加载程序内核命令行配置文件

GRUB:

 nano /etc/default/grub

查找带有“GRUB_CMDLINE_LINUX_DEFAULT”的行

英特尔处理器
对于英特尔 CPU,请添加

AMD 处理器
对于 AMD 处理器,请添加

改完后:

然后保存更改并更新 grub:

update-grub

重启虚拟机

reboot

PT 模式

英特尔和AMD芯片都可以使用附加参数“iommu=pt”,以与上述相同的方式添加到内核cmdline中。


这仅在必要时启用 IOMMU 转换,适配器不需要对内存使用 DMA 转换,因此可以提高虚拟机管理程序 PCIe 设备(未直通到 VM)的性能

验证是否已启用 IOMMU

dmesg | grep -e DMAR -e IOMMU

输出 "DMAR: IOMMU enabled". 如果没有输出,则有问题。

添加模块

所需模块添加到 /etc/modules

nano /etc/modules

IOMMU 中断重映射

如果没有中断重映射,将无法使用 PCI 直通。设备分配将失败,并显示“无法分配设备”[设备名称]“:不允许操作”或“找不到中断重新映射硬件,将设备传递到非特权域不安全”错误。

所有使用英特尔处理器和芯片组的系统,如果支持英特尔定向 I/O 虚拟化技术 (VT-d),但不支持中断重映射,将看到此类错误。较新的处理器和芯片组(AMD 和英特尔)中提供了中断重映射支持。

要确定您的系统是否支持中断重映射,请执行以下操作:

dmesg | grep 'remapping'

如果您看到以下行之一:


支持重映射。

如果您的系统不支持中断重映射,则可以允许不安全的中断:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

验证 IOMMU 隔离

对于正常工作的 PCI 直通,需要为要分配给 VM 的所有 PCI 设备使用专用的 IOMMU 组。

你应该有这样的东西:

find /sys/kernel/iommu_groups/ -type l

最后修改:2023 年 02 月 24 日
如果觉得我的文章对你有用,请随意赞赏