ESXi6.7+CentOS7+GPUパススルー+cuda11.0インストールしてみる

テーマ的には新鮮味のないエントリーですが、nvidia-xconfigするとCentOS7のXウィンドウズが起動しないという事実を突き止めることができたので備忘録としてメモ。

環境要件
ハードウェア富士通 TX1310 M3
仮想化ESXi6.7 Update3
グラフィックボードNVIDIA GTX1050Ti
ゲストOSCentOS7.8
ドライバーNVIDIA-Linux-x86_64-450.51.run
CUDACUDA 11.0.3

Yahoo!ショッピングで購入した中古のNVIDIA GeForce GTX1050Ti

補助電源を必要とせず、富士通 TX1310 M3のコンパクトな筐体に収まるショート基盤のPalit GeForce GTX1050Ti です。マザーボードに差してDisplay Portから変換ケーブルでHDMIディスプレイに接続すると何もせずに映りましたが、今回は ESXi のゲストOSにコンソールでログインしてXウィンドウを起動してnvidia-smi コマンドが通ることを目標にしました。

1.ESXi のGPUパススルー設定

グラフィックボードをVMから認識できるようにする設定をしていきます。左ペインの[ホスト]-[管理]をクリックして[ハードウェア]-[PCIデバイス]-[NVIDIA Corporation GP107[GeForce GTX 1050Ti]] を選択して[パススルーの切り替え]をクリック。同様にAudio デバイスもパススルーして再起動します。

2.VMの新規作成

「ML Server」という名前でCentOS7.isoからEFI起動オプションのVMを新規作成します。

仮想ハードウェア 要件
CPU 4
メモリ 16GB(すべてのゲストメモリを予約(すべてロック)
ハードディスク 100GB

[仮想マシンオプション]から[起動オプション]-[ファームウェア]-[EFI]を選択。

ゲストOSを起動してインストーラーを開始。今回は「サーバー(GUI使用)」をベースとします。

ここからはCentOS での作業となります。

3.nouveau を無効にする

GUI起動したらroot からCUIログインに変更して再起動します。

# systemctl set-default multi-user.target

/etc/modprobe.d/modprobe.conf と/etc/modprobe.d/blacklist-nouveau.conf ファイルでOS起動と同時に立ち上がる標準のグラフィックドライバー nouveau をブラックリストに登録します。

# vi /etc/modprobe.d/modprobe.conf

blacklist nouveau

# vi /etc/modprobe.d/blacklist-nouveau.conf

options nouveau modeset=0
blacklist nouveau

yum で最新のカーネルに更新してnouveau ドライバーを無効にした起動イメージを作ります。

# yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) 

CentOS によるdracut では明示的に–omit-drivers nouveau しないとだめでした。

# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
# dracut --force --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)

いったん、VMをシャットダウンしてPCIデバイスとしてグラフィックボードを追加します。

Audioデバイスもついでに追加して[仮想マシンオプション]-[詳細]-[構成の編集]から下記設定をします。(何故だかは分かりません。)

hypervisor.cpuid.v0 FALSE

4.VMを起動→CUDAをインストール

CUDAをインストールするため、再びのCentOSでの作業となります。nouveauがロードされていないことを確認します。

$ lsmod | grep nouveau
何も表示されなければOK
$ lspci | grep -i nvidia
13:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) 13:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)

つづいてCUDAのコンパイルに必要なgcc gcc-c++ dkms などをyum で一気に揃えます。

# yum install epel-release
epelリポジトリを導入
# yum install --enablerepo=epel dkms
# yum install pciutils gcc gcc-c++ libglvnd libglvnd-devel
# yum install centos-release-scl
scl(Software Collection) を導入
# yum install devtoolset-9
# yum install llvm-toolset-7
rhel ツールセットを導入
# scl enable devtoolset-9 bash
# scl enable llvm-toolset-7 bash

あらかじめhttps://developer.nvidia.com/cuda-toolkit からwgetでクライアントにダウンロードしたcuda_11.0.3_450.51.06_Linux.run ファイルをscp で転送して実行権限を与えて実行します。

$ wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_Linux.run
$ chmod 705 ./cuda_11.0.3_450.51.06_Linux.run
$ sudo sh ./cuda_11.0.3_450.51.06_Linux.run

cudaインストールのついでにグラフィックドライバーもインストールできる優れものなのですが、nvidia-xconfig をオプションで有効にするとXウィンドウズが 「no screens found」となり起動しません。(/var/log/Xorg.0.log を良く読む。)最終的にはnvidia-uninstallしてドライバーのアンインストールが必要でした。このあたりの細かい設定は再調査が待たれます。ここでは、drm-kernelオプションと共に無効にしてインストールしました。

