17.2.3. NVIDIA vGPU レガシーデバイスのセットアップ


Single Root I/O Virtualization (SR-IOV) に基づくデバイス割り当てをサポートしていない NVIDIA デバイスで NVIDIA vGPU 機能を設定するには、GPU デバイス用の NVIDIA vGPU ドライバーをダウンロードし、仲介デバイスを作成して、それらを目的の仮想マシンに割り当てる必要があります。

重要

最新の vGPU デバイスの場合は、代わりに SR-IOV ベースの vGPU 割り当てを使用してください。手順は、NVIDIA vGPU デバイスのセットアップ を参照してください。

前提条件

  • GPU が vGPU 仲介デバイスをサポートしている。vGPU の作成をサポートする NVIDIA GPU の最新のリストは、NVIDIA vGPU ソフトウェアのドキュメント を参照してください。

    • ホストが使用している GPU が分からない場合は、lshw パッケージをインストールして、lshw -C display コマンドを使用します。以下の例は、システムが、vGPU と互換性がある NVIDIA Tesla P4 GPU を使用していることを示しています。

      # lshw -C display
      
      *-display
             description: 3D controller
             product: GP104GL [Tesla P4]
             vendor: NVIDIA Corporation
             physical id: 0
             bus info: pci@0000:01:00.0
             version: a1
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi pciexpress cap_list
             configuration: driver=vfio-pci latency=0
             resources: irq:16 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff
  • ご利用中の GPU は SR-IOV デバイス割り当てをサポートしていません。確認するには、次のコマンドを使用します。

    # nvidia-smi -q | grep -i "Host VGPU Mode"

    SR-IOV と互換性のない GPU の出力:

    Host VGPU Mode   : Non SR-IOV

手順

  1. NVIDIA vGPU ドライバーをダウンロードして、システムにインストールします。手順は NVIDIA ドキュメント を参照してください。
  2. NVIDIA ソフトウェアのインストーラーで /etc/modprobe.d/nvidia-installer-disable-nouveau.conf ファイルが作成されなかった場合は、/etc/modprobe.d/ に任意の名前で conf ファイルを作成し、そのファイルに以下の行を追加します。

    blacklist nouveau
    options nouveau modeset=0
  3. 現在のカーネルの初期 RAM ディスクを再生成し、再起動します。

    # dracut --force
    # reboot
  4. カーネルで nvidia_vgpu_vfio モジュールが読み込まれていること、nvidia-vgpu-mgr.service サービスが実行されていることを確認してください。

    # lsmod | grep nvidia_vgpu_vfio
    nvidia_vgpu_vfio 45011 0
    nvidia 14333621 10 nvidia_vgpu_vfio
    mdev 20414 2 vfio_mdev,nvidia_vgpu_vfio
    vfio 32695 3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1
    
    # systemctl status nvidia-vgpu-mgr.service
    nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon
       Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2018-03-16 10:17:36 CET; 5h 8min ago
     Main PID: 1553 (nvidia-vgpu-mgr)
     [...]
  5. デバイスの UUID を生成します。

    # uuidgen
    30820a6f-b1a5-4503-91ca-0c10ba58692a
  6. 検出された GPU ハードウェアに基づいて、仲介されたデバイスの設定を含む XML ファイルを準備します。たとえば、次の例では、0000:01:00.0 PCI バスで実行され、前の手順で生成された UUID を使用する NVIDIA Tesla P4 カードで nvidia-63 vGPU タイプの仲介デバイスを設定します。

    <device>
        <parent>pci_0000_01_00_0</parent>
        <capability type="mdev">
            <type id="nvidia-63"/>
            <uuid>30820a6f-b1a5-4503-91ca-0c10ba58692a</uuid>
        </capability>
    </device>
  7. 準備した XML ファイルに基づいて vGPU 仲介デバイスを定義します。以下に例を示します。

    # virsh nodedev-define vgpu-test.xml
    Node device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 created from vgpu-test.xml
  8. オプション: 仲介デバイスが非アクティブなデバイスとしてリストされることを確認します。

    # virsh nodedev-list --cap mdev --inactive
    mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
  9. 作成した vGPU 仲介デバイスを起動します。

    # virsh nodedev-start mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 started
  10. オプション: 仲介デバイスがアクティブなデバイスとしてリストされることを確認します。

    # virsh nodedev-list --cap mdev
    mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
  11. ホストの再起動後に自動的に起動するように vGPU デバイスを設定します。

    # virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 marked as autostarted
  12. vGPU リソースを共有する仮想マシンに仲介デバイスを割り当てます。そのためには、仮想マシンの XML 設定の <devices/> セクションに、以前に生成した UUID とともに、以下の行を追加します。

    • 単一の vGPU を仮想マシンに割り当てるには:

      ...
      <video>
        <model type='none'/>
      </video>
      ...
      
      <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on' ramfb="on">
        <source>
          <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/>
        </source>
      </hostdev>

      各 UUID は、一度に 1 つの仮想マシンにしか割り当てることができないのでご注意ください。

    • 複数の vGPU を仮想マシンに割り当てるには:

      ...
      <video>
        <model type='none'/>
      </video>
      ...
      
      <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on' ramfb="on">
        <source>
          <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/>
        </source>
      </hostdev>
      
      <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'>
        <source>
          <address uuid='751c2bd9-3322-4031-ad07-50a0d1367577'/>
        </source>
      </hostdev>
  13. 割り当てられた仮想マシンに vGPU 仲介デバイスの全機能が提供されるように、これらの仮想マシンに NVIDIA vGPU ゲストソフトウェアのライセンスを設定します。詳細および手順は、NVIDIA の仮想 GPU ソフトウェアのライセンスサーバーユーザーガイド を参照してください。

検証

  1. 作成した vGPU の機能をクエリーし、アクティブで永続的な機能としてリストされていることを確認します。

    # virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Name:           virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Parent:         pci_0000_01_00_0
    Active:         yes
    Persistent:     yes
    Autostart:      yes
  2. 仮想マシンを起動し、ゲストオペレーティングシステムが仲介デバイスを NVIDIA GPU として検出することを確認します。たとえば、仮想マシンが Linux を使用している場合は、以下のとおりとなります。

    # lspci -d 10de: -k
    07:00.0 VGA compatible controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 32GB] (rev a1)
            Subsystem: NVIDIA Corporation Device 12ce
            Kernel driver in use: nvidia
            Kernel modules: nouveau, nvidia_drm, nvidia

トラブルシューティング

  • 仮想マシンで RHEL 10 を使用する場合、使用できる表示プロトコルは Wayland のみです。ただし、Wayland は現在、Nvidia vGPU ゲストドライバーではサポートされていません。そのため、vGPU 上で動作する GNOME デスクトップを起動することはできません。詳細は、NVIDIA vGPU のドキュメント を参照してください。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る