Настройка NVMe-oF подключения к RHEL 8.1

Dmitriy Shevchenko прислал продолжение цикла инструкций по настройке NVMe-oF. Сегодня речь пойдёт об операционной системе RHEL.

Перечень оборудования и ПО

Система хранения: Netapp AFF A320, версия ПО ONTAP Release 9.7P1.

Коммутаторы сети хранения данных: Switch Brocade 6505 16Gb 24 Port 2шт. FW 8.2.1c.

Серверы: Fujitsu PRIMERGY RX2530 M5 c FC адаптерами Broadcom (EMULEX) LPe32002 версия FW 12.6.240.22 (рекомендованная в матрице совместимости Netapp).

Операционная система: Red Hat Enterprise Linux release 8.1 (Ootpa) (Примечание: в 8.2 с установкой драйверов, были проблемы, нет ключа -n).


Предварительная подготовка

  1. Устанавливаем Red Hat Enterprise Linux release 8.1 (без установки обновлений):
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 (Ootpa)
  1. Скачиваем необходимые драйвера и ПО с сайта broadcom.com:
  1. Устанавливаем OneCommand Manager:
    • Копируем наш файл elxocmcore-rhel6-rhel7-rhel8-12.2.360.0-1.tgz на сервер.
    • Распаковываем архив:
      [root@kzlnetapp02 elxocmcore]# tar xvfz elxocmcore-rhel6-rhel7-rhel8-12.2.360.0-1.tgz

    • Запускаем установку:
      # ./install.sh

  2. Обновляем Firmware на HBA:
    •  Просматриваем список доступных HBA
      # hbacmd listhbas

    • Проверяем текущую версию Firmware
      #hbacmd HBAAttrib <Port WWN>

      текущая версия 12.4.243.11

    • Обновляем Firmware (прошить нужно каждый порт)
      #hbacmd download <Port WWN> /path/<name of the firmware update file>

  3. Установка драйвера
    • распаковываем файл tar
      #xvfz elx-lpfc-dd-rhel8-12.6.240.27-ds-1.tar.gz

    • необходимо установить пакеты nvme-cli-1.8.х
      # dnf install nvme-cli-1.8.1-3.el8.x86_64

      Примечание: при установке драйвер nvmefc-connect-12.6.61.0-1.noarch.rpm ругается на зависимость пакета nvme-cli.

    • Устанавливаем драйвер (Важно! Драйвер необходимо устанавливать с ключом -n или –nvme и -i)
      # ./elx_lpfc_install.sh -n -i

    • Проверяем версию FW и драйвер:
      # cat /sys/class/scsi_host/host*/modeldesc
      Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
      Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
      
      # cat /sys/class/scsi_host/host*/fwrev
      12.6.240.22, sli-4:2:c
      12.6.240.22, sli-4:2:c
      
      # cat /sys/module/lpfc/version
      0:12.6.240.27

      режим работы драйвера должен быть равен 3:

      [root@kzlnetapp02 ~]# cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
      3
  4. Правим параметры GRUB
    • Редактируем /etc/default/grub добавляем параметр nvme_core.multipath=Y для включения NVMe Native Multipath.  А также параметр IO scheduler elevator=none»
      # vim /etc/default/grub

    • Генерируем конфигурацию
      Run the grub2-mkconfig command to regenerate the grub.cfg file:
      # grub2-mkconfig -o /boot/grub2/grub.cfg
      Alternatively, on UEFI systems, run the following:
      # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

      Или

      # grubby --update-kernel=ALL --args="nvme_core.multipath=Y"
      # grubby --update-kernel=ALL --args="elevator=none"

      Примечание: Recommended disk schedulers for different use cases
      Depending on the task that your system performs, Red Hat recommends the following disk schedulers:

    • Перезагружаем сервер.
    • Проверяем что модуль NVMe загружен и параметры multipath и IO scheduler с нужными значениями.
      # cat /sys/block/nvme0n1/queue/scheduler

      [root@kzlnetapp02 ~]# lsmod|grep nvme
      nvmet_fc               32768  1 lpfc
      nvmet                  98304  1 nvmet_fc
      nvme_fc                45056  1 lpfc
      nvme_fabrics           24576  1 nvme_fc
      nvme_core              98304  2 nvme_fc,nvme_fabrics
  1. Настройка зон на коммутаторах Brocade
    • Смотрим PWWN хоста:
      # cat /sys/class/scsi_host/host*/nvme_info

    • Смотрим PWWN на стороне системы хранения.
    • Настраиваем зоны на коммутаторах.
  2. Настройка системы хранения
    • Создаём SVM
    • Регистрируем наш хост.
      Создаём NVMe Subsystem

      Необходимо узнать NQN хоста, для этого вводим на сервере команду:

      #cat /etc/nvme/hostnqn

    • Создаём NVMe Namespace
  3. Настройка NVMe Native Multipath
# cat /sys/module/nvme_core/parameters/multipath

Параметр по умолчанию Numa.

# cat /sys/devices/virtual/nvme-subsystem/nvme-subsys0/iopolicy
Numa

Создаём в ONTAP новое правило udev для обеспечения балансировки нагрузки в round-robin режиме NVMe, применяется ко всем Namespace на ONTAP:

# vi /usr/lib/udev/rules.d/71-nvme-iopolicy-netapp-ONTAP.rules

Вставляем:

# Enable round-robin for NetApp ONTAP
ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"

Можем убедиться, что режим round-robin балансировки установлен, проверив соответствующее значение sysfs, при условии, конечно, что Namespace ONTAP NVMe сопоставлен и обнаружен на хосте.

