Proxmox VE環境において、NVIDIA製GPUをゲストOSに直接パススルーすることで、高速なグラフィックス処理や計算処理を実現する手法をご紹介いたします。本記事では、ハードウェアおよびBIOSの前提条件から、VFIOドライバ設定、Error 43対策まで、実践的な手順を詳細に解説いたします。
1. 前提条件とハードウェア準備
IOMMUのサポート
- CPUおよびマザーボード:
Intel VT-dまたはAMD-Viに対応している必要があります。 - BIOS設定:
BIOS上で「VT-d」(Intelの場合)または「IOMMU」(AMDの場合)を有効に設定してください。
GRUB設定の変更
GRUBの設定ファイル /etc/default/grub
に以下のオプションを追加し、システム再起動後にIOMMUが有効になっていることを確認します。
- Intelの場合の例
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
- 設定変更後、以下のコマンドでGRUBの更新を実施します。
update-grub
2. IOMMUグループの確認
パススルーを正しく実現するため、GPUが他のデバイスと同一のIOMMUグループに属していないことを確認する必要があります。専用のIOMMUグループに所属していることが望ましく、専用グループでない場合は、デバイスの分離やグループ分割の対策を検討してください。
3. VFIOドライバへのデバイスバインド
GPUおよびその関連機能(例:HDオーディオ機能)をVFIOドライバへバインドするため、以下の設定を行います。
/etc/modprobe.d/vfio.conf の設定例
利用するGPUに応じたデバイスID(例:GeForce GTX 1080の場合は 10de:1b80
とHDオーディオ用 10de:10f0
)に置き換えてください。
options vfio-pci ids=10de:1b80,10de:10f0 disable_vga=1
設定変更後は、initramfsの再生成を行い、システムの再起動が必要です。
update-initramfs -u
4. ゲストVM側の設定とError 43対策
NVIDIAの消費者向けGPUは、仮想環境での動作検知により「Error 43」を返す場合があります。これを回避するため、ゲストVMの設定ファイルに以下のパラメータを追加してください。
ゲストVM設定例(/etc/pve/qemu-server/.conf)
machine: q35
hostpci0: 01:00.0,pcie=1,x-vga=1
args: -cpu host,kvm=off
- machine:
「q35」を指定することで、より新しいプラットフォームエミュレーションを利用可能にします。 - hostpci0:
GPUのPCIアドレス(例:01:00.0
)を正確に指定してください。 - args:
-cpu host,kvm=off
により、ゲストOSから仮想化検知を隠蔽し、NVIDIAドライバがエラーを返さないように設定します。
5. その他の留意点
GPUのVBIOSの利用
場合によっては、GPUのVBIOSを抽出し、ゲストOSにロードする必要がある場合もございます。特に、上記の設定だけでError 43が解消されない場合は、VBIOSのカスタム設定を検討してください。
環境依存の調整
Proxmox VEのバージョン、マザーボードのBIOS、利用するGPUによって設定内容は変動する可能性がございます。実装前に、Proxmox公式Wikiや関連コミュニティの最新情報を確認し、十分な検証とバックアップを実施することを強く推奨いたします。
まとめ
本記事では、Proxmox VE環境でNVIDIA GPUをゲストOSにパススルーするための手順を以下のポイントに沿って解説いたしました。
- IOMMUの有効化とハードウェア要件の確認
- GRUB設定の変更によるIOMMU有効化
- IOMMUグループの確認
- VFIOドライバへのGPUバインド設定
- ゲストVM設定におけるError 43対策
これらの設定を正確に実施することで、ゲストOSから直接NVIDIA GPUを活用し、ハイパフォーマンスなグラフィックス処理や計算処理を実現することが可能となります。今後のシステム運用やトラブルシューティングの際にも、本記事が参考となれば幸いです。