第16章 仮想マシンでの GPU デバイスの管理


AI ワークロードを実行するために仮想マシン (VM) を準備したり、仮想マシンのグラフィカルパフォーマンスを強化したりするために、RHEL ホストの GPU を仮想マシンに割り当てることができます。

  • GPU をホストから接続解除し、GPU の完全な制御を仮想マシンに直接渡すことができます。
  • 物理 GPU から複数の仲介デバイスを作成し、これらのデバイスを仮想 GPU (vGPU) として複数のゲストに割り当てることができます。これは現在、一部の NVIDIA GPU でのみサポートされています。
重要

GPU の割り当ては現在、Intel 64 システムおよび AMD64 システムでのみサポートされています。

16.1. 仮想マシンへの GPU の割り当て

ホストシステムに接続されている GPU にアクセスして制御するには、GPU の直接制御を仮想マシンに渡すようにホストシステムを設定する必要があります。

注記

仮想 GPU の割り当て方法の詳細は、NVIDIA vGPU デバイスの管理 を参照してください。

前提条件

  • ホストマシンカーネルで IOMMU サポートを有効にする必要があります。

    • Intel ホストでは、VT-d を有効にする必要があります。

      1. intel_iommu=on および iommu=pt パラメーターを使用して GRUB 設定を再生成します。

        # grubby --args="intel_iommu=on iommu_pt" --update-kernel DEFAULT
      2. ホストを再起動します。
    • AMD ホストでは、AMD-Vi を有効にする必要があります。

      AMD ホストでは、IOMMU はデフォルトで有効になっているため、iommu=pt を追加してパススルーモードに切り替えることができます。

      1. iommu=pt パラメーターで GRUB 設定を再生成します。

        # grubby --args="iommu=pt" --update-kernel DEFAULT
        注記

        pt オプションは、パススルーモードで使用されるデバイスにのみ IOMMU を有効にし、ホストパフォーマンスを向上させます。ただし、すべてのハードウェアがこのオプションに対応しているわけではありません。このオプションが有効になっていない場合でも、デバイスを割り当てることは可能です。

      2. ホストを再起動します。

手順

  1. ドライバーが GPU にバインドしないようにします。

    1. GPU の接続先である PCI バスアドレスを特定します。

      # lspci -Dnn | grep VGA
      0000:02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106GL [Quadro K4000] [10de:11fa] (rev a1)
    2. ホストのグラフィックドライバーが GPU を使用しないようにします。これには、pci-stub ドライバーで GPU の PCI ID を使用します。

      たとえば、次のコマンドは、ドライバーが 10de:11fa バスに接続された GPU にバインドされるのを防ぎます。

      # grubby --args="pci-stub.ids=10de:11fa" --update-kernel DEFAULT
    3. ホストを再起動します。
  2. オプション: サポートの制限により、オーディオなどの特定の GPU 機能を仮想マシンにパススルーできない場合は、IOMMU グループ内のエンドポイントのドライバーバインディングを変更すると、必要な GPU 機能のみをパススルーできます。

    1. GPU 設定を XML に変換し、ホストドライバーに接続しないようにするエンドポイントの PCI アドレスを書き留めておきます。

      これを行うには、アドレスに pci_ 接頭辞を追加し、区切り文字をアンダースコアに変換することにより、GPU の PCI バスアドレスを libvirt 互換形式に変換します。

      たとえば、次のコマンドは、0000:02:00.0 バスアドレスに接続されている GPU の XML 設定を表示します。

      # virsh nodedev-dumpxml pci_0000_02_00_0
      <device>
       <name>pci_0000_02_00_0</name>
       <path>/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0</path>
       <parent>pci_0000_00_03_0</parent>
       <driver>
        <name>pci-stub</name>
       </driver>
       <capability type='pci'>
        <domain>0</domain>
        <bus>2</bus>
        <slot>0</slot>
        <function>0</function>
        <product id='0x11fa'>GK106GL [Quadro K4000]</product>
        <vendor id='0x10de'>NVIDIA Corporation</vendor>
        <iommuGroup number='13'>
         <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
         <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
        </iommuGroup>
        <pci-express>
         <link validity='cap' port='0' speed='8' width='16'/>
         <link validity='sta' speed='2.5' width='16'/>
        </pci-express>
       </capability>
      </device>
    2. エンドポイントがホストドライバーに接続されないようにします。

      この例では、GPU を仮想マシンに割り当て、オーディオ機能である <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/> に対応するエンドポイントがホストオーディオドライバーに接続されないようにし、代わりにエンドポイントを VFIO-PCI に接続します。

      # driverctl set-override 0000:02:00.1 vfio-pci
  3. GPU の仮想マシンへの接続

    1. PCI バスアドレスを使用して GPU 用の XML 設定ファイルを作成します。

      たとえば、GPU のバスアドレスからパラメーターを使用して、次の XML ファイル GPU-Assign.xml を作成できます。

      <hostdev mode='subsystem' type='pci' managed='yes'>
       <driver name='vfio'/>
       <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
       </source>
      </hostdev>
    2. ホストシステムにファイルを保存します。
    3. ファイルを仮想マシンの XML 設定とマージします。

      たとえば、次のコマンドは、GPU XML ファイルの GPU-Assign.xml を、System1 仮想マシンの XML 設定ファイルにマージします。

      # virsh attach-device System1 --file /home/GPU-Assign.xml --persistent
      Device attached successfully.
      注記

      GPU は、セカンダリーグラフィックスデバイスとして仮想マシンに接続されています。GPU をプライマリーグラフィックスデバイスとして割り当てることには対応していません。Red Hat では、仮想マシンの XML 設定で、エミュレートしているプライマリーグラフィックスデバイスを削除することは推奨しません。

検証

  • デバイスが仮想マシンの XML 設定の <devices> セクションに表示されます。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る