付録C PCI パススルーを有効にするためのホストの設定
これは、Red Hat Virtualization で SR-IOV を準備および設定する方法を示す一連のトピックの 1 つです。詳細は、Setting Up and Configuring SR-IOV を参照してください。
PCI パススルーを有効化すると、デバイスが仮想マシンに直接アタッチされているかのように、ホストのデバイスを仮想マシンで使用することができます。PCI パススルー機能を有効化するには、仮想化拡張機能および IOMMU 機能を有効化する必要があります。以下の手順では、ホストを再起動する必要があります。すでにホストが Manager にアタッチされている場合には、最初にホストがメンテナンスモードに設定されていることを確認してください。
前提条件
- ホストハードウェアが PCI デバイスパススルーおよび割り当ての要件を満たしていることを確認してください。詳細は、PCI Device Requirements を参照してください。
PCI パススルーを有効にするためのホストの設定
- BIOS の仮想化拡張機能および IOMMU 拡張機能を有効化してください。詳細は、Red Hat Enterprise Linux 仮想化の導入および管理ガイド の BIOS での INTEL VT-X と AMD-V の仮想化ハードウェア拡張の有効化 を参照してください。
ホストを Manager に追加する際に Hostdev Passthrough & SR-IOV のチェックボックスを選択するか、手動で grub 設定ファイルを編集して、カーネルの IOMMU フラグを有効化します。
- 管理ポータルから IOMMU フラグを有効化する方法については、Adding Standard Hosts to the Red Hat Virtualization Manager および Kernel Settings Explained を参照してください。
- 手動で grub 設定ファイルを編集する方法については、IOMMU の手動での有効化 を参照してください。
- GPU パススルーを有効にするには、ホストとゲストシステムの両方で追加の設定手順を実行する必要があります。詳細は、Setting up an NVIDIA GPU for a virtual machine in Red Hat Virtualization の GPU device passthrough: Assigning a host GPU to a single virtual machine を参照してください。
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 の場合は、マシンを起動し、grub 設定ファイルの
GRUB_CMDLINE_LINUX
行の末尾にamd_iommu=on
を追加します。# 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
オプションがお使いのホストで機能しない場合は、以前のオプションに戻してください。ハードウェアが割り込みの再マッピングをサポートしていないためにパススルーが失敗する場合は、仮想マシンが信頼できるのであれば
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 を参照してください。