この記事では,InfiniBandのドライバのインストール方法を記載します.
インストール方法は基本的に公式サイトを参考にしていますが,誤植やわかりにくさがあったため,まとめておきます.
MellanoxがNVidiaに買収されたことで,Mellanoxのウェブサイトに訪問してみると新しくなっていました.[2021/08/02現在]
ドライバのダウンロード先
https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed
ドキュメント
https://docs.mellanox.com/display/MLNXOFEDv541030
今回インストールするOSはUbuntu 20.04です.他のOSの場合でも基本的な手順は同じです.
ドライバのダウンロード
HCAの確認
マシンに搭載されているHCA(ネットワークアダプタ)を確認します.
lspci -v | grep Mellanox
21:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
Subsystem: Mellanox Technologies MT27800 Family [ConnectX-5]
21:00.1 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
Subsystem: Mellanox Technologies MT27800 Family [ConnectX-5]
OSに適したドライバを選択
Ubuntu 20.04のx86_64を選択します.
.isoを選択すると,別ページに飛ばされ同意を求められるので,同意した後ダウンロードします.
整合性チェック
ダウンロードしたファイルの整合性をチェックします.
sha256sum MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu20.04-x86_64.iso
b28188b228c7cacb130ea1e67154de5c1aef06fbce67b774025579d9e3ebad0c MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu20.04-x86_64.iso
“b28188b228c7cacb130ea1e67154de5c1aef06fbce67b774025579d9e3ebad0c”とダウンロードのSHA256に記載されている値が同じものかをチェック.同じ値なら問題ありません.
ドライバのインストール
ISOイメージをマウント
mount -o ro,loop MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu20.04-x86_64.iso /mnt
インストール
インストール用のスクリプトファイルmlnxofedinstall
を実行します.
/mnt/mlnxofedinstall
...
This program will install the MLNX_OFED_LINUX package on your machine.
Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed.
Those packages are removed due to conflicts with MLNX_OFED_LINUX, do not reinstall them.
Do you want to continue?[y/N]:
メッセージが出た後,インストールを続けるかを問われるので,[y]を入力します.
...
Do you want to continue?[y/N]:y
Checking SW Requirements...
One or more required packages for installing MLNX_OFED_LINUX are missing.
Attempting to install the following missing packages:
debhelper dkms graphviz dpatch gcc libgfortran4 flex make tk libnl-route-3-dev bison m4 autotools-dev libltdl-dev swig tcl quilt gfortran libnl-3-dev autoconf chrpath ethtool automake python3-distutils
「必要なパッケージが足りないため,インストールしますよ」というメッセージが出るので,待っているとそれらが自動的にインストールされます(数分程度).
...
Checking SW Requirements...
One or more required packages for installing MLNX_OFED_LINUX are missing.
Attempting to install the following missing packages:
debhelper dkms graphviz dpatch gcc libgfortran4 flex make tk libnl-route-3-dev bison m4 autotools-dev libltdl-dev swig tcl quilt gfortran libnl-3-dev autoconf chrpath ethtool automake python3-distutils
Removing old packages...
Installing new packages
Installing ofed-scripts-5.4...
Installing mlnx-tools-5.2.0...
Installing mlnx-ofed-kernel-utils-5.4...
Installing mlnx-ofed-kernel-dkms-5.4...
...
正常にインストールできたら以下のような画面が表示されます.
...
Restart needed for updates to take effect.
Log File: /tmp/OVZbjDtOMA
Real log file: /tmp/MLNX_OFED_LINUX.7012.logs/fw_update.log
Device (21:00.0):
21:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
Link Width: x16
PCI Link Speed: 8GT/s
Device (21:00.1):
21:00.1 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
Link Width: x16
PCI Link Speed: 8GT/s
Installation passed successfully
To load the new driver, run:
/etc/init.d/openibd restart
デーモンの再起動
InfiniBandのサービスデーモンであるopenibdをリスタートします.
/etc/init.d/openibd restart
Unloading HCA driver: [ OK ]
Loading HCA driver and Access Layer: [ OK ]
確認テスト
最後に,インストールが正常に成功したかをテストします.
/usr/bin/hca_self_test.ofed
---- Performing Adapter Device Self Test ----
Number of CAs Detected ................. 2
PCI Device Check ....................... PASS
Kernel Arch ............................ x86_64
Host Driver Version .................... MLNX_OFED_LINUX-5.4-1.0.3.0 (OFED-5.4-1.0.3): 5.8.0-63-generic
Host Driver RPM Check .................. PASS
Firmware on CA #0 HCA .................. v16.31.1014
16.25.1020
Firmware on CA #1 HCA .................. v16.31.1014
16.25.1020
Host Driver Initialization ............. PASS
Number of CA Ports Active .............. 0
Port State of Port #1 on CA #0 (HCA)..... DOWN (InfiniBand)
Port State of Port #1 on CA #1 (HCA)..... DOWN (InfiniBand)
Error Counter Check on CA #0 (HCA)...... PASS
Error Counter Check on CA #1 (HCA)...... PASS
Kernel Syslog Check .................... PASS
Node GUID on CA #0 (HCA) ............... XX:XX:XX:XX:XX:XX:XX:XX
Node GUID on CA #1 (HCA) ............... XX:XX:XX:XX:XX:XX:XX:XX
------------------ DONE ---------------------
Port State of Port #1 on CA #0
と#1
が”Down”になっています.この時にはケーブルを挿していなかったので,このようなエラーとなっていますが,インストール自体は全く問題ありません.
また,今回のHCAは2ポートあり,そのうちの1ポートにケーブルを接続すると,以下のようになります.
---- Performing Adapter Device Self Test ----
Number of CAs Detected ................. 2
PCI Device Check ....................... PASS
Kernel Arch ............................ x86_64
Host Driver Version .................... MLNX_OFED_LINUX-5.4-1.0.3.0 (OFED-5.4-1.0.3): 5.8.0-63-generic
Host Driver RPM Check .................. PASS
Firmware on CA #0 HCA .................. v16.31.1014
16.25.1020
Firmware on CA #1 HCA .................. v16.31.1014
16.25.1020
Host Driver Initialization ............. PASS
Number of CA Ports Active .............. 0
Port State of Port #1 on CA #0 (HCA)..... DOWN (InfiniBand)
Port State of Port #1 on CA #1 (HCA)..... INIT (InfiniBand)
Error Counter Check on CA #0 (HCA)...... PASS
Error Counter Check on CA #1 (HCA)...... PASS
Kernel Syslog Check .................... PASS
Node GUID on CA #0 (HCA) ............... XX:XX:XX:XX:XX:XX:XX:XX
Node GUID on CA #1 (HCA) ............... XX:XX:XX:XX:XX:XX:XX:XX
------------------ DONE ---------------------
InfiniBandの状態を確認
下記コマンドで,現在のInfiniBandの状態が確認できます.
ibstat
CA 'mlx5_0'
CA type: MT4119
Number of ports: 1
Firmware version: 16.25.1020
Hardware version: 0
Node GUID: xxxxxxxxxxx
System image GUID: xxxxxxxxxxx
Port 1:
State: Down
Physical state: Disabled
Rate: 10
Base lid: 65535
LMC: 0
SM lid: 0
Capability mask: xxxxxxxx
Port GUID: xxxxxxxxxxx
Link layer: InfiniBand
CA 'mlx5_1'
CA type: MT4119
Number of ports: 1
Firmware version: 16.25.1020
Hardware version: 0
Node GUID: xxxxxxxxxxx
System image GUID: xxxxxxxxxxx
Port 1:
State: Initializing
Physical state: LinkUp
Rate: 100
Base lid: 65535
LMC: 0
SM lid: 0
Capability mask: xxxxxxxxxxx
Port GUID: xxxxxxxxxxx
Link layer: InfiniBand
2ポート中1ポートのみをケーブルで接続しているため,片方が[Disabled],もう片方が[LinkUp]となります.
また,下記コマンドでポートの状態も確認できます.
ibv_devinfo
hca_id: mlx5_0
transport: InfiniBand (0)
fw_ver: 16.25.1020
node_guid: xxxx:xxxx:xxxx:xxxx
sys_image_guid: xxxx:xxxx:xxxx:xxxx
vendor_id: 0x02c9
vendor_part_id: 4119
hw_ver: 0x0
board_id: MT_0000000008
phys_port_cnt: 1
port: 1
state: PORT_DOWN (1)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 0
port_lid: 65535
port_lmc: 0x00
link_layer: InfiniBand
hca_id: mlx5_1
transport: InfiniBand (0)
fw_ver: 16.25.1020
node_guid: xxxx:xxxx:xxxx:xxxx
sys_image_guid: xxxx:xxxx:xxxx:xxxx
vendor_id: 0x02c9
vendor_part_id: 4119
hw_ver: 0x0
board_id: MT_0000000008
phys_port_cnt: 1
port: 1
state: PORT_INIT (2)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 0
port_lid: 65535
port_lmc: 0x00
link_layer: InfiniBand
Infinibandの起動
上記の方法でドライバのインストールが完了しました.
続いて,Infinibandを有するすべてのマシンで同様の作業を行う必要があります.
利用するすべてのマシンでInfiniBandドライバのインストールが完了したら,次の手順に進みます↓
まず,現在の状態を確認します.inactive (dead)
となっている場合はサービスが起動していないことを意味します.
systemctl status opensmd.service
● opensmd.service - LSB: Manage OpenSM
Loaded: loaded (/etc/init.d/opensmd; generated)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)
Infinibandが接続されているマシンのうち一つで下記コマンドを入力します.このコマンドにより,接続されているマシンすべてで自動的にサービスが起動します.
systemctl start opensmd.service
● opensmd.service - LSB: Manage OpenSM
Loaded: loaded (/etc/init.d/opensmd; generated)
Active: active (running) since Date
Docs: man:systemd-sysv-generator(8)
Process: 1187838 ExecStart=/etc/init.d/opensmd start (code=exited, status=0/SUCCESS)
Tasks: 143 (limit: 309321)
Memory: 14.3M
CGroup: /system.slice/opensmd.service
├─1187846 /usr/sbin/opensm --daemon --pidfile /var/run/opensm.pid
└─1187848 osm_crashd
Date ServerName systemd[1]: Starting LSB: Manage OpenSM...
Date ServerName opensmd[1187838]: Starting opensm: * done
Date ServerName OpenSM[1187846]: /var/log/opensm.log log file opened
Date ServerName OpenSM[1187846]: OpenSM 5.9.0.MLNX20210617.c9f2ade
Date ServerName systemd[1]: Started LSB: Manage OpenSM.
Date ServerName OpenSM[1187846]: Entering DISCOVERING state
Date ServerName OpenSM[1187846]: Entering MASTER state
まとめ
この記事では,InfiniBandのドライバのインストールとInfiniBandサービス起動方法を確認しました.
これでInfiniBandが使用可能になりました.
この後は,用途によってはIPoIBやMPIの設定などやることがあるとは思います...
それでは,良いIBライフを...