Настройка соединения по SRP (InfiniBand) для Linux

OFED (OpenFabrics Enterprise Distribution) – программное обеспечение с открытым исходным кодом для приложений, работающих по RDMA.

NVIDIA OFED («MLNX_OFED»; иногда встречается вариант «MOFED») – версия OFED от Nvidia, которая поддерживает два типа межсетевого взаимодействия с использованием одних и тех же API RDMA и обхода (bypass) ядра: InfiniBand и Ethernet.

SRP (SCSI RDMA Protocol) – протокол блочного доступа, реализующий преимущества функций RDMA и обхода (bypass) ядра, предоставляемые архитектурой InfiniBand.

Подробная инструкция по настройке соединения по SRP представлена на официальном сайте Nvidia. Пример настройки прямого подключения хоста к DC-системе см. в секции Пример настройки хоста Ubuntu 22.04.

Требования и особенности

  • При работе с двухпортовыми адаптерами NVIDIA VPI не используйте конфигурацию, при которой один порт работает в режиме Ethernet, a другой – в режиме InfiniBand.
  • Версия семейства (или серии) адаптера, используемого в качестве таргета, должна быть не ниже версии семейства (или серии) адаптера, используемого в качестве инициатора.
  • В DC-системе рекомендуем подключать сначала таргет с управляющего узла.

Пример настройки хоста Ubuntu 22.04

Характеристики полигона:

  • хост с ОС Ubuntu 22.04 и двухпортовым VPI IB-адаптером MCX456A-ECAT;
  • DC-система RAIDIX, на каждом узле по одному двухпортовому VPI IB-адаптеру MCX456A-ECAT;
  • прямая коммутация хоста и СХД;
  • узел 1 – управляющий для RAID с LUN «rd_lun0».

