Fibre Channel – bonlesave.ru https://bonlesave.ru Записки о виртуализации и о жизни Fri, 14 Jun 2013 03:11:13 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.3 Создаем своими руками Fiber Channel Target https://bonlesave.ru/2013/06/14/sozdaem-svoimi-rukami-fiber-channel-target-2/ https://bonlesave.ru/2013/06/14/sozdaem-svoimi-rukami-fiber-channel-target-2/#comments Fri, 14 Jun 2013 03:11:13 +0000 https://bonlesave.ru/?p=5083 Continue reading "Создаем своими руками Fiber Channel Target"]]> Товарищ Virus, подаривший нам статьи про отказоустойчивый iSCSI-таргет и про установку ESX4i на офисных компах, снова на связи.

Как сделать Linux FC-target из компа, кучи SATA-дисков и FC-карты QLogic?

Что это нам дает:

  1. Возможность дешево получить дисковое место, подключаемое по Fibre Channel (вы возможно слышали о тормозах из-за latency при работе по iscsi?)
  2. Полное управление возможностями без дополнительных лицензий (опять же, возможно, слышали о Flashcache?)
  3. Полный контроль над ошибками и сбоями (а знали ли что mdadm умеет сам проверять состояние рейда и присылать письма в электронку если какой-то диск поломался?)
  4. Возможность подкрутить параметры и получить быстрый ребилд и лишние проценты производительности (Write-intent bitmap или stripe_cache_size?)