パスを登録してVMを再起動します。

$ vi .bashrc
export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ source ~/.bashrc
$ echo $PATH
パス確認
# shutdown -r now

nvidia-smi と入力すると

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

エラーでドライバーが認識されていない模様。NVIDIA公式から単体でNVIDIA-Linux-x86_64-450.51.runをダウンロード、インストール、再起動すると良かったようです。

$ startx

# nvidia-smi が通りました。こんどは、anaconda, cuDNN, TensorFlow インストールしたいですね。

参考URL

インストールガイド CentOS 7.5 minimal with MATE & Nvidia CUDA 9.2 – 脱N00Bしたいエンジニア

ESXi6.7でGPUパススルーしてCUDA10とChainer4.4を使ってみる – Qiita

OS付属コンパイラが古すぎて困った人へ | HPCシステムズ Tech Blog

slurm+mpich+cudaの設定(CentOS7) – 株式会社バイオモデリングリサーチ

仮想マシンのmacアドレスの設定

ESXiの仮想マシン(CentOS7)のmacアドレスをコマンドから確認する方法をメモします。

VMware仮想マシンのMACアドレスを固定にする方法 を参考にしました。

# cd /vmfs/volumes/<データストア名>/<仮想マシン名>

# vi <仮想マシン名>.vmx
ethernet0.generatedAddress = "macアドレス"

後は、割り振られたmacアドレスを/etc/sysconfig/network-scripts/ifcfg-ens192 に

HWADDR="macアドレス"

と設定、ヤマハルーターから

dhcp scope bind 2 192.168.101.11 <macアドレス>

して作業終了です。

ESXiで仮想マシンをインストールしてみた

ESXiのネットワーク設定をいろいろ試した結果、同一セグメントであれば仮想マシン作成時に「ネットワークアダプタ」としてポートグループから仮想アダプタを選択でき、OSインストール時にIPアドレスの指定さえすれば物理NICが一つしかなくても問題なかったようです。(追加の物理NICはセカンダリのネットワークからWeb管理するときに使いたいと思います。)

今回はCentOS7を仮想マシンとしてインストールしてみました。

[仮想マシンの作成/登録]からウィザード開始。「新規仮想マシンの作成」を選択して [次へ] をクリック。

2.名前とゲストOSの選択で、名前を「Web Server」と入力。ゲストOSファミリを「Linux」、ゲストOSのバージョンで「CentOS7」を選択して[次へ] をクリック。

3.ストレージを選択で「datastore1」を選択、[次へ] をクリック。

4.設定のカスタマイズで仮想ハードウェアのスペックを[CPU] を「1」コア(物理CPUのコアを上限としてお好みで設定)。[メモリ]を「8」GB、[ハードディスク]を「100」GBに設定しました。[ネットワークアダプタ] は「VM Network」、CD/DVDドライブには、

あらかじめ内蔵HDDにアップロードしておいたISOファイルを指定したいので[データストアISOファイル]を選択、行頭三角のアイコンをクリック、展開してインストールメディアを[参照] ボタンからCentOS7のインストールイメージを選択します。ISOファイルのアップロードは[ストレージ]-[データストアブラウザ] から[アップロード] をクリックすると作業できます。(システムドライブにアップロードすると不意の障害があるかもしれないので別途、内蔵HDDを用意しています。)

5.設定の確認をして[完了]ボタンをクリックすると構成が完了します。

構成した仮想マシン「Web Server」を選択して[パワーオン]すると最初、ネットワークインストール(PXE)が起動してうまくいかないときがありますが慌てず、[パワーオフ]して[アクション]-[設定の編集]から[CD/DVDドライブ]を展開して、[パワーオン時に接続]チェックを入れ直して[接続]にもチェックし直し[パワーオン]すると無事、CentOS7のインストーラーが起動しました。[コンソールを新しいウィンドウで開く]をクリックして開始します。

使用する言語「日本語」を探して[続行(C)] をクリック・・・

インストールの概要から各種設定を行っていきます。

「ソフトウェアの選択」でベース環境から「インフラストラクチャーサーバー」、環境のアドオンから「開発ツール」を選択して[完了(D)] します。

「ネットワークとホスト名」から[設定(O)] をクリック、IPアドレスを手動で設定。最後にスイッチを「オン」にして接続します。

ここではIPアドレスを192.168.101.11としています。

ここでは「インストール先」を自動としていますが適時、/boot /root /swap の領域をカスタマイズすることができます。KDUMPは異常終了したときのメモリの状態をHDDに記録するサービスで適宜、有効にします。すべての項目が設定し終わると[インストールの開始]がグレーアウトからアクティブになります。開始をクリックするとインストールが始まりroot とユーザーアカウントのパスワード設定をします。プロンプト画面が表示されればインストール完了です。

