附录 C. 为 PCI Passthrough 配置主机

注意

这是显示如何在 Red Hat Virtualization 上设置和配置 SR-IOV 的一系列主题中的一个。如需更多信息,请参阅设置和配置 SR-IOV

启用 PCI 透传(passthrough)可让虚拟机使用主机上的设备,就好像设备直接附加到虚拟机一样。要启用 PCI passthrough 功能,您必须启用虚拟化扩展和 IOMMU 功能。以下流程要求您重新引导主机。如果主机已附加到管理器,请务必先将主机置于维护模式。

先决条件

  • 确保主机硬件满足 PCI 设备直通和分配的要求。如需更多信息,请参阅 PCI 设备要求

为 PCI Passthrough 配置主机

  1. 在 BIOS 中启用虚拟化扩展和 IOMMU 扩展。如需更多信息,请参阅 Red Hat Enterprise Linux 虚拟化部署和管理指南中的在 BIOS 中启用 Intel VT-x 和 AMD-V 虚拟化硬件扩展
  2. 在将主机添加到 Manager 或手动编辑 grub 配置文件时,选择 Hostdev Passthrough & SR-IOV 复选框,在内核中启用 IOMMU 标志。

  3. 对于 GPU 直通,您需要在主机和客户机系统上运行其他配置步骤。请参阅 GPU device passthrough: Assigning a host GPU to a single virtual machine in Setting up an NVIDIA GPU for a virtual machine in Red Hat Virtualization

手动启用 IOMMU

  1. 通过编辑 grub 配置文件启用 IOMMU。

    注意

    如果您使用 IBM POWER8 硬件,请跳过此步骤,因为默认启用 IOMMU。

    • 对于 Intel,引导计算机,并在 grub 配置文件中的 GRUB_CMDLINE_LINUX 行的末尾附加 intel_iommu=on

      # vi /etc/default/grub
      ...
      GRUB_CMDLINE_LINUX="nofb splash=quiet console=tty0 ... intel_iommu=on
      ...
    • 对于 AMD,引导计算机,并将 amd_iommu=on 附加到 grub 配置文件中的 GRUB_CMDLINE_LINUX 行的末尾。

      # vi /etc/default/grub
      …​
      GRUB_CMDLINE_LINUX="nofb splash=quiet console=tty0 …​ amd_iommu=on
      …​
      注意

      如果检测到 intel_iommu=on 或 AMD IOMMU,您可以尝试添加 iommu=ptpt 选项只为用于透传的设备启用 IOMMU,并提供更好的主机性能。但是,该选项可能并不在所有硬件上受到支持。如果 pt 选项不适用于您的主机,则恢复先前的选项。

      如果因为硬件不支持中断重新映射而导致 passthrough 失败,您可以考虑启用 allow_unsafe_interrupts 选项(如果虚拟机受信任)。默认情况下不启用 allow_unsafe_interrupts,因为它可能会使主机暴露于来自虚拟机的 MSI 攻击。启用该选项:

      # vi /etc/modprobe.d
      options vfio_iommu_type1 allow_unsafe_interrupts=1
  2. 刷新 grub.cfg 文件并重启主机以使这些更改生效:

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    # reboot