Что нам потребуется:

  1. Компьютер с PCIe 4,8 или 16х, желательно более 4ГБ ОЗУ и процессор новее, чем 2007 года выпуска (все же Gentoo будет компилировать свои кусочки).
  2. Карточка FC фирмы QLogic: 2400/2500/2600/8100/8300 (якобы с другими не работает, но я запускал на 2432. Список совместимых – http://linux-iscsi.org/wiki/Fibre_Channel#Hardware_support).
  3. Кроме дисков в RAID, нужен будет ещё диск под систему, все попытки запускать backstore на файлах заканчивались у меня зависаниями.

Первым делом необходимо установить ОС (в моем случае Gentoo, но технически можно любую – пропадет удобство сборки и обновления – из RPM/YUM не работает). Тут все банально, следует лишь учесть что ядро стоит брать самое новое (например, ловил глюки в TCM на версии 3.8.х которых не стало при переходе на 3.9-rc), а само ПО управления из GIT.

После установки нужно сконфигурировать ядро для поддержки Generic Target Core Mod (TCM). Я брал sys-kernel/Gentoo-sources версии 3.9.4 и настраивал следующим образом(Device Drivers / Generic Target Core Mod (TCM) and ConfigFS Infrastructure):clip_image001[4]
Если у вас меньше строчек в этой меню – вы что-то забыли активировать.

Наиболее вероятно, что нет строки TCM_FC и не активирован драйвер HBA QLogic – (что приводит к невозможности работы с FC и ошибкам при настройке) искать это тут (Device Drivers / SCSI device support / SCSI low-level drivers):clip_image003[4]

Собственно на этом с ядром все, собираем и перезагружаемся в него (genkernel all&&reboot).

После этого в файле /etc/modprobe.d/qla2xxx.conf необходимо указать что адаптер не должен инициализироваться в режиме инициатора:

options qla2xxx qlini_mode="disabled"

далее устанавливаем саму программу управления:

emerge -av sys-block/targetcli

RAID-массив у меня уже есть, нужно только к нему приделать bitmap:

# cat /proc/mdstat
md127 : active raid5 sde2[2] sdb2[0] sdc2[1] sdd2[3]
5860222464 blocks level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
mdadm -G /dev/md127 -b /md127_intent

и видим что все получилось:

# cat /proc/mdstat
md127 : active raid5 sde2[2] sdb2[0] sdc2[1] sdd2[3]
5860222464 blocks level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
bitmap: 466/466 pages [1864KB], 2048KB chunk, file: /md127_intent

добавим в автозапуск настройки (файл /etc/local.d/settings.start):

/sbin/mdadm --monitor --mail=ven@с***y.ru --daemonise /dev/md127
/usr/bin/setterm -powersave off -blank 0
sysctl -w dev.raid.speed_limit_min=500000
echo "2000000" > /sys/block/md127/md/sync_speed_max
blockdev --setra 16384 /dev/md127
echo 16384 > /sys/block/md127/md/stripe_cache_size

готово, теперь у нас отличный набор безумно дешевых SATA-дисков доступен, как RAID5, но пока только изнутри системы.

запускаем ПО:

# targetcli

видим что инициализация прошла успешно (выделил болдом самое важное место):

Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli GIT_VERSION (rtslib GIT_VERSION)
Copyright (c) 2011 by RisingTide Systems LLC.
All rights reserved.
Loaded tcm_fc kernel module.
Created '/sys/kernel/config/target/fc'.
<strong>Loaded tcm_qla2xxx kernel module. </strong>Created '/sys/kernel/config/target/qla2xxx'.
Loaded tcm_loop kernel module.
Created '/sys/kernel/config/target/loopback'.
Loaded iscsi_target_mod kernel module.
Created '/sys/kernel/config/target/iscsi'.

Отлично, давайте настроим карту:

qla2xxx/ info
Fabric module name: qla2xxx
ConfigFS path: /sys/kernel/config/target/qla2xxx
Allowed WWNs list (free type): <strong>21:00:00:e0:8b:94:2b:98 </strong>Fabric module specfile: /var/target/fabric/qla2xxx.spec
Fabric module features: acls
Corresponding kernel module: tcm_qla2xxx

С другим WWN карта создать вам не даст, это не Ethernet:

qla2xxx/ create 21:00:00:e0:8b:94:2b:98
Created target 21:00:00:e0:8b:94:2b:98.

Создаем хранилище:

backstores/iblock create sata-r5 /dev/md127
Generating a wwn serial.
Created iblock storage object sata-r5 using /dev/md127

Создаем LUN0:

/qla2xxx/21:00:00:e0:8b:94:2b:98/luns create /backstores/iblock/sata-r5
Selected LUN 0.
Successfully created LUN 0.

Добавляем доступ с инициаторов (не забудьте прописать зоны в FC-свитчах!):

/qla2xxx/21:00:00:e0:8b:94:2b:98/acls create 21:00:00:1b:32:1f:76:a0
Successfully created Node ACL for 21:00:00:1b:32:1f:76:a0
Created mapped LUN 0.

Смотрим, что получилось:

ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- fileio ................................................................................................... [0 Storage Object]
| o- iblock ................................................................................................... [1 Storage Object]
| | o- sata-r5 ............................................................................................ [/dev/md127 activated]
| o- pscsi .................................................................................................... [0 Storage Object]
| o- rd_dr .................................................................................................... [0 Storage Object]
| o- rd_mcp ................................................................................................... [0 Storage Object]
o- iscsi ............................................................................................................. [0 Targets]
o- loopback .......................................................................................................... [0 Targets]
o- qla2xxx ............................................................................................................ [1 Target]
| o- 21:00:00:e0:8b:94:2b:98 ........................................................................................... [enabled]
| o- acls ............................................................................................................. [3 ACLs]
| | o- 10:00:00:05:1e:fb:28:cc .................................................................................. [1 Mapped LUN]
| | | o- mapped_lun0 ............................................................................................... [lun0 (rw)]
| | o- 21:00:00:1b:32:1f:76:a0 .................................................................................. [1 Mapped LUN]
| | | o- mapped_lun0 ............................................................................................... [lun0 (rw)]
| | o- 21:00:00:1b:32:88:d8:eb .................................................................................. [1 Mapped LUN]
| | |  o- mapped_lun0 ............................................................................................... [lun0 (rw)]
| o- luns .............................................................................................................. [1 LUN]
| o- lun0 ...................................................................................... [iblock/sata-r5 (/dev/md127)]
o- tcm_fc ............................................................................................................ [0 Targets]

сохраняем настройки:

/&gt; saveconfig
WARNING: Saving localhost current configuration to disk will overwrite your boot settings.
The current target configuration will become the default boot config.
Are you sure? Type 'yes': yes
Making backup of loopback/ConfigFS with timestamp: 2013-05-31_03:05:44.355635
Successfully updated default config /etc/target/loopback_start.sh
Making backup of qla2xxx/ConfigFS with timestamp: 2013-05-31_03:05:44.355635
Successfully updated default config /etc/target/qla2xxx_start.sh
Making backup of fc/ConfigFS with timestamp: 2013-05-31_03:05:44.355635
Successfully updated default config /etc/target/fc_start.sh
Making backup of LIO-Target/ConfigFS with timestamp: 2013-05-31_03:05:44.355635
Generated LIO-Target config: /etc/target/backup/lio_backup-2013-05-31_03:05:44.355635.sh
Making backup of Target_Core_Mod/ConfigFS with timestamp: 2013-05-31_03:05:44.355635
Generated Target_Core_Mod config: /etc/target/backup/tcm_backup-2013-05-31_03:05:44.355635.sh
Successfully updated default config /etc/target/lio_start.sh
Successfully updated default config /etc/target/tcm_start.sh

Собственно все, у вас в свойствах FC адаптера должен появится таргет с похожим именем:

LIO-ORG Fibre Channel Disk (naa.6001405d566ba0125e644df8007603ce)

Не забудьте проверить:

  1. На свитче настроены zone, это самая частая ошибка.
  2. Target прописан в автостарте и вообще запускается.
  3. Установлен пакет с firmware (sys-block/qla-fc-firmware)
  4. FC-адаптер на таргете виден в lspci, очень часто PCIe выпадывают из слота. (выполнить lspci | grep ibre ): 02:00.0 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 02).
  5. FC адаптер на esxi установился, некоторые требуют установки extension.

