【Linux】InfiniBandドライバをインストールする

この記事では,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ライフを...

よかったらシェアしてね!
目次