Download PDF
Download page Настройка vHBA на сервере виртуализации.
Настройка vHBA на сервере виртуализации
При наличии функции маппирования LUN к конкретному серверу виртуализации, необходимо указывать WWID
виртуальных карт ВМ, а не сервера виртуализации.
vHBA с помощью libvirt
уже должны быть созданы на данный момент.
sudo apt install sysfsutils -y
systool -c fc_host -v | grep port_name
port_name = "0x2100f4e9d4213700"
port_name = "0x2100f4e9d4213701"
port_name = "0x10000000c9831b4a"
port_name = "0x10000000c9831b4b"
"0x2100f4e9d4213700"
и"0x2100f4e9d4213701"
— физическиеWWID;
"0x10000000c9831b4a"
и"0x10000000c9831b4b"
— виртуальныеWWID.
СХД необходимо настроить таким образом, чтобы разрешенными инициаторами для ВМ были vHBA, с помощью которых планируется подключение.
На сервере виртуализации необходимо:
- Настроить службу
multipath
:sudo apt install multipath-tools -y
- Определить уникальный идентификатор
WWID
(World Wide Identifier) LUN:Пример вывода:ls -l /dev/disk/by-id/ | grep scsi
lrwxrwxrwx 1 root root 10 июл 10 21:10 scsi-3640eedd100533b616be51eb70000000a -> ../../dm-5 lrwxrwxrwx 1 root root 10 июл 10 21:42 scsi-3640eedd100533b617d1eec350000000f -> ../../dm-3 lrwxrwxrwx 1 root root 10 июл 10 22:05 scsi-3640eedd100533b617d1f143700000010 -> ../../dm-4
CODE - Конфигурационный файл
/etc/multipath.conf
привести к виду:defaults { user_friendly_names yes } multipaths { multipath { wwid 3640eedd100533b616be51eb70000000a alias lun-vm01 } multipath { wwid 3640eedd100533b617d1eec350000000f alias lun-vm01-002 } }
CODE - Перезапустить службу
multipath
:sudo systemctl reload multipathd.service
- Выполнить команду:Пример вывода:
sudo multipath -ll
lun-vm01 (3640eedd100533b616be51eb70000000a) dm-5 HUAWEI,XSG1 size=265G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=1 status=active |- 17:0:0:1 sdf 8:80 active ghost running |- 17:0:1:1 sdi 8:128 active ready running |- 18:0:0:1 sdl 8:176 active ready running `- 18:0:1:1 sdo 8:224 active ghost running lun-vm01-002 (3640eedd100533b617d1eec350000000f) dm-3 HUAWEI,XSG1 size=50G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=1 status=active |- 17:0:0:2 sdg 8:96 active ready running |- 17:0:1:2 sdj 8:144 active ghost running |- 18:0:0:2 sdm 8:192 active ghost running `- 18:0:1:2 sdp 8:240 active ready running
CODE - Определить уникальный идентификатор
WWN
, определяющий конкретное целевое устройство:- если физический адаптер FC Fabric Adapter, необходимо выполнить команду:Пример вывода:
lspci -nn | grep -i fibre
5f:00.0 Fibre Channel [0c04]: Cavium QLogic BR-1860 Fabric Adapter [1657:0022] (rev 01) 5f:00.1 Fibre Channel [0c04]: Cavium QLogic BR-1860 Fabric Adapter [1657:0022] (rev 01)
CODE - если физический адаптер FC PCI Express HBA:Пример вывода:
lspci | grep -i hba
07:00.0 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02) 07:00.1 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02)
CODE
- если физический адаптер FC Fabric Adapter, необходимо выполнить команду:
- Проверить доступные порты
WWPN
:Пример вывода:ls -l /sys/class/fc_host
lrwxrwxrwx 1 root root 0 июл 8 16:25 host15 -> ../../devices/pci0000:5d/0000:5d:02.0/0000:5f:00.0/host15/fc_host/host15 lrwxrwxrwx 1 root root 0 июл 8 16:25 host16 -> ../../devices/pci0000:5d/0000:5d:02.0/0000:5f:00.1/host16/fc_host/host16 lrwxrwxrwx 1 root root 0 июл 8 16:25 host17 -> ../../devices/pci0000:5d/0000:5d:02.0/0000:5f:00.1/host16/vport-16:0-0/host17/fc_host/host17 lrwxrwxrwx 1 root root 0 июл 8 16:25 host18 -> ../../devices/pci0000:5d/0000:5d:02.0/0000:5f:00.0/host15/vport-15:0-0/host18/fc_host/host18
CODE - Проверить статусы портов
WWPN
:после ввода команды необходимо нажать на клавишу <Enter> для вывода информации о каждом порте.more /sys/class/fc_host/host??/port_state
Пример вывода::::::::::::::: /sys/class/fc_host/host15/port_state :::::::::::::: Online :::::::::::::: /sys/class/fc_host/host16/port_state :::::::::::::: Online :::::::::::::: /sys/class/fc_host/host17/port_state :::::::::::::: Online :::::::::::::: /sys/class/fc_host/host18/port_state :::::::::::::: Online
CODE - Вывести номера
WWNN
вышеуказанных портов:после ввода команды необходимо нажать на клавишу <Enter> для вывода информации о каждом порте.more /sys/class/fc_host/host??/port_name
Пример вывода::::::::::::::: /sys/class/fc_host/host15/port_name :::::::::::::: 0x2100f4e9d4213700 :::::::::::::: /sys/class/fc_host/host16/port_name :::::::::::::: 0x2100f4e9d4213701 :::::::::::::: /sys/class/fc_host/host17/port_name :::::::::::::: 0x10000000c9831b4b :::::::::::::: /sys/class/fc_host/host18/port_name :::::::::::::: 0x10000000c9831b4a
CODE - Определить адаптеры, поддерживающие NPIV:Пример вывода:
virsh nodedev-list --cap vports
scsi_host15 scsi_host16
CODE - Посмотреть дополнительные сведения одного из портов:где
virsh nodedev-dumpxml scsi_host<номер_адаптера>
<номер_адаптера>
— номер адаптера, определенный в предыдущем шаге.
Пример вывода:<device> <name>scsi_host15</name> <path>/sys/devices/pci0000:5d/0000:5d:02.0/0000:5f:00.0/host15</path> <parent>pci_0000_5f_00_0</parent> <capability type='scsi_host'> <host>15</host> <unique_id>0</unique_id> <capability type='fc_host'> <wwnn>2000f4e9d4213700</wwnn> <wwpn>2100f4e9d4213700</wwpn> <fabric_wwn>100050eb1ae33d00</fabric_wwn> </capability> <capability type='vport_ops'> <max_vports>255</max_vports> <vports>1</vports> </capability> </capability> </device>
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
для каждого пула:<pool type='scsi'> <name>test1poolvhba1</name> <source> <adapter type='fc_host' parent='scsi_host15' wwnn='20000000c9831b4b' wwpn='10000000c9831b4b'/> </source> <target> <path>/dev/disk/by-path</path> <permissions> <mode>0700</mode> <owner>0</owner> <group>0</group> </permissions> </target> </pool>
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 <имя_пула>
<имя_пула>
— имя пула, заданное в конфигурационном файле.
Примеры вывода:unit:0:0:1 /dev/disk/by-path/pci-0000:5f:00.0-fc-0x200040eedd533b61-lun-1 unit:0:0:2 /dev/disk/by-path/pci-0000:5f:00.0-fc-0x200040eedd533b61-lun-2 unit:0:0:3 /dev/disk/by-path/pci-0000:5f:00.0-fc-0x200040eedd533b61-lun-3 unit:0:1:1 /dev/disk/by-path/pci-0000:5f:00.0-fc-0x201040eedd533b61-lun-1 unit:0:1:2 /dev/disk/by-path/pci-0000:5f:00.0-fc-0x201040eedd533b61-lun-2 unit:0:1:3 /dev/disk/by-path/pci-0000:5f:00.0-fc-0x201040eedd533b61-lun-3
CODEunit:0:0:1 /dev/disk/by-path/pci-0000:5f:00.1-fc-0x201040eedd533b61-lun-1 unit:0:0:2 /dev/disk/by-path/pci-0000:5f:00.1-fc-0x201040eedd533b61-lun-2 unit:0:0:3 /dev/disk/by-path/pci-0000:5f:00.1-fc-0x201040eedd533b61-lun-3 unit:0:1:1 /dev/disk/by-path/pci-0000:5f:00.1-fc-0x200040eedd533b61-lun-1 unit:0:1:2 /dev/disk/by-path/pci-0000:5f:00.1-fc-0x200040eedd533b61-lun-2 unit:0:1:3 /dev/disk/by-path/pci-0000:5f:00.1-fc-0x200040eedd533b61-lun-3
CODE Вывести список вновь созданных vHBA:
Пример вывода:virsh nodedev-list --cap fc_host
scsi_host15 scsi_host16 scsi_host19 scsi_host20
CODEscsi_host19
иscsi_host20
— новые адаптерыvHBA
.- Проверить настройки каждого из новых
vHBA
:гдеvirsh nodedev-dumpxml scsi_host<номер_адаптера>
<номер_адаптера>
— номер нового адаптера, полученный в предыдущем шаге. - Для каждого LUN создать конфигурационные файлы в формате
xml
:<disk type='block' device='lun'> <driver name='qemu' type='raw'/> <source dev='/dev/disk/by-path/pci-0000:5f:00.0-fc-0x200040eedd533b61-lun-1'/> <target dev='sda' bus='scsi'/> </disk>
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 <имя_ВМ>
Target Source ------------------------------------------------------------------------------ vda /var/lib/libvirt/images/alse-vanilla-1.7.4-qemu-max-mg11.2.0.qcow2 sda /dev/disk/by-path/pci-0000:5f:00.0-fc-0x201040eedd533b61-lun-1 sdb /dev/disk/by-path/pci-0000:5f:00.1-fc-0x201040eedd533b61-lun-1 sdc /dev/disk/by-path/pci-0000:5f:00.1-fc-0x200040eedd533b61-lun-1 sdd /dev/disk/by-path/pci-0000:5f:00.0-fc-0x200040eedd533b61-lun-1
CODE - повторить шаги 20 и 21 для остальных LUN.