Обновление драйвера Mellanox ConnectX

Для примера обновлю драйвер сетевого адаптера Mellanox ConnectX-3 Pro EN / HP 544+QSFP (764284-B21) который я установил в сервер HPE DL380 Gen10 с Ubuntu Server 18.04.

Для обновления драйвера необходимо переключится на root пользователя:

sudo su

Сначала я посмотрел версию установленного драйвера:

modinfo mlx4_core | grep version
version:        4.0-0

modinfo mlx4_core | grep ^version:|sed 's/version: * //g'
4.0-0

ethtool -i ens3

Выполнив эти команды на нескольких серверах Ubuntu Server 18.04 я заметил что по умолчанию используется драйвер версии 4.0-0.

Посмотрим видит ли система сетевой адаптер, как он называется и его Part number:

lspci -vvv

lspci | grep Mellanox
12:00.0 Network controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]

lspci -vv -s 12:00.0 | grep "Part number" -A 3
                        [PN] Part number: 764284-B21
                        [EC] Engineering changes: A3
                        [SN] Serial number: CN7644033S
                        [V0] Vendor specific: PCIe FDR x8 13W

Кстати я пробовал установить одновременно сетевые адаптеры на разных чипах (Intel XL710-QDA1 и Mellanox ConnectX-3 / HP 544+QSFP) в сервер HPE DL380 Gen10 и заметил что одновременно они не работают и по команде lspci их не видно.

Потом я посмотрел драйвер на официальном сайте
https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed
Скачал и распаковал LTS версию MLNX_OFED_LINUX-4.9-2.2.4.0-ubuntu18.04-x86_64.tgz.
Так как в самой новой версии MLNX_OFED_LINUX-5.1-2.5.8.0-ubuntu18.04-x86_64.tgz на момент написания статьи были драйвера начиная от ConnectX-4, а для ConnectX-3 не было.

Распаковал скачанный архив:

tar -xzf MLNX_OFED_LINUX-4.9-2.2.4.0-ubuntu18.04-x86_64.tgz
cd MLNX_OFED_LINUX-4.9-2.2.4.0-ubuntu18.04-x86_64

Для запуска процесса обновления необходимо запустить скрипт установки:

./mlnxofedinstall

В этом случае будет установлен полный пакет утилит и обновлен драйвер. Скрипт обнаружит все сетевые адаптеры Mellanox и предложит выбрать конкретный или все, а также выполнит обновлении прошивки. Убедимся что в файле distro указана верная версия дистрибутива операционной системы.

Но я решил обновить драйвер и установить минимальный набор утилит:

./mlnxofedinstall --upstream-libs --dpdk

Во время установки будут установлены и удалены некоторые пакеты, в случае ошибки их можно установить или удалить вручную, а потом вновь запустить скрипт, например:

apt install tk bison debhelper flex autoconf automake graphviz dpatch gfortran libgfortran4 quilt dkms chrpath tcl m4 swig libnl-route-3-dev ixnfo.com
apt remove ...

После успешного обновления перезапустим драйвер:

/etc/init.d/openibd restart

Перезагрузим сервер и убедимся что сеть работает:

reboot

Если необходимо только обновить прошивку, то выполним:

./mlnxofedinstall --fw-update-only

Пример создания резервной копии прошивки и конфигурации сетевого адаптера:

flint -d 12:00.0 ri firmware_backup.bin
flint -d 12:00.0 dc config_backup.ini

При необходимости закроем порты:

iptables -A INPUT --protocol tcp --in-interface ens2d1 --dport 8888 -j DROP
iptables -A INPUT --protocol tcp --in-interface ens2d1 --dport 8889 -j DROP

Модули которые автоматически загружаются при запуске операционной системы:
ConnectX®-2/ConnectX®-3/ConnectX®-3 Pro:
mlx4_en, mlx4_core, mlx4_ib
ConnectX®-4/ConnectX®-4 Lx/ConnectX®-5:
mlx5_core, mlx5_ib

Если необходимо выгрузить модули драйвера, то модуль mlx*_core необходимо выгружать в последнюю очередь, например:

modprobe -r mlx4_ib
modprobe -r mlx4_en
modprobe -r mlx4_core

Пример загрузки модулей:

modprobe mlx4_core
modprobe mlx4_ib
modprobe mlx4_en

Приведу список важных пакетов которые устанавливаются скриптом обновления драйвера или через apt install:
rdma-core, libibmad, opensm, opensm-libs, ibutils-libs, ibutils, infiniband-diags, perftest, mstflint

Смотрите также мои статьи:

Оставьте комментарий

Добавить комментарий