AWSでDHCPv6を有効にする

AWSユーザーガイドのIPv6への移行 シナリオにしたがってCentOS7のDHCPv6を有効にした手順を未来の自分にメモします。

 まずインスタンス内から外に向けてping6 を打ってみます。

$ ping6 ipv6.google.com
connect: Network is unreachable

届きませんでしたね。そこで以下のカスタムファイルを作成して保存します。

# vi /etc/cloud/cloud.cfg.d/99-custom-networking.cfg
network: version: 1 config: - type: physical name: eth0 subnets: - type: dhcp - type: dhcp6

ここからifcfg-eth0を手動で編集します。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=no ↓ IPV6INIT=yes
DHCPV6C=yes (追記 NM_CONTROLLED=no (追記

/etc/sysconfig/network を開いて以下の行を追記して保存します。

# vi /etc/sysconfig/network
NETWORKING_IPV6=yes (追記

続いて次のコマンドで/etc/sysctl.d 下のインターフェイス固有ファイルにaccept_ra=1を設定します。

# echo "net.ipv6.conf.eth0.accept_ra=1" > /etc/sysctl.d/enable-ipv6-ra.conf && sysctl -p /etc/sysctl.d/enable-ipv6-ra.conf

accept_ra = 1 と確定していればOKです。

# ssysctl -a | grep "net.ipv6.conf.eth0.accept_ra"
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth0.accept_ra_defrtr = 1
net.ipv6.conf.eth0.accept_ra_pinfo = 1
net.ipv6.conf.eth0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.eth0.accept_ra_rtr_pref = 1

最後にsystemctl restart network でインターフェイスを再起動してping6を確認します。

$ ping6 ipv6.google.com
PING ipv6.google.com(nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e)) 56 data bytes 64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=1 ttl=104 time=2.32 ms 64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=2 ttl=104 time=2.40 ms 64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=3 ttl=104 time=2.35 ms 64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=4 ttl=104 time=2.38 ms

今度はping6 が到達するようになりました。

参考サイト:

Amazon Virtual Private Cloud – ユーザーガイド

Crontis: AWS EC2 IPv6 not working

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) – 株式会社バイオモデリングリサーチ

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 とユーザーアカウントのパスワード設定をします。プロンプト画面が表示されればインストール完了です。

お疲れ様でした。

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 で仮想化する予定です。