Настройка vHBA на сервере виртуализации
При наличии функции маппирования LUN к конкретному серверу виртуализации, необходимо указывать WWID
виртуальных карт ВМ, а не сервера виртуализации.
vHBA с помощью libvirt
уже должны быть созданы на данный момент.
На сервере виртуализации необходимо:
- Настроить службу
multipath
:sudo apt install multipath-tools -y
- Определить уникальный идентификатор
WWID
(World Wide Identifier) LUN:Пример вывода:ls -l /dev/disk/by-id/ | grep scsi
CODE - Конфигурационный файл
/etc/multipath.conf
привести к виду:CODE - Перезапустить службу
multipath
:sudo systemctl reload multipathd.service
- Выполнить команду:Пример вывода:
sudo multipath -ll
CODE - Определить уникальный идентификатор
WWN
, определяющий конкретное целевое устройство:- если физический адаптер FC Fabric Adapter, необходимо выполнить команду:Пример вывода:
lspci -nn | grep -i fibre
CODE - если физический адаптер FC PCI Express HBA:Пример вывода:
lspci | grep -i hba
CODE
- если физический адаптер FC Fabric Adapter, необходимо выполнить команду:
- Проверить доступные порты
WWPN
:Пример вывода:ls -l /sys/class/fc_host
CODE - Проверить статусы портов
WWPN
:после ввода команды необходимо нажать на клавишу <Enter> для вывода информации о каждом порте.more /sys/class/fc_host/host??/port_state
Пример вывода:CODE - Вывести номера
WWNN
вышеуказанных портов:после ввода команды необходимо нажать на клавишу <Enter> для вывода информации о каждом порте.more /sys/class/fc_host/host??/port_name
Пример вывода:CODE - Определить адаптеры, поддерживающие NPIV:Пример вывода:
virsh nodedev-list --cap vports
CODE - Посмотреть дополнительные сведения одного из портов:где
virsh nodedev-dumpxml scsi_host<номер_адаптера>
<номер_адаптера>
— номер адаптера, определенный в предыдущем шаге.
Пример вывода:CODE<name>scsi_host15</name>
— имя порта (потребуется для подключенияvhba pool
черезlibvirt
);<wwnn>2000f4e9d4213700</wwnn>
— уникальный идентификаторWWNN
(не должен совпадать сvHBA
или физическимиHBA
);<wwpn>2100f4e9d4213700</wwpn>
— уникальный идентификатор WWPN (не должен совпадать сvHBA
или физическимиHBA
);<fabric_wwn>100050eb1ae33d00</fabric_wwn>
— уникальный идентификаторWWN
;<max_vports>255</max_vports>
— максимальное количество виртуальных портов, которое может быть создано для использования виртуального адаптера шины;<vports>1</vports>
— количество виртуальных портов, определенных в настоящее время для использования виртуального адаптера шины.
- Создать конфигурационный файл в формате
xml
для каждого пула:CODE<name>test1poolvhba1</name>
— произвольное имя пула;<adapter type='fc_host' parent='scsi_host15'
— имя порта, полученное из шага выше;wwnn='20000000c9831b4b' wwpn='10000000c9831b4b'/> — уникальные значения, сгенерированные администратором.
- Создать пулы:где
virsh pool-define <имя_файла>.xml --validate
<имя_файла>
– имя конфигурационного файла, созданного ранее. - Запустить созданные пулы:где
virsh pool-start <имя_пула>
<имя_пула>
— имя пула, заданное в конфигурационном файле.При запуске пула
libvirt
проверит, существует ли ужеvHBA
с такими же уникальными идентификаторамиWWNN
иWWPN
. Если он не существует, будет создан новыйvHBA
с предоставленнымиWWNN
иWWPN
. Если он уже существует, команда определения завершится ошибкой, указывая на то, чтоWWNN
иWWPN
уже используются. - Настроить функцию автозапуска пулов хранения:где
virsh pool-autostart <имя_пула>
<имя_пула>
— имя пула, заданное в конфигурационном файле. - Сгенерировать для каждого пула список доступных
LUN
наvHBA
:Если важна миграция, необходимо понимать, что имя тома, представленное в выводе
virsh vol-list
(например,unit:A:B:C
илиunit:0:4:0
), может различаться между двумя серверами виртуализации для одного и того же физическогоvHBA
LUN
в зависимости от порядка обнаружения каждого из серверов виртуализации. Для миграции диск, назначенный гостю с использованием пула хранения и имени тома, может быть сопоставлен с другим диском на целевом сервере виртуализации. Для таких случаев использования рекомендуется описывать диск по имени пути в конфигурационном файлеВМ
форматаxml
.гдеvirsh vol-list <имя_пула>
<имя_пула>
— имя пула, заданное в конфигурационном файле.
Примеры вывода:CODECODE Вывести список вновь созданных vHBA:
Пример вывода:virsh nodedev-list --cap fc_host
CODEscsi_host19
иscsi_host20
— новые адаптерыvHBA
.- Проверить настройки каждого из новых
vHBA
:гдеvirsh nodedev-dumpxml scsi_host<номер_адаптера>
<номер_адаптера>
— номер нового адаптера, полученный в предыдущем шаге. - Для каждого LUN создать конфигурационные файлы в формате
xml
:CODE'/dev/disk/by-path/pci-0000:5f:00.0-fc-0x200040eedd533b61-lun-1'
— данные LUN, полученные в шаге ранее. - Подключить LUN со службой
multipath
:- если ВМ включена:где:
virsh attach-device <имя_ВМ> <имя_файла>.xml --live --persistent
<имя_ВМ>
— имя виртуальной машины;<имя_файла>
— имя конфигурационного файла.
- если ВМ выключена:где:
virsh attach-device <имя_ВМ> <имя_файла>.xml --config --persistent
<имя_ВМ>
— имя виртуальной машины;<имя_файла>
— имя конфигурационного файла.
- если ВМ включена:
- Вывести подключенные диски в ВМ:Пример вывода:
virsh domblklist <имя_ВМ>
CODE - повторить шаги 20 и 21 для остальных LUN.