Debian.pro/

Про Debian


Переключение режима VPI-карточек Mellanox Connect-X (infiniband -> ethernet)

Mellanox делает неплохие 25G/100G карточки, которые в целом работают в современных дистрах без проблем. Что ещё интереснее — 100G карта отдаёт свои 100G без какого-либо дополнительного тюнинга системы (ну на достаточно мощном сервере).

На условном «местном авито» при этом можно найти множество дешёвых карт MLX, про которые продавцы пишут «не использовались». Большинство таких карточек — VPI, то есть могут работать и как infiniband-адаптеры, и как обычные ethernet-карты. Но приезжают с завода они при этом в IB-режиме (зачем — непонятно, ну да ладно) и некоторые люди просто не могут их переключить в eth (при этом в случае с connect-X 5 режим сбрасывается при переносе сетевухи в другой хост, например).

В общем, убеждаемся, что у вас именно VPI-карточка, начинаем переключать режим. С connect-X 3 всё супер легко:

root@server:~# lspci | grep Mella
21:00.0 Ethernet controller: Mellanox Technologies MTXXXXX Family [ConnectX-3]
21:00.1 Ethernet controller: Mellanox Technologies MTXXXXX Family [ConnectX-3]

Узнаём PCI-адрес карточки, дальше делаем для каждого порта:

root@server:~# echo eth > /sys/bus/pci/devices/0000\:21\:00.0/mlx4_port1
root@server:~# echo eth > /sys/bus/pci/devices/0000\:21\:00.1/mlx4_port2

У меня под рукой нет именно MLX3, чтобы проверить, возможно, в данном случае вторая правильная команда будет такой:

root@server:~# echo eth > /sys/bus/pci/devices/0000\:21\:00.0/mlx4_port2

После этого (вроде бы) нужно ребутнуться и карточка поднимется уже как ethernet


С Connect-X 5 всё посложнее, нужна специальная утилита.
Если в ваш дистрибутив занесли, то поставить её можно так:

root@server:~# apt-get install mstflint

(в реальности я не проверял пакет из реп дебиана — но в целом для такой простой задачи должно работать).
Если в ваш дистрибутив не занесли, то идём на https://network.nvidia.com/products/adapter-software/firmware-tools/, накликиваем там linux — DEB — x86, из архива достаём файл (например) mft_4.25.0-62_amd64.deb и ставим пакет из файла:

root@server:~# dpkg -i mft_4.25.0-62_amd64.deb

Дальше смотрим названия устройств, с которыми будет работать mlxconfig. Проще всего так:

root@server:~# ls /sys/class/infiniband/
mlx5_0 mlx5_1

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

root@server:~# mlxconfig -d mlx5_0 set LINK_TYPE_P1=2
root@server:~# mlxfwreset -d mlx5_0 -l3 -y reset
root@server:~# mlxconfig -d mlx5_1 set LINK_TYPE_P2=2
root@server:~# mlxfwreset -d mlx5_1 -l3 -y reset

В пакете mstflint (из репозиториев дистрибутивов) утилиты названы чуть иначе:

root@server:~# mstconfig -d mlx5_0 set LINK_TYPE_P1=2
root@server:~# mstfwreset -d mlx5_0 -l3 -y reset
root@server:~# mstconfig -d mlx5_1 set LINK_TYPE_P2=2
root@server:~# mstfwreset -d mlx5_1 -l3 -y reset

Обратите внимание, что переменные LINK_TYPE_P1 и LINK_TYPE_P2 отличаются последней цифрой (номером порта) -))


Всё. Ваша 25-гиговая карточка за 100 баксов с ебея должна работать.


Комментариев пока нет.

Написать комментарий