由于直通是在真实硬件上执行的,因此需要满足一些 要求。下面简要概述了这些要求。
硬件需要支持 IOMMU (I/O Memory Management Unit) 中断重新映射,这包括 CPU 和主板。
通常,具有 VT-d 的 Intel 系统和带有 AMD-Vi 的 AMD 系统都支持此功能。 但不能保证一切都会开箱即用,因为 硬件实现不良以及驱动程序缺失或质量低下。
此外,服务器级硬件通常比消费级硬件具有更好的支持 硬件,但即便如此,许多现代系统也可以支持这一点。

1.2 BIOS设置

您必须在 BIOS/UEFI 中启用 IOMMU 支持。通常 相应的设置称为 IOMMU 或 VT-d。

2 查看pcie设备

最简单的方法是使用 GUI 在 VM 的 VM 中添加“主机 PCI”类型的设备 “硬件”选项卡。或者,可以使用命令行。

lspci
复制

比如说要查看pcie网卡信息

lspci | grep -i ethernet 
复制

3 查看硬件直通情况

从命令行运行 如果没有输出,则说明为配置硬件直通?。

dmesg | grep -e DMAR -e IOMMU
复制

4 开启硬件直通

目前pve8.0以上直通很简单,不需要多设置。

  1. 只需要打开
nano /etc/default/grub
复制

修改这一行

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
复制

intel的cpu改为这个

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
复制

amd改为这个

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
复制

intel_iommu=on:内容在内核上启用 IOMMU。
iommu=pt的注释:如果硬件支持 IOMMU 直通模式,则启用此模式可能会提高性能。 这是因为 VM 通常会绕过(默认)DMA 转换 由虚拟机管理程序执行,而是将 DMA 请求直接传递给硬件IOMMU。

  1. 更新 GRUB
update-grub
复制

5 增加系统内核模块

这仅在必要时启用IOMMU转换,将iommu分组相关的内核模块启用,从而可以提高VM中未使用的PCIe设备的性能。

nano /etc/modules
复制

添加

vfio
 vfio_iommu_type1
 vfio_pci
 vfio_virqfd #not needed if on kernel 6.2 or newer
复制

注意:在高于 6.2 的内核(Proxmox VE 8 及更高版本)中 vfio_virqfd模块是VFIO模块的一部分,因此无需在Proxmox VE 8及更高版本中加载vfio_virqfd。

更改与模块相关的任何内容后,您需要刷新 initramfs。在Proxmox VE上,这可以通过执行以下命令来完成: