Download PDF
Download page Настройка vHBA на сервере виртуализации.
Настройка vHBA на сервере виртуализации
При наличии функции маппирования LUN к конкретному серверу виртуализации, необходимо указывать WWID виртуальных карт ВМ, а не сервера виртуализации.
vHBA с помощью libvirt уже должны быть созданы на данный момент.
sudo apt install sysfsutils -ysystool -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 scsilrwxrwxrwx 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-4CODE - Конфигурационный файл
/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 -lllun-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 runningCODE - Определить уникальный идентификатор
WWN, определяющий конкретное целевое устройство:- если физический адаптер FC Fabric Adapter, необходимо выполнить команду:Пример вывода:
lspci -nn | grep -i fibre5f: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 hba07: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_hostlrwxrwxrwx 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/host18CODE - Проверить статусы портов
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 :::::::::::::: OnlineCODE - Вывести номера
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 :::::::::::::: 0x10000000c9831b4aCODE - Определить адаптеры, поддерживающие NPIV:Пример вывода:
virsh nodedev-list --cap vportsscsi_host15 scsi_host16CODE - Посмотреть дополнительные сведения одного из портов:где
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), может различаться между двумя серверами виртуализации для одного и того же физическогоvHBALUNв зависимости от порядка обнаружения каждого из серверов виртуализации. Для миграции диск, назначенный гостю с использованием пула хранения и имени тома, может быть сопоставлен с другим диском на целевом сервере виртуализации. Для таких случаев использования рекомендуется описывать диск по имени пути в конфигурационном файлеВМформата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-3CODEunit: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-3CODE Вывести список вновь созданных vHBA:
Пример вывода:virsh nodedev-list --cap fc_hostгдеscsi_host15 scsi_host16 scsi_host19 scsi_host20CODEscsi_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-1CODE - повторить шаги 20 и 21 для остальных LUN.