Далее можно использовать устройство в VMware, но для оптимального результата стоит отключить ускорение (конечно если у вас нет других СХД, поддерживающих эту фичу – посмотреть можно в storage, колонка «hardware acceleration») иначе ESXi будет при каждой операции его пытаться использовать и тормозить.

clip_image005[4]

]]>
https://bonlesave.ru/2013/06/14/sozdaem-svoimi-rukami-fiber-channel-target-2/feed/ 9
Добавление нового FC коммутатора в Fabric https://bonlesave.ru/2011/07/04/dobavlenie-novogo-fc-kommutatora-v-fabric/ https://bonlesave.ru/2011/07/04/dobavlenie-novogo-fc-kommutatora-v-fabric/#comments Mon, 04 Jul 2011 06:59:05 +0000 https://bonlesave.ru/?p=2237 Continue reading "Добавление нового FC коммутатора в Fabric"]]> Эта статься является описанием процедуры добавления нового свитча или коммутатора в FC фабрику. Она является достоверной для коммутаторов Brocade, для остальных производителей могут быть отличными консольные команды и параметры свитчей.

Собственно процесс добавления нового свитча в фабрику не является сколько-нибудь сложным и практически не влияет на её работу. Весь процесс сводится к тому, чтобы подключить новый свитч в существующую фабрику и включить его. Далее свитч каскадно подключается к фабрике, получает от неё настройки и включается в работу, так что даже не требуется отключать какие-то части фабрики. Но добавление нового свитча вызывает перенастройку фабрики на время объединения, что может вызвать кратковременное прерывание в операциях I/O. По моему опыту это операция настолько кратковременная, что ни один из сервисов её не замечает. Так как большинство коммутаторов Brocade используют по-умолчанию U_Port, то даже не потребуется выбирать какой именно из портов будет выполнять роль ISL (Inter-Switch Link).

А теперь к подробностям

Параметры свитчей

Для того чтобы произошло каскадное подключение свитчей нужно соблюсти несколько условий. Основными являются:

  • уникальный Domain ID
  • уникальный IP адрес

Примечание: Рекомендованной практикой Brocade является назначение Domain ID вручную

Параметры свитчей:

Эти параметры должны быть идентичными на всех свитчах, чтобы они могли оперировать как единая фабрика.

  • BB_Credit
  • R_A_TOV
  • E_D_TOV
  • Data Field Size
  • Device Probing
  • VC Encoded Address Mode
  • Translative Mode
  • Per-Frame Route Priority
  • Core Switch PID Format

Эти параметры можно увидеть набрав  команду configShow. Для их изменения нудно использовать команду configure, подробнее стоит посмотреть в документе под названием: Brocade Fabric OS Reference.

Примечание: В современных свитчах и коммутаторах Brocade эти параметры идентичны, если Вы в своей фабрике не изменяли после установки.

 

Каскадирование свитчей – руководство

При каскадировании свитчей в фабрике, необходимо убедиться, что все свитчи входящие в фабрику следуют всем правилам, которые уже применяются в фабрике. Можно использовать это список рекомендаций для каскадирования свитчей:

  • Если куплена лицензия на Brocade Zoning (зонировние), то при добавлении свитча в фабрику он автоматически получит конфигурацию зон фабрики. Если на новом свитче уже настроено зонирование, тогда:
    •Названия алаисов, зон, конфигураций зон на новом свитче и на фабрике должны быть уникальными (настройки зон должны быть полностью различными). Или
    •Конфигурации зон на новом свитче должны быть идентичными конфигурации фабрики.
    Если название объекта зоны на новом свитче совпадёт с названием объекта зоны другого типа на фабрике, то возникнет ошибка сегментации.
  • При использовании Brocade Zoning, в первую очередь нужно отключить конфигурацию зонирования на новом свитче (используйте команду cfgDisable). Можно не отключать, если конфигурации зон абсолютно разные
  • Если в текущей фабрике конфигурация зон уже активна, но импортировать конфигурацию зон с нового свитча не требуется, то её можно удалить следующими командами: cfgClear – очистит конфигурацию, cfgSave – сохранит изменения.

    Примечание:
    Создавайте резервные копии конфигураций. Если запустить эту команду на фабрике, то будет удалена информация о зонировании всей фабрики.
  • Убедитесь, что Domain ID и IP адрес нового свитча уникальны для всей фабрики.
  • Убедитесь, что на фабрике происходит минимальная активность, так как добавление или удаление устройств из фабрики может привести к кратковременному прерыванию операций I/O.
  • Так же рекомендуется, чтобы все свитчи в фабрике имели одинаковую версию firmware, чтобы полный функционал был доступен всем компонентам фабрики.

Добавление нового свитча

В этой процедуре я каскадирую новый выключенный свитч в фабрику.
Итак, начнём:

    1. Проверить количество устройств в фабрике: topologyshow и nsallshow.
    2. Включить новый свитч и проверить по пунктам:
      •Уникальный Domain ID
      •Проверить наличие настроенного зонирования и, если оно было настроено, то очистить конфигурацию командами: cfgclear и cfgsave
      •Проверить совместимость параметров зонирования между Fabric OS (читать инструкции к FOS, там указаны параметры Interoperability)
      •Установить на новый свитч те же лицензии, что и на остальные устройства фабрики, если это возможно. Это позволит избежать сегментации.
      •Проверить совпадают ли все параметры фабрики перед слиянием.
    3. Выключить свитч по питанию или программно: switchdisable
    4. Подключить 1 ISL линк к фабрике. начнётся каскадирование и конфигурация фабрики перейдет на новый свитч. Остальные ISL подключаются по мере надобности для балансировки и отказоустойчивости.
    5. Включить свитч по питанию или switchenable
    6. Проверить наличие нового свитча в фабрике: fabricshow

 

    1. Проверить количество устройств в фабрике и сравнить изменения: topologyshow и nsallshow.

Всё. Свитч подключен к фабрике и теперь в него можно включать новые устройства.


Запись первоначально опубликована в блоге volnyanskiy.ru, автор Волнянский Виталий

 

]]>
https://bonlesave.ru/2011/07/04/dobavlenie-novogo-fc-kommutatora-v-fabric/feed/ 2