Например:

# cat /sys/devices/virtual/nvme-subsystem/nvme-subsys0/iopolicy

Перезагружаем сервер.

Проверка результата предварительных работ

# nvme list

Примечание: если всё сделано правильно, то мы увидим наш LUN (NameSpace). Если multipath не отработал, то мы увидим несколько путей (зависит от количество подключений по FC).

Для команды nvme — существует плагин NetApp для обработки Namespace ONTAP. Теперь он предоставляет 3 различных варианта отображения отчета о специфичных для NVMe подробностях ONTAP — столбец, json и raw (который используется по умолчанию), как показано в следующем примере:

# nvme netapp ontapdevices -o column

# nvme netapp ontapdevices -o json

# nvme netapp ontapdevices

Следующая команда выводит информацию по путям:

# nvme list-subsys /dev/nvme0n1

Как мы можем здесь видеть, у нас есть 4 пути. Два live optimize – это активные пути (NameSpace может принадлежать только одному агрегату, а агрегат расположен на одном из контроллеров), и live inaccessible, принадлежавшие другому контроллеру, обмен данными по ним не происходит  (для равномерной нагрузки NameSpace создаём на двух агрегатах равномерно).

Тест работы NVMe Native Multipath

Есть также состояния connecting optimize и connecting inaccessible, как на примере ниже.

При отключении одного порта на FC адаптере стали недоступны два пути и механизм multipath пытается их подключить.

Мониторинг SAN фабрики — представлен момент отключения одного из портов:

Нагрузка генерировалась vdbench со следующими параметрами:

dedupunit=8k, dedupratio=3, compratio=3
sd=sd1,hd=hd2,lun=/dev/nvme0n1,openflags=o_direct
wd=wd_RND,sd=sd*,seekpct=100,rdpct=70,xfersize=8k,skew=100
rd=run1,wd=wd*,iorate=max,elapsed=300,interval=2,warmup=60,threads=120

14:41:27.003          67   217069.0  1695.85    8192  70.01    0.550    0.334    1.053    11.72    14.49    0.716  119.4   6.0   4.4
14:41:29.002          68   217467.5  1698.96    8192  69.99    0.549    0.339    1.038    13.92    14.78    0.726  119.3   5.6   4.1
14:41:31.003          69   212597.5  1660.92    8192  69.96    0.562    0.335    1.090    15.84    16.28    0.722  119.4   5.5   4.0
14:41:33.002          70   211050.5  1648.83    8192  70.10    0.565    0.338    1.098    19.50    20.58    0.749  119.3   5.6   4.1
14:41:35.003          71   213192.5  1665.57    8192  69.97    0.560    0.335    1.086    16.94    17.60    0.816  119.6   5.7   4.2

Момент отключения порта на хосте:

14:41:39.002          73   165779.5  1295.15    8192  70.01    0.722    0.639    0.916     8.10     8.81    0.339  119.6   4.7   3.6
14:41:41.002          74   166383.5  1299.87    8192  69.97    0.718    0.629    0.924     5.89     5.89    0.313  119.4   4.7   3.6
14:41:43.002          75   165086.5  1289.74    8192  70.06    0.724    0.633    0.937    18.05    18.40    0.436  119.5   4.7   3.5
14:41:45.003          76   165449.5  1292.57    8192  70.01    0.723    0.619    0.967    11.72    14.33    0.475  119.7   4.7   3.5
14:41:47.003          77   165937.5  1296.39    8192  70.02    0.720    0.638    0.912     8.36     4.77    0.311  119.4   4.7   3.5
14:41:49.003          78   166412.0  1300.09    8192  69.83    0.719    0.629    0.925    11.93     6.36    0.338  119.6   4.8   3.6

Восстановление подключения

14:43:49.002         138   224208.0  1751.63    8192  70.12    0.533    0.376    0.901     9.80    10.02    0.538  119.5   6.0   4.4
14:43:51.002         139   220626.0  1723.64    8192  69.97    0.541    0.346    0.994    10.38    13.28    0.636  119.3   5.9   4.4
14:43:53.002         140   190326.0  1486.92    8192  70.04    0.627    0.333    1.317    27.61   206.80    3.751  119.5   5.1   3.7
14:43:55.002         141   187727.5  1466.62    8192  69.99    0.637    0.369    1.264    20.70   172.70    3.228  119.5   4.9   3.7
14:43:57.002         142   207911.5  1624.31    8192  70.01    0.574    0.342    1.115    22.42    23.14    0.960  119.4   5.4   3.9

Как видим есть небольшая просадка в производительности, но потери самого подключения нет.

Используемые материалы

Enable NVMe Native Multipathing https://access.redhat.com/solutions/4685761

Recommended disk schedulers for different use cases https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_storage_devices/setting-the-disk-scheduler_managing-storage-devices

Introducing End-to-End NVMe for FlexPod White Paper https://www.cisco.com/c/en/us/products/collateral/servers-unified-computing/ucs-b-series-blade-servers/whitepaper-c11-741907.html

Broadcom https://www.broadcom.com/products/storage/fibre-channel-host-bus-adapters/lpe32002-m2

Netapp Implementing and Configuring Modern SANs with NVMe/FC https://www.netapp.com/us/media/TR-4684.PDF

Запись опубликована в рубрике Brocade, Cisco, Dell, Hardware, HP, Lenovo, NetApp, RedHat, Советы, Статьи. Добавьте в закладки постоянную ссылку.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *