【概要】

従来,VMware vSphereまたはVMware ESXi上のVMにおいて,Direct3D等を利用させるには,PCIeパススルーを利用する必要があったが,その場合1枚のグラフィックカードに1つのVMしか利用できない課題があった。VMware vSphere 5.1以降またはVMware ESXi 5.1以降で,NVIDIAのグラフィックカードのGPUを利用したグラフィックリソースのシェアが可能となったため,vSGAと呼ばれる方式での対応方法,環境構築手順を残す。

 

【NVIDIA vGPU on VMwareの制限や前提条件】

基本的なvSGAを利用における制限として,そもそも,NVIDIA vGPUの対応には本来TeslaのM-Classが必要となる(Quadro FXシリーズやNVRシリーズは不可)が,NVIDIAのQuadro 4000でも動作を確認した。恐らくFermi世代以降のQuadroであれば,NVIDIAのGRID対応ドライバで認識すると思われるが,同じFermi世代のGeForceやTeslaのCシリーズはドライバが対応せずインストールできなかったため注意が必要となる。また,最新のドライバでは対応状況が不明(公式にはTeslaのMシリーズのみが対応としている)なため,実際に試してみるほかないと思われる。

 

それ以外の制限や前提条件は以下のとおり。

vSGAに利用するGPUは、ESXiの標準コンソール出力用としては使えない。

つまり、ESXiの標準コンソール出力用(ようは通常のディスプレイへの画面出力)のGPUだと、vSGA用のGPUとして利用できない。そのため、vSGAを利用するには、vSGA用のGPUの他に、ESXiの標準コンソール出力用の適当なVGAカードが必要になる。

ESXiの標準コンソール出力用のカードについては特に要件がない。IntelのGPU内蔵CPUからの出力でもかまわないし、他のnVIDIAのVGAを追加で利用してもかまわない。

 

【セットアップ手順】

  1. 2つのGPUをマシンに追加したら、ESXIを運用するサーバー等マシンのBIOS上で,ESXiの標準コンソール出力用VGAをPrimaryに、vSGA用のGPUをSecondaryに設定する。BIOS上で複数VGAカードのプライオリティ設定ができない場合は、ESXiの標準コンソール出力用VGAをPCI-Expressのスロット1番に、vSGA用のGPUをそれ以降のPCI-Expressスロットに挿す。 
  2. ドライバファイルのダウンロード後、ファイルを解凍し、vSphere ClientやSCPでVMwareのDataStore上の適当なディレクトリに解凍後にできたディレクトリごとアップロードする。なお,ドライバのダウンロードは,「製品のタイプ」でGRID,製品シリーズで「GRIDシリーズ」(VMware ESXi 5.5まで)又は「NVIDIA GRID vGPU」(VMware ESXi 6.0以降)を選択する必要があり,GeForceのドライバやQuadroのドライバーには,NVIDIAのVMwareドライバは含まれないので,ドライバ検索の際には注意すること。
  3. ドライバのインストールは,他のオフラインバンドル版のvibインストールと同様の手順となる。当然,ドライバのインストールは、メンテナンスモードにしないと実行できない、以下のコマンドを実行(ただしドライバ入ったディレクトリをDataStore上に作成した/tmp/nvidia/にある場合のコマンドなので、各自の環境に合わせて読み替えること)

    esxcli software vib install --no-sig-check -d /vmfs/volumes/datastore1/tmp/nvidia/NVD.NVIDIA_bootbank_NVIDIA-VMware_304.76-1OEM.510.0.0.802205-offline_bundle-999851.zip --maintenance-mode
  4. ドライバがインストールされたか確認する。インストール後のReboot RequiredがFalseになっているが、マニュアルによるとRebootが推奨とのことなので、vibのリスト確認後は念のため、再起動を実施する。

    esxcli software vib list | grep NVIDIA

    なお、アンインストールする場合は、以下のコマンドを実行する

    esxcli software vib remove --vibname=NVIDIA-VMware_ESXi_5.1_Host_Driver
  5. 再起動してきたら、Xorgを起動する。Xorgの起動は、vSphere Clientの構成、セキュリティプロファイルでサービスの構成からXorgを選択して起動するか、以下のコマンドで起動を実行する。

    /etc/init.d/xorg start

    なお,引数をstatusに指定した場合は,Xorgの実行状態を確認するコマンドとなる。

    /etc/init.d/xorg status

 

-------------------------------

 

【トラブルシューティング】

ESXiのホストに増設されたVGAやGPUのハードウェア情報を確認、PCIのスロットとそこに刺さっているVGAやGPUのハードウェアIDが表示される。複数のVGA等を挿している場合に、物理スロットの位置確認とログに表示されるPCIスロット番号との比較等に利用。

esxcli hardware pci list -c 0x0300 -m 0xff

 

本来、起動時に自動でロードされるvGPUのモジュールがロードされていない場合は,モジュールを手動でロードする。

esxcli system module load -m nvidia

 

ログ上でvGPUのモジュールの挙動を確認する、NVRMをキーワードにしてvNIDIA系のドライバ及びモジュールに関するログが検索可能

 grep NVRM /var/log/vmkernel.log

 

ログ上でXorgのログを確認する

 cat /var/log/Xorg.log