Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

附录 G. 为 PCI 透传配置一个主机

通过启用 PCI 透传(PCI passthrough)功能,一个虚拟机可以象使用直接附加到这个虚拟机上的设备一样使用主机的设备。 为了启用 PCI 透传功能,您需要启用虚拟化扩展和 IOMMU 功能。以下步骤需要重新引导主机。如果这个主机已被附加到 Manager,请在执行以下操作时把主机设置为维护状态。

先决条件

过程 G.1. 为 PCI 透传配置一个主机

  1. 在 BIOS 中启用虚拟化扩展(例如,VT-d 或 AMD-Vi)。请参阅 Red Hat Enterprise Linux Virtualization and Administration Guide 中的 Enabling Intel VT-x and AMD-V virtualization hardware extensions in BIOS
  2. 编辑 grub 配置文件来启用 IOMMU。

    注意

    如果使用 IBM POWER8 硬件,则不需这一步,因为它已被默认启用。
    • 对于 Intel 系统,引导机器,把 intel_iommu=on 添加到 grub 配置文件的 GRUB_CMDLINE_LINUX 一行的最后。
      # 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=onamd_iommu=on 设置可以正常工作,您可以尝试把它们替换为 intel_iommu=ptamd_iommu=ptpt 选项只为使用透传功能的设备启用 IOMMU,并可以提供更好的功能。但不是所有硬件都支持这个选项。如果 pt 选项在您的主机上无法正常工作,请转换回使用前面的选项。
    如果因为硬件不支持中断重映射(interrupt remapping)导致透传失败,您可以在信任虚拟机的情况下启用 allow_unsafe_interrupts 选项。因为启用 allow_unsafe_interrupts 选项可能会存在通过虚拟机对主机进行 MSI 攻击的可能,因此这个选项在默认情况下没有被启用。使用以下方法启用这个选项:
    # vi /etc/modprobe.d
    options vfio_iommu_type1 allow_unsafe_interrupts=1
  3. 刷新 grub.cfg 文件并重启主机使这些改变生效:
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    # reboot
对于 GPU 透传功能,您需要在主机和虚拟机系统上都进行额外的配置。相关信息,请参阅管理指南中的 Preparing Host and Guest Systems for GPU Passthrough
如果需要启用 SR-IOV 并为虚拟机分配专门的虚拟网卡,请参阅 https://access.redhat.com/articles/2335291