Данная статья является в некотором смысле вольным переводом статьи http://blogs.oracle.com/vreality/entry/storage_virtualization_with_comstar + мои дополнения.
1) Введение.
Сам по себе протокол FC инкапсулирует команды iSCSI, но в качестве среды передачи данных использует оптические каналы. В связи с этим, увеличивается стоимость (нужны соответственно оптические коммутаторы и прочее оборудование), но зато увеличивается и надёжность. Этот протокол, в отличии от iSCSI, лишён потери пакетов (так как не использует TCP/IP).
В FC существуют 2 типа портов: initiator и target. Initiator – это по сути клиент, а target – порт через который доступно хранилище.
Список портов можно посмотреть через команду:
# luxadm -e port
/devices/pci@0,0/pci1002,5a1f@b/pci1077,138@0/fp@0,0:devctl CONNECTED
/devices/pci@0,0/pci1002,5a1f@b/pci1077,138@0,1/fp@0,0:devctl NOT CONNECTED
Если порт присутствует, но не подключён – мы об этом узнаем.
По сути данная команда показывает только порты initiator’ы. Что бы посмотреть все доступные порты, можно использовать такой метод:
# mdb -k
Loading modules: [ unix genunix ... ]
> ::devbindings -q qlt
> ::devbindings -q qlc
ffffff0908ed7c58 pciex1077,2432, instance #0 (driver name: qlc)
ffffff0908ed7988 pciex1077,2432, instance #1 (driver name: qlc)
Здесь мы видим присутствие 2-х портов в режиме initiator (используется драйвер qlc).
2) Установка поддержки FC
В Solaris 11, в отличии от 10 очень много сервисов (samba, iscsi, fc, …) собраны в единый пакет storage-server. Отдельно поставить какой-нибудь компонент никак нельзя. Ставим его:
#pkg install storage-server
Для управления шарами используется сервис STMF, который по умолчанию отключён.
# svcs stmf
disabled 15:58:17 svc:/system/stmf:default
Включаем
# svcadm enable stmf
Проверяем
# svcs stmf
online 15:59:53 svc:/system/stmf:default
3) Создание target’a.
Создаём пул, на котором будем создавать ФС, которая и будет выступать в последствии LUN’ом (логической единицей для хранения данных). Хочу обратить внимание, что zfs нужно создавать обязательно с указанием объёма, иначе LUN не создастся:
#zpool create db mirror c0t0d0 c1t0d0
#zfs create -V 100G db/sharelun
Теперь создадим непосредственно LUN:
# sbdadm create-lu /dev/zvol/rdsk/tank/comstar-vol1
Created the following logical unit :
GUID DATA SIZE SOURCE
--------------------------- ------------------- ----------------
600144f07bb2ca0000004a4c5eda0001 53687025664 /dev/zvol/rdsk/db/sharelun
и проверим создание
# sbdadm list-lu
Found 1 LU(s)
GUID DATA SIZE SOURCE
-------------------------------- ------------------- ----------------
600144f07bb2ca0000004a4c5eda0001 53687025664 /dev/zvol/rdsk/db/sharelun
Следующим этапом сделаем наш LUN видимым для всех initiator’ов в сети:
# stmfadm add-view 600144f07bb2ca0000004a4c5eda0001
4) Информация о портах
Посмотрим информацию о портах:
# fcinfo hba-port HBA Port WWN: 21000024ff2ec0bc Port Mode: Initiator Port ID: 10100 OS Device Name: /dev/cfg/c12 Manufacturer: QLogic Corp. Model: QLE2462 Firmware Version: 05.04.03 FCode/BIOS Version: BIOS: 3.00; fcode: 3.15; EFI: 2.21; Serial Number: RFD1112M68451 Driver Name: qlc Driver Version: 20110321-3.05 Type: N-port State: online Supported Speeds: 1Gb 2Gb 4Gb Current Speed: 4Gb Node WWN: 20000024ff2ec0bc Max NPIV Ports: 127 NPIV port list: HBA Port WWN: 21000024ff2ec0bd Port Mode: Initiator Port ID: 0 OS Device Name: /dev/cfg/c13 Manufacturer: QLogic Corp. Model: QLE2462 Firmware Version: 05.04.03 FCode/BIOS Version: BIOS: 3.00; fcode: 3.15; EFI: 2.21; Serial Number: RFD1112M68451 Driver Name: qlc Driver Version: 20110321-3.05 Type: unknown State: offline Supported Speeds: 1Gb 2Gb 4Gb Current Speed: not established Node WWN: 20000024ff2ec0bd Max NPIV Ports: 127 NPIV port list:
Детальная информация о порте:
# fcinfo remote-port -sl -p 21000024ff2ec0bc Remote Port WWN: 21000024ff2ec110 Active FC4 Types: SCSI SCSI Target: yes Port Symbolic Name: qlt0,0 Node WWN: 20000024ff2ec110 Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 LUN: 0 Vendor: SUN Product: COMSTAR OS Device Name: /dev/rdsk/c0t600144F00200000000004EF354850001d0s2 Remote Port WWN: 21000024ff2ec192 Active FC4 Types: SCSI,IP SCSI Target: no Port Symbolic Name: qlc(0,0) Node WWN: 20000024ff2ec192 Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 Remote Port WWN: 21000024ff2ec193 Active FC4 Types: SCSI,IP SCSI Target: no Port Symbolic Name: qlc(1,0) Node WWN: 20000024ff2ec193 Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 Remote Port WWN: 21000024ff2ec03a Active FC4 Types: SCSI SCSI Target: yes Port Symbolic Name: qlt0,0 Node WWN: 20000024ff2ec03a Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 Remote Port WWN: 21000024ff2ec03a Active FC4 Types: SCSI SCSI Target: yes Port Symbolic Name: qlt0,0 Node WWN: 20000024ff2ec03a Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 LUN: 0 Vendor: SUN Product: COMSTAR OS Device Name: /dev/rdsk/c0t600144F0D0BEC80000004EF4BC960001d0s2 Remote Port WWN: 21000024ff2ec13c Active FC4 Types: SCSI SCSI Target: yes Port Symbolic Name: qlt0,0 Node WWN: 20000024ff2ec13c Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 LUN: 0 Vendor: SUN Product: COMSTAR OS Device Name: /dev/rdsk/c0t600144F00200000000004EF2A7E20001d0s2 Remote Port WWN: 21000024ff2ebf48 Active FC4 Types: SCSI SCSI Target: yes Port Symbolic Name: qlt0,0 Node WWN: 20000024ff2ebf48 Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 LUN: 0 Vendor: SUN Product: COMSTAR OS Device Name: /dev/rdsk/c0t600144F00200000000004EF48B630001d0s2
А так можно посмотреть информацию об устройствах (порты c12, c13 – FC-порты)
# cfgadm -al | grep connected c3 scsi-sas connected configured unknown c3::dsk/c3t31ACB1CC76F5DE6Ad0 disk connected configured unknown c3::dsk/c3t35A1051D7AE20B19d0 disk connected configured unknown c6 scsi-sas connected unconfigured unknown c7 scsi-sas connected unconfigured unknown c8 scsi-sas connected unconfigured unknown c9 scsi-sas connected unconfigured unknown c10 scsi-sas connected unconfigured unknown c11 scsi-sas connected unconfigured unknown c12 fc-fabric connected configured unknown c12::21000024ff2ebf48 disk connected configured unknown c12::21000024ff2ec03a disk connected configured unknown c12::21000024ff2ec110 disk connected configured unknown c12::21000024ff2ec13c disk connected configured unknown c12::21000024ff2ec192 unknown connected unconfigured unknown c12::21000024ff2ec193 unknown connected unconfigured unknown c13 fc connected unconfigured unknown usb4/5 usb-storage connected configured ok usb7/6 usb-storage connected configured ok usb8/1 usb-device connected configured ok
5) Изменения режима работы порта.
Что бы перевести порт в режим, например, target’a делаем следующее:
# update_drv -a -i '/pci@0,0/pci1002,5a1f@b/pci1077,138@0,1/fp@0,0' qlt
devfsadm: driver failed to attach: qlt
Warning: Driver (qlt) successfully added to system but failed to attach.
где путь берётся из вывода luxadm и /pci@0,0/pci1002,5a1f@b/pci1077,138@0,1/fp@0,0 – путь относительно каталога /devices. Ошибка значит лишь то, что в данный момент оно не может выгрузить драйвер – он будет выгружен при ребуте.
После изменения выполним
#init 6
Далее, заходим в mdb и смотрим:
root@sr602:/home/skeletor# mdb -k
Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc pcplusmp scsi_vhci zfs mpt_sas sd ip hook neti arp usba sockfs qlc fctl kssl stmf stmf_sbd md lofs random idm fcp cpc crypto nfs ufs logindmux ptm sppp ]
> ::devbindings -q ql
mdb: failed to get major number for ql
> ::devbindings -q qlc
ffffff114ccce5d0 pciex1077,2432, instance #0 (driver name: qlc)
> ::devbindings -q qlt
ffffff114ccce300 /pci@0,0/pci1002,5a1f@b/pci1077,138@0,1, instance #0 (driver name: qlt)
> $q
Как видим изменения прошли. Так же можно посмотреть инфу и через fcinfo:
# fcinfo hba-port HBA Port WWN: 210000e08b91facd Port Mode: Target Port ID: 2 OS Device Name: /dev/cfg/c13 Manufacturer: QLogic Corp. Model: 375-3294-01 Firmware Version: 04.04.01 FCode/BIOS Version: BIOS: 1.4; fcode: 1.11; EFI: 1.0; Serial Number: 0402R00-0634175788 Driver Name: qlt Driver Version: 20080617-2.30 Type: L-port State: online Supported Speeds: 1Gb 2Gb 4Gb Current Speed: 4Gb Node WWN: 200000e08b91facd Max NPIV Ports: 63 NPIV port list:
Так же можно посмотреть список target’ов:
# stmfadm list-target -v
Target: wwn.21000024FF2EC0BD
Operational Status: Online
Provider Name : qlt
Alias : qlt0,0
Protocol : Fibre Channel
Sessions : 3
Initiator: wwn.21000024FF2EC0BC
Alias: server.com
Logged in since: Wed Jan 25 12:45:46 2012
Initiator: wwn.21000024FF2EC192
Alias: :qlc0
Logged in since: Wed Jan 25 12:45:46 2012
Initiator: wwn.21000024FF2EC193
Alias: :qlc1
Logged in since: Wed Jan 25 12:45:46 2012
6) Настройка Initiator’a.
После того, как вы настроили target’ы, переходим к initiator’ам.
Что бы заново пересканировать все доступные target’ы, выполним команду:
luxadm -e forcelip /dev/cfg/c12
и теперь новые диски станут доступными. Что посмотреть изменения, запустим команду format:
# format
Searching for disks...
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/sd@0,0
1. c1t2d0 <FUJITSU-MAV2073RCSUN72G-0301-68.37GB>
/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/sd@2,0
2. c1t3d0 <FUJITSU-MAV2073RCSUN72G-0301-68.37GB>
/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/sd@3,0
3. c2t210000E08B91FACDd0 <SUN-COMSTAR-1.0 cyl 65533 alt 2 hd 16 sec 100>
/pci@7c0/pci@0/pci@9/SUNW,qlc@0/fp@0,0/ssd@w210000e08b91facd,0
Specify disk (enter its number):
Как можно заметить, у нас появился новый диск SUN-COMSTAR. Далее с ним можно работать как с обычным, то есть создавать пул, ФС, …
Примечание.
По не выясненным причинам во время загрузки ОС FC-порт долго поднимался, и в итоге пул был недоступен и из-за этого ОС грузилась достаточно долго, но пул всё равно оставался недоступным. В итоге пришлось отказаться от FC.
7) Multipathing
Пару слов хочется сказать о multipathing: это механизм, который предоставляет системе несколько путей до устройства с применением технологии отказоустойчивости и балансировки . Устройством может быть как хранилище, так и сетевое устройство (например, удалённый сервер).
При настройке разного рода FC/iSCSI очень желательно настроить и multipathing.
Очень неплохой tutorial по multipathing описан здесь