Пока было свободное время на работе, решил попробовать поставить один из наших программных продуктов. Этот эксперимент будет основой для нескольких статей.
Предлагаемое решение неофициальное, так как Ubuntu 20.04 на момент написания статьи не является сертифицированной или поддерживамой ОС на серверах SY480 Gen10. Но я давно питаю страсть к Ubuntu. Поэтому решил не искать простых путей с официальными RHEL и SUSE, а делать на Ubuntu.
Найти инструкцию, как настраивать FCoE на Ubuntu я не сумел. Наверное, это первый раз, когда у меня не было исходного руководства под этот дистрибутив. Нормального описания и плана действий нет на сайте Ubuntu, что печально. Можно только найти man-страницы на отдельные команды.
За основу взял это руководство по настройке на Red Hat. Об отличиях и особенностях напишу в этой статье.
Вводные данные:
- HPE Synergy с серверами HPE Synergy SY480 Gen10
- В серверах стоят конвергентные адаптеры 3820C (на других пока не пробовал)
- Для сервера создан и присвоен профиль
- В профиле определены подключения по Ethernet и Fibre Channel (на самом деле это однохоповый FCoE и Linux это знает)/
- С внешней СХД по FC выделены тома (в моем случае 2 штуки). Не смотря на название, загрузочных томов я пока не делал
- Сеть SAN и Virtual Connect настроены правильным образом. В данной инструкции настройка аппаратной части не рассматривается. Если нужны подробности, оставьте вопрос в комментариях
- Сеть Ethernet на сервере настроена и работает
План такой:
- Ставим необходимые пакеты
- Определяем порты Ethernet, которые пойдут под FCoE
- Настраиваем включение портов при запуске системы
- Настраиваем FCoE для выбранных портов
- Настраиваем инициализацию FCoE в ОС при запуске ОС
- Проверяем
Ставим необходимые пакеты:
ubuntu-kvm:~$ sudo apt update
ubuntu-kvm:~$ sudo apt dist-update
ubuntu-kvm:~$ sudo apt install -y sudo apt install fcoe-utils net-tools multipath-tools
Ищем наши порты FCoE. Для этого выводим список портов в ОС и сопоставляем их MAC-адреса с теми, что указаны для FC(FCoE)-портов в OneView (если вы повторяете работу в Synergy, или другим путем, если у вас другое оборудование).
ubuntu-kvm:~$ sudo ip link
1: lo:mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3f0:mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:03:ef brd ff:ff:ff:ff:ff:ff
3: ens3f1:mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:05:68 brd ff:ff:ff:ff:ff:ff
4: ens3f2:mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:03:f0 brd ff:ff:ff:ff:ff:ff
5: ens3f3:mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:03:f1 brd ff:ff:ff:ff:ff:ff
В дальнейшем я буду приводить команды для одного интерфейса. Их надо повторять для каждого интерфейса с FCoE. Для этих портов не будет IP-адресов. Без них с настройками по умолчанию порты будут в выключенном состоянии (state DOWN). Нужно настроить включение портов при загрузке сервера. Ответ найден тут, ответ №2. Открываем или создаем файл с настройками интерфейсов:
sudo vim /etc/network/interfacesСодержимое файла (в моем случае файл был создан с нуля и не содержал других настроек):
auto ens3f2Имена интерфейсов ens3f2 и ens3f3 нужно поставить свои.
iface ens3f2 inet manual
up ifconfig ens3f2 up
auto ens3f3
iface ens3f3 inet manual
up ifconfig ens3f3 up
В необходимости следующего действия я не уверен. По моим наблюдениям, порты поднимаются без файлов конфигурации. Но во всех инструкциях этот пункт присутствует. Для каждого интерфейса создается файл настройки. 1. Копируем шаблон. 2. редактируем для одного интерфейса. 3. Готовый файл клонируем для другого интерфейса:
ubuntu-kvm:~$ sudo cp /etc/fcoe/cfg-ethx /etc/fcoe/cfg-ens3f2Название конечного файла конфигурации - "cfg-" + имя интерфейса, в моем случае это "ens3f2". Выделил важные параметры, которые надо раскомментировать и при необходимости изменить.
ubuntu-kvm:~$ sudo vim /etc/fcoe/cfg-ens3f2
## Type: yes/no
## Default: no
# Enable/Disable FCoE service at the Ethernet port
# Normally set to "yes"
FCOE_ENABLE="yes"
## Type: yes/no
## Default: no
# Indicate if DCB service is required at the Ethernet port
# Normally set to "yes"
DCB_REQUIRED="no"
## Type: yes/no
## Default: no
# Indicate if VLAN discovery should be handled by fcoemon
# Normally set to "yes"
AUTO_VLAN="yes"
## Type: fabric/vn2vn
## Default: fabric
# Indicate the mode of the FCoE operation, either fabric or vn2vn
# Normally set to "fabric"
MODE="fabric"
## Type: yes/no
## Default: no
# Indicate whether to run a FIP responder for VLAN discovery in vn2vn mode
#FIP_RESP="yes"
Загружаем модуль ядра для FCoE и драйвер для функции FCoE для сетевой карты:
ubuntu-kvm:~$ sudo modprobe bnx2fcБудем загружать модули автоматически при запуске ОС. Редактируем файл /etc/modules:
ubuntu-kvm:~$ sudo modprobe fcoe
ubuntu-kvm:~$ sudo vim /etc/modulesИ в файле:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
fcoe
bnx2fc
Следующий шаг - перезапустить демоны. Можно проверить статусы.
ubuntu-kvm:~$ sudo systemctl status lldpadСам перезапуск
ubuntu-kvm:~$ sudo systemctl status fcoe-utils.service
ubuntu-kvm:~$ sudo systemctl status fcoemon.socket
ubuntu-kvm:~$ sudo systemctl restart lldpadУ меня при перезапуске "fcoe-utils" у меня появлялалсь ошибка, что сокет уже занят демоном "fcoemon". В этом случае я останавливал "fcoemon" и запускал "fcoe-utils".
ubuntu-kvm:~$ sudo systemctl restart fcoe-utils
ubuntu-kvm:~$ sudo systemctl restart networking.service
На всякий случай ставим демоны в автозапуск:
ubuntu-kvm:~$ sudo systemctl enable lldpad
ubuntu-kvm:~$ sudo systemctl enable fcoe-utils
По идее после этих действий команда "fcoeadm -i" должна показать готовый интефейс, как на выводе ниже, а в списке накопителей появиться наши диски:
administrator@ubuntu-kvm:~$ fcoeadm -iНо в моем случае вывод было либо пустым, либо параметр State была равен Offline. А тома с СХД не видны.
Failed reading capability ID at 0x48
Description: BCM57840 NetXtreme II Ethernet Multi Function
Revision: 11
Manufacturer: Broadcom Inc. and subsidiaries
Serial Number: Unknown
Driver: bnx2x 1.713.36-0
Number of Ports: 1
Symbolic Name: bnx2fc (QLogic BCM57840) v2.12.10 over ens3f2
OS Device Name: host2
Node Name: 0x1000de73391001e7
Port Name: 0x1000de73391001e6
Fabric Name: 0x100000110a060887
Speed: 8 Gbit
Supported Speed: 1 Gbit, 10 Gbit
MaxFrameSize: 2048 bytes
FC-ID (Port ID): 0x011e01
State: Online
administrator@ubuntu-kvm:~$ fcoeadm -i
Failed reading capability ID at 0x48
Description: BCM57840 NetXtreme II Ethernet Multi Function
Revision: 11
Manufacturer: Broadcom Inc. and subsidiaries
Serial Number: Unknown
Driver: bnx2x 1.713.36-0
Number of Ports: 1
Symbolic Name: bnx2fc (QLogic BCM57840) v2.12.10 over ens3f2
OS Device Name: host2
Node Name: 0x1000de73391001e7
Port Name: 0x1000de73391001e6
Fabric Name: 0x100000110a060887
Speed: 8 Gbit
Supported Speed: 1 Gbit, 10 Gbit
MaxFrameSize: 2048 bytes
FC-ID (Port ID): 0x011e01
State: Offline
Для того, чтобы всё заработало (в моем случае) нужно выполнить команду "sudo fipvlan -d -c -s -u <имя интерфейса> ". Опция "-d" дает подробный вывод на экран отладочной информации. Помогает при первичной настройке:
administrator@ubuntu-kvm:~$ sudo fipvlan -d -c -s -u ens3f2
fipvlan: creating netlink socket
fipvlan: Using /sys/bus/fcoe interfaces
fipvlan: sending RTM_GETLINK dump request
fipvlan: RTM_NEWLINK: ifindex 1, type 772, flags 10049
fipvlan: RTM_NEWLINK: ifindex 2, type 1, flags 11043
fipvlan: RTM_NEWLINK: ifindex 3, type 1, flags 1002
fipvlan: RTM_NEWLINK: ifindex 4, type 1, flags 11043
fipvlan: RTM_NEWLINK: ifindex 5, type 1, flags 11043
fipvlan: RTM_NEWLINK: ifindex 6, type 1, flags 11043
fipvlan: NLMSG_DONE
fipvlan: creating netlink socket
fipvlan: creating netlink socket
fipvlan: sending FIP VLAN request
fipvlan: waiting for IFF_RUNNING [1/20]
fipvlan: return from poll 1
fipvlan: received FIP VLAN Notification
fipvlan: VLAN ens3f2.3968 already exists as ens3f2.3968
Starting FCoE on interface ens3f2.3968
fipvlan: return from poll 0
fipvlan: return from poll 0
fipvlan: if 2: skipping, FIP not ready
fipvlan: if 3: skipping, FIP not ready
fipvlan: if 5: skipping, FIP not ready
Fibre Channel Forwarders Discovered
interface | VLAN | FCF MAC
------------------------------------------
ens3f2 | 3968 | XX:XX:XX:XX:07:d3
VLAN должен быть ненулевым. После этого у вас появится новый интерфейс, включающий номер VLAN. После надо выполнить эту же команду для других FCoE портов.
administrator@ubuntu-kvm:~$ fcoeadm -i
Failed reading capability ID at 0x48
Description: BCM57840 NetXtreme II Ethernet Multi Function
Revision: 11
Manufacturer: Broadcom Inc. and subsidiaries
Serial Number: Unknown
Driver: bnx2x 1.713.36-0
Number of Ports: 1
Symbolic Name: bnx2fc (QLogic BCM57840) v2.12.10 over ens3f2.3968
OS Device Name: host2
Node Name: 0x1000de73391001e7
Port Name: 0x1000de73391001e6
Fabric Name: 0x100000110a060887
Speed: 8 Gbit
Supported Speed: 1 Gbit, 10 Gbit
MaxFrameSize: 2048 bytes
FC-ID (Port ID): 0x011e01
State: Online
Проверяем, появились ли тома с СХД (выделены).
ubuntu-kvm:~$ cat /proc/partitionsВидно, что видны как отдельные тома, а точнее пути к одному тому на СХД (sde и sdc, sdf и sdd), так и собранные мультипасингом тома sdf + sdd -&rt; dm-0, sde + sdc -&rt; dm-1. Настраивать мультипасинг руками не пришлось.
major minor #blocks name
7 0 56276 loop0
7 1 56712 loop1
7 2 72984 loop2
7 3 71436 loop3
7 4 31836 loop4
7 5 30600 loop5
8 0 195325920 sda
8 1 524288 sda1
8 2 194798592 sda2
8 64 104857600 sde
8 80 2202009600 sdf
8 32 104857600 sdc
8 48 2202009600 sdd
253 0 2202009600 dm-0
253 1 104857600 dm-1
Команду "fipvlan" надо выполнять при каждом старте ОС. Поэтому сделаем сервис для нее. Альтернативные методы - использовать файл /etc/rc.local или crontab
Делаем скрипт с командой:
ubuntu-kvm:~$ sudo vim /usr/local/bin/fcoe-init.shВ файле по строке для каждого интерфейса строки. опцию "-d" и сброс в лог "> /home/administrator/fcoe-init.log" можно убрать после отладки.
ubuntu-kvm:~$ sudo chmod +x /usr/local/bin/fcoe-init.sh
#!/bin/bash -eТеперь файл сервиса:
/usr/sbin/fipvlan -d -c -s -u ens3f2 >> /home/administrator/fcoe-init.log
/usr/sbin/fipvlan -d -c -s -u ens3f3 >> /home/administrator/fcoe-init.log
ubuntu-kvm:~$ sudo vim /etc/systemd/system/fcoe-init.serviceCостав файла:
ubuntu-kvm:~$ sudo chmod +x /etc/systemd/system/fcoe-init.service
[Unit]
After=network.service
[Service]
ExecStart=/usr/local/bin/fcoe-init.sh
[Install]
WantedBy=default.target
Если пока всё шло хорошо, перезагрузите систему, проверьте, подключаются ли тома после перезагрузки ОС. Еще одна команда для просмотра томов в ОС:
ubuntu-kvm:~$ sudo fdisk -l
[sudo] password for administrator:
Disk /dev/loop0: 54.98 MiB, 57626624 bytes, 112552 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop1: 55.39 MiB, 58073088 bytes, 113424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop2: 71.28 MiB, 74735616 bytes, 145968 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop3: 69.78 MiB, 73150464 bytes, 142872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop4: 31.9 MiB, 32600064 bytes, 63672 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop5: 29.9 MiB, 31334400 bytes, 61200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 186.28 GiB, 200013742080 bytes, 390651840 sectors
Disk model: LOGICAL VOLUME
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disklabel type: gpt
Disk identifier: A674B582-0E3C-438C-B1B9-820C557E9671
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 390647807 389597184 185.8G Linux filesystem
Disk /dev/sde: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VV
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk /dev/sdf: 2.5 TiB, 2254857830400 bytes, 4404019200 sectors
Disk model: VV
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk /dev/sdc: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VV
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk /dev/sdd: 2.5 TiB, 2254857830400 bytes, 4404019200 sectors
Disk model: VV
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk /dev/mapper/mpatha: 2.5 TiB, 2254857830400 bytes, 4404019200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk /dev/mapper/mpathb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
На этом всё. Спасибо, что были с нами. Оставляйте вопросы в комментариях
4 комментария:
Подскажите, какие настройки сети нужно выставить в OneView?
При установке Ubuntu система ругается, что интерфейсы не работают. Сеть не поднимается
Сергей, добрый день!
В настройках OneView сделано несколько виртуальных портов на адаптере. На первом рисунке они видны. FC-порты (3:1b, 3:2b) не не поднимаются. Вся статья о том, как заставить их работать. Интерфейс 3:1a - нетегированный порт, на который заведен VLAN моего демостенда. Если я правильно помню, то в процессе установки он работал. Адаптер в сервере - 3820C. С другими не пробовал.
я бы предложил поставить Ubuntu даже без сети (если ни один порт не работает) через Virtual Media. И потом занаться диагностикой из самой ОС.
Еще такой вопрос. Другие ОС на этом или других серверах видят сеть? Проблема именно с Ubuntu? Или проблема не зависит от ОС и дело в настройках OneView
Если не получится, сделайте снимки экрана, выложите куда-нибудь (Гугл.Драйв, Яндекс.Диск). Как настроен профиль, что показывается ip addr в Ubuntu?
Евгений, благодарю за ответ, попробуем.
На серверах в шасси стоит так же Windows Server 2019 Datacenter - он сразу увидел 2 интерфейса, подключённых в Server Profile
Сергей, добрый день!
Что скажете? Какие результаты?
Отправить комментарий