Назад | Перейти на главную страницу

Infiniband настроен и подключен, но индикаторы не горят на HBA и не работают в ОС

Я установил два двухпортовых HBA FDR Infiniband VPI, по одному на каждый из двух серверов под управлением CentOS 6.9,

server1>lspci
03:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]

server2>lspci
81:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]

Я хочу использовать их для высокоскоростного подключения по NFSv4 (возможно, через RDMA) между этими двумя машинами, напрямую подключенными друг к другу через Infiniband (2-метровый пассивный кабель QSFP + 56 Гбит / с). Я сделал следующее для обоих (подставив правильный адрес PCI ниже).

yum -y install rdma infiniband-diags
chkconfig rdma on
service rdma start
printf "0000:XX:00.0 eth eth\n" >> /etc/rdma/mlx4.conf
echo eth > /sys/bus/pci/devices/0000:XX:00.0/mlx4_port1
echo eth > /sys/bus/pci/devices/0000:XX:00.0/mlx4_port2
modprobe -r mlx4_core
modprobe mlx4_core
modprobe ib_umad
cp -f ifcfg-eth4 /etc/sysconfig/network-scripts/ifcfg-eth4
cp -f ifcfg-eth5 /etc/sysconfig/network-scripts/ifcfg-eth5
chmod 644 /etc/sysconfig/network-scripts/ifcfg-*
chcon system_u:object_r:net_conf_t:s0 /etc/sysconfig/network-scripts/ifcfg-*
ifup eth4
ifup eth5

Пример файла конфигурации сети (например, ifcfg-eth4) выглядит таким образом, заменяя соответствующий MAC и IP-адрес для каждого порта:

DEVICE=eth4
HWADDR=XX:XX:XX:XX:XX:XX
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
USERCTL=no
NETWORK=10.72.1.0
NETMASK=255.255.255.0
IPADDR=XXX.XXX.XXX.XXX

Есть еще три подобных файла, по два на каждой машине, и ifup и ifdown работают для обоих интерфейсов на обеих машинах. Кроме того, существуют маршруты

server1>ip route show
10.72.1.0/24 dev eth4  proto kernel  scope link  src 10.72.1.3
10.72.1.0/24 dev eth5  proto kernel  scope link  src 10.72.1.4
...

Здесь дела идут плохо.

CA 'mlx4_0'
        CA type: MT4099
        Number of ports: 2
        Firmware version: 2.11.500
        Hardware version: 0
        Node GUID: 0xf45...
        System image GUID: 0xf45...
        Port 1:
                State: Down
                Physical state: Disabled
                Rate: 10
                Base lid: 0
                LMC: 0
                SM lid: 0
                Capability mask: 0x04010000
                Port GUID: 0xf6...
                Link layer: Ethernet
        Port 2:
                State: Down
                Physical state: Disabled
                Rate: 40
                Base lid: 0
                LMC: 0
                SM lid: 0
                Capability mask: 0x04010000
                Port GUID: 0xf6...
                Link layer: Ethernet

Обе машины показывают одно и то же: «Состояние: не работает» и «Физическое состояние: отключено». Индикаторы состояния на самих HBA не горят. Я испробовал все комбинации соединений между двумя машинами, включая подключение каждой карты к себе.

Я читал о необходимости opensm, и я попытался установить его, но, несмотря на кажущуюся правильную конфигурацию, не удалось:

May 09 20:18:14 888369 [A8697700] 0x01 -> osm_vendor_bind: ERR 5426: Unable to register class 129 version 1
May 09 20:18:14 888418 [A8697700] 0x01 -> osm_sm_mad_ctrl_bind: ERR 3118: Vendor specific bind failed
May 09 20:18:14 888436 [A8697700] 0x01 -> osm_sm_bind: ERR 2E10: SM MAD Controller bind failed (IB_ERROR)

Кроме того, я читал, что некоторые люди говорят, что opensm не требуется для этого типа конфигурации.

На данный момент я не знаю, означает ли это, что одна или обе карты плохие, кабель плохой, есть какой-то аспект моей конфигурации, который плох, или что-то еще. Я попробовал yum -y groupinstall "Infiniband Support", но это не помогло, и впоследствии я удалил посторонние пакеты.

Чего я не сделал, так это перезагрузки машины, потому что в настоящее время это невозможно, но я подумал, что modprobe -r; modprobe последовательность будет эквивалентной, и все аспекты конфигурации, связанные с установкой модуля, похоже, работают правильно.

Буду признателен за любые мысли!

Прежде всего, opensm используется только для Infiniband (IB). Вы настроили свои карты для работы в режиме Ethernet, поэтому openm не требуется.

Базовая конфигурация выглядит нормально. Я предполагаю, что когда вы добавили mlx4_core, mlx4_en был вставлен одновременно? lsmod | grep mlx

Однако я подозреваю, что проблема в кабелях. Это кабели FDR или Ethernet марки Mellanox? В противном случае они, вероятно, игнорируются картой как не поддерживаемые в режиме Ethernet. Найдите номер модели каждой детали, чтобы проверить совместимость. Кабели с картами VPI, не работающие в режиме Ethernet, не раз были для меня занозой.

Еще одна быстрая проверка - удалить модули, отменить настройки режима «eth», затем подключить два узла вплотную друг к другу с помощью только кабеля и кабеля IB, а затем снова вставить модули. IB обычно отлично справляется с линковкой в ​​неоптимальных условиях. ibstat покажет физическое состояние, отличное от выключенного - он либо частично (без openm), либо полностью подключится; если кабель не FDR, он все равно будет подключаться к QDR или DDR. Если вы можете хотя бы заставить IB работать, вы знаете, что карты хороши. Вы также можете использовать IPoIB (интерфейсы ib0 и ib1 - используйте «подключенный режим»), хотя и с падением производительности из-за Ethernet. Если вы работаете только с NFS, то можете продолжить и использовать режим IB. Включите NFS через RDMA (не забудьте также изменить крепления клиентов, чтобы использовать его) и пользуйтесь преимуществами NFS со скоростью, близкой к проводной, на канале 56 Гбит / с.