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).
Предварительная подготовка
- Устанавливаем Red Hat Enterprise Linux release 8.1 (без установки обновлений):
1 2 |
# cat /etc/redhat-release Red Hat Enterprise Linux release 8.1 (Ootpa) |
- Скачиваем необходимые драйвера и ПО с сайта broadcom.com:
- Firmware LPe31000-Series and LPe32000-Series Firmware and Boot Code Version: 12.6.240.22: lancerg6_A12.6.240.22.grp
- FC Binary Driver (Signed) for Linux – RHEL 8 This driver includes support for NVMe over FC on RHEL 8.0-8.2. Version: 12.6.240.27-1: elx-lpfc-dd-rhel8-12.6.240.27-ds-1.tar.gz
- OneCommand Manager Core Application Kit (CLI) for Linux – RHEL 8.0 Version: 12.2.360.0-1: elxocmcore-rhel6-rhel7-rhel8-12.2.360.0-1.tgz
- Устанавливаем OneCommand Manager:
- Копируем наш файл elxocmcore-rhel6-rhel7-rhel8-12.2.360.0-1.tgz на сервер.
- Распаковываем архив:
1[root@kzlnetapp02 elxocmcore]# tar xvfz elxocmcore-rhel6-rhel7-rhel8-12.2.360.0-1.tgz
- Запускаем установку:
1# ./install.sh
- Обновляем Firmware на HBA:
- Установка драйвера
- распаковываем файл tar
1#xvfz elx-lpfc-dd-rhel8-12.6.240.27-ds-1.tar.gz
- необходимо установить пакеты nvme-cli-1.8.х
1# 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)
1# ./elx_lpfc_install.sh -n -i
- Проверяем версию FW и драйвер:
12345678910# cat /sys/class/scsi_host/host*/modeldescEmulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel AdapterEmulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter# cat /sys/class/scsi_host/host*/fwrev12.6.240.22, sli-4:2:c12.6.240.22, sli-4:2:c# cat /sys/module/lpfc/version0:12.6.240.27
режим работы драйвера должен быть равен 3:
12[root@kzlnetapp02 ~]# cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type3
- распаковываем файл tar
- Правим параметры GRUB
- Редактируем /etc/default/grub добавляем параметр nvme_core.multipath=Y для включения NVMe Native Multipath. А также параметр IO scheduler elevator=none”
1# vim /etc/default/grub
- Генерируем конфигурацию
1234Run the grub2-mkconfig command to regenerate the grub.cfg file:# grub2-mkconfig -o /boot/grub2/grub.cfgAlternatively, on UEFI systems, run the following:# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Или
12# 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 с нужными значениями.
1# cat /sys/block/nvme0n1/queue/scheduler
123456[root@kzlnetapp02 ~]# lsmod|grep nvmenvmet_fc 32768 1 lpfcnvmet 98304 1 nvmet_fcnvme_fc 45056 1 lpfcnvme_fabrics 24576 1 nvme_fcnvme_core 98304 2 nvme_fc,nvme_fabrics
- Редактируем /etc/default/grub добавляем параметр nvme_core.multipath=Y для включения NVMe Native Multipath. А также параметр IO scheduler elevator=none”
- Настройка зон на коммутаторах Brocade
- Настройка системы хранения
- Настройка NVMe Native Multipath
1 |
# cat /sys/module/nvme_core/parameters/multipath |
Параметр по умолчанию Numa.
1 2 |
# cat /sys/devices/virtual/nvme-subsystem/nvme-subsys0/iopolicy Numa |
Создаём в ONTAP новое правило udev для обеспечения балансировки нагрузки в round-robin режиме NVMe, применяется ко всем Namespace на ONTAP:
1 |
# vi /usr/lib/udev/rules.d/71-nvme-iopolicy-netapp-ONTAP.rules |
Вставляем:
1 2 |
# 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 сопоставлен и обнаружен на хосте.
Например:
1 |
# cat /sys/devices/virtual/nvme-subsystem/nvme-subsys0/iopolicy |
Перезагружаем сервер.
Проверка результата предварительных работ
1 |
# nvme list |
Примечание: если всё сделано правильно, то мы увидим наш LUN (NameSpace). Если multipath не отработал, то мы увидим несколько путей (зависит от количество подключений по FC).
Для команды nvme – существует плагин NetApp для обработки Namespace ONTAP. Теперь он предоставляет 3 различных варианта отображения отчета о специфичных для NVMe подробностях ONTAP – столбец, json и raw (который используется по умолчанию), как показано в следующем примере:
1 |
# nvme netapp ontapdevices -o column |
1 |
# nvme netapp ontapdevices -o json |
1 |
# nvme netapp ontapdevices |
Следующая команда выводит информацию по путям:
1 |
# nvme list-subsys /dev/nvme0n1 |
Как мы можем здесь видеть, у нас есть 4 пути. Два live optimize – это активные пути (NameSpace может принадлежать только одному агрегату, а агрегат расположен на одном из контроллеров), и live inaccessible, принадлежавшие другому контроллеру, обмен данными по ним не происходит (для равномерной нагрузки NameSpace создаём на двух агрегатах равномерно).
Тест работы NVMe Native Multipath
Есть также состояния connecting optimize и connecting inaccessible, как на примере ниже.
При отключении одного порта на FC адаптере стали недоступны два пути и механизм multipath пытается их подключить.
Мониторинг SAN фабрики – представлен момент отключения одного из портов:
Нагрузка генерировалась vdbench со следующими параметрами:
1 2 3 4 5 6 7 8 9 10 |
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 |
Момент отключения порта на хосте:
1 2 3 4 5 6 |
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 |
Восстановление подключения
1 2 3 4 5 |
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