这篇文章上次修改于 2540 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

介绍

PCI直通允许您在VM内部使用物理PCI设备(图形卡,网卡)(仅限KVM虚拟化)。如果是“PCI passthrough”设备,该设备将不再可用于主机。
注:PCI passthrough是Proxmox VE中的一项实验性功能

一、编辑 grub

英特尔CPU

编辑grub:

vim /etc/default/grub

找到如下内容

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

替换为

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

执行命令

update-grub

AMD CPU

编辑grub:

vim /etc/default/grub

找到如下内容

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

替换为

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

执行命令

upcate-grub

最后输入命令检查是否有错

dmesg | grep -e DMAR -e IOMMU

如执行后没任何输出,则有可能是主机BIOS没设置CPU虚拟化支持。正常应该如下图

二、新增模块

修改modules文件(默认为空)

vim /etc/modules

添加如下内容

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

最后执行如下命令检查设备是否支持IOMMU(有可能需要重启)

dmesg | grep ecap

在输出内容里,“ecap”之后的十六进制值表示是否支持IOMMU。如果该值的最后一个字符是8,9,a,b,c,d,e或f,则支持。
例如,“ecap 1000”表示不支持。“ecap 10207f”表示支持,因为最后一个字符是“f”

三、IOMMU隔离校验

要让pci passthrough正常工作,需要为pci设备提供专用的iommu组
执行以下命令,检查效验结果

find /sys/kernel/iommu_groups/ -type l

本文内容参考以下文章
https://blog.51cto.com/sery/2161368?cid=716548
https://pve.proxmox.com/wiki/Pci_passthrough