お疲れ様でした。

続・ネットワークの設定

先週注文した物理NICが届いたので早速、PCIeスロットに取り付けました。計算した通り、基盤の短いデスクトップNICアダプターをグラフィックボードの空冷ファンに干渉しないように取り付け、サーバーアダプターのほうはグラフィックボードの遠いスロットに設置することができました。

UIで確認すると2つの物理NICが自動で認識されていました。Time is Moneyといったところでしょうか。

不意に電源が入ることを防ぐためにデフォルトで有効になっているWake on LANを無効にしてみます。

# vsish -e set /net/pNics/vmnic0/wol d
# vsish -e set /net/pNics/vmnic1/wol d
# vsish -e set /net/pNics/vmnic2/wol d
# esxcli network nic get -n vmnic0 Advertised Auto Negotiation: true Advertised Link Modes: Auto, 10BaseT/Half, 100BaseT/Half, 10BaseT/Full, 100BaseT/Full, 1000BaseT/Full Auto Negotiation: true Cable Type: Twisted Pair Current Message Level: -1 Driver Info: Bus Info: 0000:00:1f:6 Driver: ne1000 Firmware Version: 0.8-4 Version: 0.8.4 Link Detected: true Link Status: Up Name: vmnic0 PHYAddress: 0 Pause Autonegotiate: false Pause RX: false Pause TX: false Supported Ports: TP Supports Auto Negotiation: true Supports Pause: false Supports Wakeon: true Transceiver: Virtual Address: Wakeon: Disabled

# poweroff

ただし、電源投入再起動すると自動で有効に戻ってしまうのですね。今日は作業終了です。

物理NIC買い忘れた

ESXiホストと仮想マシンのIPアドレスは別に必要だったため、物理NICをAmazon.co.jp でお買い物。

ギガビット デスクトップPCI-e 10/100/1000 Mbps自動ネゴシエーションネットワークアダプタ(インテル 82574L / EXPI9301CT チップセット)NIC、シングル銅RJ45ポート(短縮版)

インテル PRO/1000 PT サーバ・アダプタ EXPI9400PT

届くのが来週なのでESXiホストのオレオレ認証局からSSL証明書をインポートしました。

「自己認証局(CA)と自己証明書(SSL)を Windows 版の XCA で管理してみる」

が詳しいので参照することをお勧めしますが、インポートはEdgeブラウザの[設定] -[証明書の管理] – [インポート]-[証明書のインポートウィザードの開始]から、作成した証明書を[インポート]しました。

ブラウザからホスト名でエラーなしでアクセスできることを確認して作業終了です。

来週こそゲストOSインストールしたいです。

VMware ESXiのホスト設定してみる

前回はRTX810のマルチセッションを張ってセカンダリのネットワークアドレスをルーティングする設定をしました。

今回はVMware ESXiをSSH接続してコマンドから、セカンダリのネットワークにホスト設定していきたいと思います。チュートリアル | Vmware ESXi IPアドレスの設定

SSHはTeraTermのショートカットをデスクトップに作成。コマンドラインをプロパティから設定します。

"C:\Program Files (x86)\teraterm\ttermpro.exe" <IP Address>:22 /auth=challenge /user=root /ask4passwd

チャレンジレスポンス認証でパスワード入力、ホストにSSHログインして作業開始。

メンテナンスモードに切り替え
# esxcli system maintenanceMode set --enable true
IPアドレス一覧確認 # esxcli network ip interface ipv4 get
静的IPアドレスを変更 # esxcli network ip interface ipv4 set -i vmk0 -I 192.168.101.10 -N 255.255.255.0 -t static -g 192.168.101.1
ゲートウェイを変更 # esxcli network ip route ipv4 add --gateway 192.168.101.1 --network 0.0.0.0

メンテナスモードを終了して再起動
# esxcli system maintenanceMode set --enable false # reboot

続いて、ブラウザから http://192.168.101.10 と入力して管理画面にログインしてホスト設定をします。

左ペインの[ネットワーク]-[TCP/IPスタック]-[デフォルトのTCP/IP]をクリックして左上のえんぴつ印の[設定の編集]からホスト名とドメインを入力して[保存]して作業終了です。

次はゲストOSのインストールをしてみたいですね。

ヤマハルーターRTX810のマルチセッション- DHCP固定IP払い出し-フィルタ型ルーティング設定してみる

新たに固定IPが必要な方にプロバイダ契約を変更せずにマルチセッションで2つ目のプロバイダ接続ができる業界最安値のインターリンク のNTT東西フレッツ対応「フレッツZOOT NEXT お試し最大2か月無料」を申し込み早速、ヤマハルーターRTX810 をフレッツ光ネクストのONU「PR-500MI」にブリッジ接続にしてマルチセッションしてみました。

今回は、YAMAHA RTX1200 。マルチセッション組む時に見落とした事
を参考にコマンドから設定してみました。


詳細は 同時接続するときの設定例ヒント/アイディア|FAQ for YAMAHA RT Series / PPPoE が役に立ちました。

デフォルトゲートウェイのpp 1, pp 2 にプライマリとセカンダリのプライベートIPアドレスをフィルターするパケットルールを適用して上記資料にあるようにNATディスクリプタを共有設定しました。

ip route default gateway pp 1 filter 600000 gateway pp 2 filter 600001
ip lan1 address 192.168.100.1/24
ip lan1 secondary address 192.168.101.1/24

ip filter 600000 pass 192.168.100.0/24 * * * *
ip filter 600001 pass 192.168.101.0/24 * * * *

dns server select 600000 pp 1 any . 192.168.100.1-192.168.100.254 dns server select 600001 pp 2 any . 192.168.101.1-192.168.101.254
dhcp scope 1 192.168.100.2-192.168.100.254/24 dhcp scope 2 192.168.101.2-192.168.101.254/24
pp select 2
ip pp nat descriptor 1000
dhcp scope bind 2 192.168.101.10 ab:cd:ef:12.34:56 ←端末のmacアドレス(DHCP固定IP払い出し

あとはコントロールパネルから固定IPを設定したWindows10からインターネットに接続できることを確認して作業終了です。

次はVMwareのホスト設定したいですね。

VMware ESXi6.7をインストールしてみた

先週の続きは、富士通PRIMERGY TX1310 m3 に2.5インチSSDを換装するためのケーブルが届き無事、SSDでのUEFI(BIOS)起動ができたところまででした。

今週は、VMware ESXi6.7 をSSDにインストールしようとしてつまづいた点をメモ。

VMware ESXi リンク:VMware vSphere Hypervisor 6.7 ダウンロード センター にたどり着き、ESXi6.7本体をダウンロード。ライセンスキーをメモしてDVDにiso として焼く→ドライブからインストーラーが起動・・・しませんorz
Google先生に訊いてみるとDVDブートは機種特有の問題があるようでした。

【TECHブログ】RX1330M3とTX1310M3ご購入時の検討点 | PG-Direct

VMware ESXi 6.x(5.x)とDebian系Linux

インストールする際には、以下のツールをご用意ください。

USBのDVDROMドライブ(機械についているのに。。。です。別途用意します。)

DVDがダメならUSBならと rufus.exe を使ってUSB起動ドライブを作成、メモリを差してサーバー起動するとESXiインストーラーが始まったようです。

VMware vSphere Hypervisor(ESXi)をインストールしてみる を参考にセットアップするとインストール完了。画面からroot アカウント、パスワードを入力してログインできました。

次はルーターやホストのネットワーク設定をしてみたいですね。

TX1310 m3のHDDベイ→2.5インチSSD延長ケーブル買い忘れた

購入前から何か嫌な予感がしていたのですよね。

TX1310 m3 が自宅に届いたので開梱したところ、3.5インチHDDベイの構造的に本体直付けのケーブルレスになっており、2.5インチSSDを取り付けるにはSATA、電源ケーブルを延長しないとマズかったようです。

幸い、Amazon.co.jp で追加注文して事なきを得ました。

コムイ 7+15pin SATA延長ケーブル オスtoメス 電源+データ伝送 (0.3m)

届くのが来週とのことなのでそれまで作業はお預けです…orz

Crucial SSD購入報告

現役のLinuxが導入から5年経ち、CentOS6 のサポート期限につきOSの更新時期に来ていたので改めてハードウェアを購入することにしました。

次期サーバー機はXeon 4コア32GBメモリ、1TB HDD x2の【サードパーティーカスタムモデル】富士通 PRIMERGY TX1310 M3(Xeon E3-1225v6/32GB/2x 1TB)

 PGダイレクトで注文済みでしたが、内蔵の3.5インチHDDベイを オウルテック 2.5インチHDD/SSD用→3.5インチサイズ変換ブラケット でSATA2.5インチSSDに交換する予定でAmazon.co.jpで注文したCrucial SSD 1000GB MX500 内蔵2.5インチ 7mm MX500 が先に自宅に届いたので購入報告。(あとケーブル、USB3.0-DVDドライブその他。)

OSの選定は悩みますがCentOS7をESXi で仮想化する予定です。