Настройка 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 (без установки обновлений):

  1. Скачиваем необходимые драйвера и ПО с сайта broadcom.com:
  1. Устанавливаем OneCommand Manager:
    • Копируем наш файл elxocmcore-rhel6-rhel7-rhel8-12.2.360.0-1.tgz на сервер.
    • Распаковываем архив:

    • Запускаем установку:

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

    • Проверяем текущую версию Firmware

      текущая версия 12.4.243.11
    • Обновляем Firmware (прошить нужно каждый порт)

  3. Установка драйвера
    • распаковываем файл tar

    • необходимо установить пакеты nvme-cli-1.8.х

      Примечание: при установке драйвер nvmefc-connect-12.6.61.0-1.noarch.rpm ругается на зависимость пакета nvme-cli.
    • Устанавливаем драйвер (Важно! Драйвер необходимо устанавливать с ключом -n или –nvme и -i)

    • Проверяем версию FW и драйвер:

      режим работы драйвера должен быть равен 3:
  4. Правим параметры GRUB
    • Редактируем /etc/default/grub добавляем параметр nvme_core.multipath=Y для включения NVMe Native Multipath.  А также параметр IO scheduler 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 с нужными значениями.


  1. Настройка зон на коммутаторах Brocade
    • Смотрим PWWN хоста:

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

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

    • Создаём NVMe Namespace
  3. Настройка NVMe Native Multipath

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

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

Вставляем:

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

Например:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *