Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
仮想化ガイド
  1. 前書き
  2. I 概要
    1. 1 仮想化技術
    2. 2 仮想化シナリオ
    3. 3 Xen 仮想化の紹介
    4. 4 KVM 仮想化の紹介
    5. 5 仮想化ツール
    6. 6 仮想化コンポーネントのインストール
  3. II libvirt を利用した仮想マシンの管理
    1. 7 libvirt デーモン
    2. 8 VM ホストサーバ の準備
    3. 9 ゲストのインストール
    4. 10 基本的な VM ゲスト の管理
    5. 11 接続と認可
    6. 12 高度なストレージ設定
    7. 13 仮想マシンマネージャ を利用した仮想マシンの設定
    8. 14 virsh を利用した仮想マシンの設定
    9. 15 Xen から KVM への移行ガイド
  4. III 全ハイパーバイザ共通の機能
    1. 16 ディスクのキャッシュモード
    2. 17 VM ゲスト の時刻設定
    3. 18 libguestfs
    4. 19 QEMU ゲストエージェント
    5. 20 ソフトウエア TPM エミュレータ
    6. 21 VM ゲスト に対するクラッシュダンプの作成
  5. IV Xen を利用した仮想マシンの管理
    1. 22 仮想マシンホストの設定
    2. 23 仮想ネットワーク
    3. 24 仮想環境の管理
    4. 25 Xen 内でのブロックデバイス
    5. 26 仮想化: オプション設定
    6. 27 管理作業
    7. 28 XenStore: ドメイン間で共有される設定データベース
    8. 29 Xen の高可用性仮想化ホストとしての使用
    9. 30 Xen: 準仮想化 (PV) ゲストから完全仮想化 (FV/HVM) ゲストへの変換
  6. V QEMU を利用した仮想マシンの管理
    1. 31 QEMU の概要
    2. 32 KVM VM ホストサーバ の構築
    3. 33 ゲストのインストール
    4. 34 qemu-system-ARCH を利用した仮想マシンの実行
    5. 35 QEMU モニタを利用した仮想マシンの管理
  7. VI トラブルシューティング
    1. 36 内蔵ヘルプとパッケージのドキュメンテーション
    2. 37 システム情報とログの収集
  8. 用語集
  9. A NVIDIA カードに対する GPU パススルー の設定
  10. B GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.6

NVIDIA カードに対する GPU パススルー の設定

A.1 概要 Edit source

本章では、ホストマシンに搭載された NVIDIA GPU グラフィックカードを仮想化ゲストで使用するための手順を説明しています。

A.2 事前要件 Edit source

  • GPU パススルーは AMD64/Intel 64 アーキテクチャでのみサポートされています。

  • 本章で説明している内容は、 V100/T1000 NVIDIA ベースのカードを使用することを前提にしています。つまり、 GPU を計算処理の目的でのみ使用する想定です。

  • お使いの製品が NVIDIA Tesla 製品であることを確認しておいてください。具体的にはMaxwell, Pascal, Volta の各アーキテクチャである必要があります。

  • 本章内の設定を実施すると、対象の GPU はホスト側からは使用できなくなります。そのため、表示用の別のグラフィックカードを接続しておくか、もしくは SSH でリモートアクセスできることをあらかじめ確認しておいてください。

A.3 ホスト側の設定 Edit source

A.3.1 ホスト側の環境確認 Edit source

  1. また、お使いのホストが VT-d に対応していて、かつファームウエア側の設定で有効化されていることを確認します:

    > dmesg | grep -e "Directed I/O"
    [   12.819760] DMAR: Intel(R) Virtualization Technology for Directed I/O

    ファームウエア側の設定で VT-d が有効化されていない場合は、ホストを再起動して有効化してください。

  2. また、表示用の追加 GPU もしくは VGA カードが搭載されていることを確認します:

    > lspci | grep -i "vga"
    07:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. \
      MGA G200e [Pilot] ServerEngines (SEP1) (rev 05)

    Tesla V100 カードを使用する場合は、下記のようにしてカードが認識されていることを確認します:

    > lspci | grep -i nvidia
    03:00.0 3D controller: NVIDIA Corporation GV100 [Tesla V100 PCIe] (rev a1)

    T1000 Mobile カードを使用する場合 (たとえば Dell 5540 など) は、下記のようにしてカードが認識されていることを確認します:

    > lspci | grep -i nvidia
    01:00.0 3D controller: NVIDIA Corporation TU117GLM [Quadro T1000 Mobile] (rev a1)

A.3.2 IOMMU の有効化 Edit source

既定では IOMMU は無効化されています。有効化するには、 /etc/default/grub ファイルを編集して、起動時に有効化しておく必要があります。

  1. Intel プロセッサの場合は下記の内容を追加します:

    GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt rd.driver.pre=vfio-pci"

    AMD プロセッサの場合は下記の内容を追加します:

    GRUB_CMDLINE_LINUX="iommu=pt amd_iommu=on rd.driver.pre=vfio-pci"
  2. /etc/default/grub ファイルを編集して保存したら、あとはメインの GRUB 2 設定ファイルである /boot/grub2/grub.cfg ファイルを再生成します:

    > sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  3. ホストを再起動して、 IOMMU が有効化されていることを確認します:

    > dmesg |  grep -e DMAR -e IOMMU

A.3.3 Nouveau ドライバのブラックリスト設定 Edit source

NVIDIA カードを VM ゲストに割り当てるには、ホスト側の OS で NVIDIA GPU 向けの内蔵ドライバである nouveau を読み込まないように設定する必要があります。具体的には /etc/modprobe.d/60-blacklist-nouveau.conf ファイルを作成して下記のような内容を記述します:

blacklist nouveau

A.3.4 VFIO の設定とパススルーのための GPU 分離 Edit source

  1. あとはパススルー設定を行うカードの製造元と型番 ID を調べます。この場合、 A.3.1項 「ホスト側の環境確認」 で調べたバス番号を指定して表示させます。たとえば 03:00.0 の場合、下記のようになります:

    > lspci -nn | grep 03:00.0
    03:00.0 3D controller [0302]: NVIDIA Corporation GV100 [Tesla V100 PCIe] [10de:1db4] (rev a1)
  2. /etc/modprobe.d/vfio.conf ファイルを作成して、下記のような内容を記述します:

    options vfio-pci ids=10de:1db4
    注記
    注記

    また、お使いのカード側で追加の ids= を指定する必要があるかどうかを確認してください。これは、カードによってはオーディオデバイスも合わせて指定しなければ、カードを使用できなくなってしまうものがあるためです。

A.3.5 VFIO ドライバの読み込み Edit source

VFIO ドライバの読み込みにあたっては、下記の 3 種類の方法が用意されています。

A.3.5.1 initrd ファイル内へのドライバの組み込み Edit source

  1. /etc/dracut.conf.d/gpu-passthrough.conf ファイルを作成して、下記のような内容を記述します (頭に空白を入れる必要があることに注意してください):

    add_drivers+=" vfio vfio_iommu_type1 vfio_pci vfio_virqfd"
  2. あとは initrd ファイルを再作成します:

    > sudo dracut --force /boot/initrd $(uname -r)

A.3.5.2 ドライバの自動読み込み設定 Edit source

/etc/modules-load.d/vfio-pci.conf ファイルを作成して、下記のような内容を記述します:

vfio
vfio_iommu_type1
vfio_pci
kvm
kvm_intel

A.3.5.3 ドライバの手動読み込み Edit source

システム稼働中にドライバを手作業で読み込みたい場合は、下記のようなコマンドを実行します:

> sudo modprobe vfio-pci

A.3.6 Microsoft Windows ゲストに対する MSR の無効化 Edit source

Microsoft Windows ゲストを使用する場合、ゲスト側のクラッシュを防ぐため、 MSR (model-specific register) の無効化をお勧めします。無効化を行うには、 /etc/modprobe.d/kvm.conf ファイルを作成して、下記のような内容を記述します:

options kvm ignore_msrs=1

A.3.7 UEFI ファームウエアのインストール Edit source

GPU パススルーを正しく動作させるためには、ホスト側を UEFI ファームウエアで起動する必要があります (つまり、従来の BIOS 起動手順を使用しないようにする必要があります) 。また、 qemu-ovmf パッケージをインストールしていない場合は、まずインストールを行ってください:

> sudo zypper install qemu-ovmf

A.3.8 ホストマシンの再起動 Edit source

これまでの設定変更を有効化するため、ここでホスト側のマシンを再起動してください:

> sudo shutdown -r now

A.4 ゲスト側の設定 Edit source

本章では、ゲスト側の仮想マシンでホスト側の NVIDIA GPU を使用するための設定方法を説明しています。ゲスト側の仮想マシンをインストールするには、 仮想マシンマネージャ もしくは virt-install をお使いください。詳しくは 第9章 「ゲストのインストール をお読みください。

A.4.1 ゲスト側の設定を行うための要件 Edit source

ゲスト側の仮想マシンをインストールする際、 インストールの前に設定をカスタマイズする を選択して、下記のとおりデバイスの設定を行ってください:

  • 可能であれば Q35 チップセットをお使いください。

  • UEFI ファームウエアを利用してゲスト VM をインストールしてください。

  • 下記の擬似デバイスを追加しておいてください:

    グラフィック: Spice もしくは VNC

    デバイス: qxl, VGA, Virtio のいずれか

    詳しくは 13.6項 「ビデオ」 をお読みください。

  • ゲスト側にホスト側の PCI デバイス (ここまでの例では 03:00.0 になっています) を追加します。詳しくは 13.12項 「VM ゲスト に対するホスト側の PCI デバイスの割り当て」 をお読みください。

  • 最適な性能を引き出すため、ネットワークカードとストレージに対して virtio ドライバを使用しておくことをお勧めします。

A.4.2 グラフィックカードドライバのインストール Edit source

A.4.2.1 Linux ゲストの場合 Edit source

手順 A.1: RPM ベースのディストリビューションの場合
  1. https://www.nvidia.com/download/driverResults.aspx/131159/en-us から RPM パッケージをダウンロードします。

  2. ダウンロードした RPM パッケージをインストールします:

    > sudo rpm -i nvidia-diag-driver-local-repo-sles123-390.30-1.0-1.x86_64.rpm
  3. リポジトリを更新して cuda-drivers パッケージをインストールします。下記のコマンドは SUSE ディストリビューション向けですので、それ以外のものをお使いの場合はそれぞれに合わせて実施してください:

    > sudo zypper refresh && zypper install cuda-drivers
  4. ゲスト VM を再起動します:

    > sudo shutdown -r now
手順 A.2: 一般的なインストーラを使用する場合
  1. 一般的なインストーラを使用する場合、 NVIDIA ドライバモジュールをコンパイルする必要があることから、 gcc-c++kernel-devel の各パッケージをインストールしておいてください。

  2. また、 NVIDIA が提供するドライバには署名が付与されていないことから、ゲスト側で Secure Boot を使用している場合は、無効化してください。 YaST GRUB 2 モジュールを使用することで、 Secure Boot を無効化することができます。詳しくは 14.1.1項 「openSUSE Leap での実装」 をお読みください。

  3. あとは https://www.nvidia.com/Download/index.aspx?lang=ja-jp からドライバのインストールスクリプトをダウンロードし、実行可能な状態にしてから実行してください。これでドライバのインストールが完了します:

    > chmod +x NVIDIA-Linux-x86_64-460.73.01.run
    > sudo ./NVIDIA-Linux-x86_64-460.73.01.run
  4. あとは CUDA ドライバを https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=SLES&target_version=15&target_type=rpmlocal からダウンロードして実行し、画面上に表示された手順に従ってインストールしてください。

注記
注記: 表示の問題について

NVIDIA ドライバをインストールすると、 仮想マシンマネージャ はゲスト OS のディスプレイに接続できなくなります。ゲスト VM にアクセスするには、 ssh 経由でログインするか、もしくはシリアルコンソールか専用の VNC サーバ経由でログインする必要があります。また画面の乱れを防ぐため、ディスプレイマネージャを停止して無効化しておく必要があります:

> sudo systemctl stop display-manager && systemctl disable display-manager
手順 A.3: Linux ドライバの動作テスト
  1. CUDA のサンプルテンプレートのあるディレクトリに移動します:

    > cd /usr/local/cuda-9.1/samples/0_Simple/simpleTemplates
  2. あとは simpleTemplates ファイルをコンパイルして実行します:

    > make && ./simpleTemplates
    runTest<float,32>
    GPU Device 0: "Tesla V100-PCIE-16GB" with compute capability 7.0
    CUDA device [Tesla V100-PCIE-16GB] has 80 Multi-Processors
    Processing time: 495.006000 (ms)
    Compare OK
    runTest<int,64>
    GPU Device 0: "Tesla V100-PCIE-16GB" with compute capability 7.0
    CUDA device [Tesla V100-PCIE-16GB] has 80 Multi-Processors
    Processing time: 0.203000 (ms)
    Compare OK
    [simpleTemplates] -> Test Results: 0 Failures

A.4.2.2 Microsoft Windows ゲストの場合 Edit source

重要
重要

NVIDIA ドライバをインストールする前に、まずはゲスト側の libvirt 設定内に <hidden state='on'/> を追加して、ドライバからハイパーバイザを隠蔽する必要があります。たとえば下記のようになります:

<features>
 <acpi/>
 <apic/>
 <kvm>
  <hidden state='on'/>
 </kvm>
</features>
  1. あとは https://www.nvidia.com/Download/index.aspx から NVIDIA ドライバをダウンロードして、インストールします。

  2. また、 https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64 から CUDA ツールキットをダウンロードしてインストールします。

  3. インストールが完了すると、 NVIDIA のデモサンプルがゲスト内の Program Files\Nvidia GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite ディレクトリに展開されます。

このページを印刷