附录 C. 为 PCI Passthrough 配置主机
这是显示如何在 Red Hat Virtualization 上设置和配置 SR-IOV 的一系列主题中的一个。如需更多信息,请参阅设置和配置 SR-IOV
启用 PCI 透传(passthrough)可让虚拟机使用主机上的设备,就好像设备直接附加到虚拟机一样。要启用 PCI passthrough 功能,您必须启用虚拟化扩展和 IOMMU 功能。以下流程要求您重新引导主机。如果主机已附加到管理器,请务必先将主机置于维护模式。
先决条件
- 确保主机硬件满足 PCI 设备直通和分配的要求。如需更多信息,请参阅 PCI 设备要求。
为 PCI Passthrough 配置主机
- 在 BIOS 中启用虚拟化扩展和 IOMMU 扩展。如需更多信息,请参阅 Red Hat Enterprise Linux 虚拟化部署和管理指南中的在 BIOS 中启用 Intel VT-x 和 AMD-V 虚拟化硬件扩展。
在将主机添加到 Manager 或手动编辑 grub 配置文件时,选择 Hostdev Passthrough & SR-IOV 复选框,在内核中启用 IOMMU 标志。
- 要从管理门户中启用 IOMMU 标志,请参阅将标准主机添加到 Red Hat Virtualization Manager 和内核设置说明。
- 要手动编辑 grub 配置文件,请参阅手动启用 IOMMU。
- 对于 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
通过编辑 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=on
可以正常工作,您可以尝试添加iommu=pt
或amd_iommu=pt
。pt
选项只为用于透传的设备启用 IOMMU,并提供更好的主机性能。但是,该选项可能并不在所有硬件上受到支持。如果pt
选项不适用于您的主机,则恢复为上一选项。如果因为硬件不支持中断重新映射而导致 passthrough 失败,您可以考虑启用
allow_unsafe_interrupts
选项(如果虚拟机受信任)。默认情况下不启用allow_unsafe_interrupts
,因为它可能会使主机暴露于来自虚拟机的 MSI 攻击。启用该选项:# vi /etc/modprobe.d options vfio_iommu_type1 allow_unsafe_interrupts=1
刷新 grub.cfg 文件并重启主机以使这些更改生效:
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot
要启用 SR-IOV 并将专用虚拟 NIC 分配给虚拟机,请参阅 https://access.redhat.com/articles/2335291。