付録G PCI パススルーを有効にするためのホストの設定
PCI パススルーを有効化すると、デバイスが仮想マシンに直接アタッチされているかのように、ホストのデバイスを仮想マシンで使用することができます。PCI パススルー機能を有効化するには、仮想化拡張機能および IOMMU 機能を有効化する必要があります。以下の手順では、ホストを再起動する必要があります。すでにホストが Manager にアタッチされている場合には、ホストをメンテナンスモードに設定してから以下の手順を実施するようにしてください。
前提条件
- ホストのハードウェアが PCI デバイスのパススルーと割り当ての要件を満たしていることを確認してください。詳しい情報は「PCI デバイスの要件」を参照してください。
手順G.1 PCI パススルーを有効にするためのホストの設定
- BIOS の仮想化拡張機能および IOMMU 拡張機能を有効化してください。詳しい情報は、『Red Hat Enterprise Linux 仮想化の導入および管理ガイド』の「BIOS で Intel VT-x と AMD-V の仮想化ハードウェア拡張を有効にする」を参照してください。
- ホストを Manager に追加する際に ホストデバイスパススルー & SR-IOV のチェックボックスを選択するか、手動で
grub
設定ファイルを編集して、カーネルの IOMMU フラグを有効化します。- 手動で
grub
設定ファイルを編集する方法は手順G.2「IOMMU の手動での有効化」を参照してください。
- GPU パススルーは、ホストとゲストシステムの両方で追加の設定手順を実行する必要があります。詳しい情報は『管理ガイド』の「GPU パススルーに向けたホストおよびゲストシステムの準備」を参照してください。
手順G.2 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
が機能する場合は、intel_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 を参照してください。