Чтобы настроить подключение по SRP:

  1. Убедитесь, что предыдущие шаги настройки блочного подключения из главы Блочный доступ выполнены.
  2. Убедитесь, что на хосте установлен MLNX_OFED или установите его:

    • Проверьте наличие MLNX_OFED:

      # ofed_info
    • Установите MLNX_OFED:

      1. Скачайте ISO-файл на официальном сайте Nvidia.
      2. Смонтируйте ISO-файл:

        # mount -o ro,loop MLNX_OFED_LINUX-24.10-3.2.5.0-ubuntu22.04-x86_64.iso /mnt/iso/

        где

        • MLNX_OFED_LINUX-24.10-3.2.5.0-ubuntu22.04-x86_64.iso – путь до ISO-файла;
        • /mnt/iso/ – точка монтирования.
      3. Запустите установку:

        # /mnt/iso/mlnxofedinstall

        где

        • /mnt/iso/ – точка монтирования.
  3. Настройте на хосте соединение по SRP:

    1. Загрузите SRP-инициатор:

      1. В файле /etc/infiniband/openib.conf в строке SRP_LOAD установите значение yes.
      2. Примените изменение:

        # /etc/init.d/openibd restart
    2. Проверьте статус драйвера MST (англ. «Mellanox Software Tools»):

      # mst status

      При необходимости, запустите драйвер:

      # mst start
    3. Убедитесь, что порты IB-адаптера отображаются:

      # lspci | grep Mellanox

      Вывод команды:

      02:00.0 Infiniband controller: Mellanox Technologies MT27700 Family [ConnectX-4]
      02:00.1 Infiniband controller: Mellanox Technologies MT27700 Family [ConnectX-4]
    4. Получите имя IB-адаптера (значение поля «PCI Device Name»):

      # mlxfwmanager

      Вывод команды:

      Querying Mellanox devices firmware ...
                                      
      Device #1:
      ----------
                                      
          Device Type:      ConnectX4
          Part Number:      MCX456A-ECA_Ax
          Description:      ConnectX-4 VPI adapter card; EDR IB (100Gb/s) and 100GbE; dual-port QSFP28; PCIe3.0 x16; ROHS R6
          PSID:             MT_2190110032
          PCI Device Name:  /dev/mst/mt4115_pciconf0
          Base GUID:        248a0703003e0cb2
          Versions:         Current        Available
              FW            12.28.2006     N/A
              PXE           3.6.0102       N/A
              UEFI          14.21.0017     N/A
                                      
          Status:           No matching image found
    5. Для адаптеров VPI: установите режим работы портов SRP («IB»):

      # mlxconfig  -d /dev/mst/mt4115_pciconf0 set LINK_TYPE_P1=1 LINK_TYPE_P2=1

      где

      • /dev/mst/mt4115_pciconf0 – имя IB-адаптера (значение поля «PCI Device Name» из предыдущего шага);
      • LINK_TYPE_P1=1 – установка режима работы SRP для первого порта IB-адаптера;
      • LINK_TYPE_P2=1 – установка режима работы SRP для второго порта IB-адаптера;

      Если режим работы портов уже установлен в SRP (значение «IB(1)» в столбце «Next Boot»), введите «n».

      Вывод команды:

      Device #1:
      ----------
                                      
      Device type:    ConnectX4
      Name:           MCX456A-ECA_Ax
      Description:    ConnectX-4 VPI adapter card; EDR IB (100Gb/s) and 100GbE; dual-port QSFP28; PCIe3.0 x16; ROHS R6
      Device:         /dev/mst/mt4115_pciconf0
                                      
      Configurations:                                      Next Boot       New
               LINK_TYPE_P1                                IB(1)           IB(1)
               LINK_TYPE_P2                                IB(1)           IB(1)
                                      
      Apply new Configuration? (y/n) [n] :
    6. Проверьте имена портов и их состояние:

      # ibstat

      Вывод команды:

      CA 'mlx5_0'
          CA type: MT4115
          Number of ports: 1
          Firmware version: 12.28.2006
          Hardware version: 0
          Node GUID: 0x248a0703003e0cb2
          System image GUID: 0x248a0703003e0cb2
          Port 1:
              State: Initializing
              Physical state: LinkUp
              Rate: 56
              Base lid: 1
              LMC: 0
              SM lid: 1
              Capability mask: 0x2659e84a
              Port GUID: 0x248a0703003e0cb2
              Link layer: InfiniBand
      CA 'mlx5_1'
          CA type: MT4115
          Number of ports: 1
          Firmware version: 12.28.2006
          Hardware version: 0
          Node GUID: 0x248a0703003e0cb3
          System image GUID: 0x248a0703003e0cb2
          Port 1:
              State: Initializing
              Physical state: LinkUp
              Rate: 56
              Base lid: 1
              LMC: 0
              SM lid: 1
              Capability mask: 0x2659e84a
              Port GUID: 0x248a0703003e0cb3
              Link layer: InfiniBand

      где

      • mlx5_0 в строке CA 'mlx5_0' – имя первого порта;
      • mlx5_1 в строке CA 'mlx5_1' – имя второго порта;
    7. Проверьте доступные таргеты на портах mlx5_0 и mlx5_1:

      # srp_daemon -o -i mlx5_0

      Вывод команды:

      IO Unit Info:
          port LID:        0001
          port GID:        fe80000000000000248a0703003e0cb2
          change ID:       0001
          max controllers: 0x10
                                      
          controller[  1]
              GUID:      008a0703003e0cb2
              vendor ID: 000002
              device ID: 001013
              IO class : 0100
              Maximum size of Send Messages in bytes: 8276
              ID:        SCST SRP target
              service entries: 1
                  service[  0]: 008a0703003e0cb2 / SRP.T10:008a0703003e0cb2
    8. Подключите порты к таргетам:

      # srp_daemon -o -e -n -i mlx5_0
      # srp_daemon -o -e -n -i mlx5_1
    9. Убедитесь, что LUN доступен хосту:

      # lsscsi

      Вывод команды:

      [1:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0 
      [7:0:0:0]    disk    ATA      QEMU HARDDISK    2.5+  /dev/sda 
      [14:0:0:1]   disk    Raidix   rd_lun0          370   /dev/sdb 
      [15:0:0:1]   disk    Raidix   rd_lun0          370   /dev/sdc 
  4. Настройте multipath (подробнее в главе Настройка multipath на Linux).