Для примера обновлю драйвер сетевого адаптера Mellanox ConnectX-3 Pro EN / HP 544+QSFP (764284-B21) который я установил в сервер HPE DL380 Gen10 с Ubuntu Server 18.04.
Для обновления драйвера необходимо переключится на root пользователя:
sudo -i
Сначала я посмотрел версию установленного драйвера:
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
Смотрите также мои статьи:
- Обновление прошивки HP 544+QSFP (764284-B21) Mellanox ConnectX-3 Pro EN
- Установка и обновление драйвера ixgbe
- Ошибки Mellanox ConnectX «Could not join netdev: No space left on device»