Создаем своими руками 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'.
Loaded tcm_qla2xxx kernel module. 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): 21:00:00:e0:8b:94:2b:98 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]

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

/> 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]

Запись опубликована в рубрике Hardware с метками , . Добавьте в закладки постоянную ссылку.

3 комментария на «Создаем своими руками Fiber Channel Target»

  1. Sergey говорит:

    Было бы очень интересно почитать об этом же в разрезе использования технологии
    Fibre Channel over Ethernet.

  2. Ilya говорит:

    Здравствуйте.
    А cкорость работы Вы с таким таргетом случайно не тестировали?
    Т.е. интересна скорость чтения/записи самого raid в сервере и скорость чтения/записи таргета этого же raid оver FС.

  3. virus говорит:

    я так понимаю вас интересуют накладные расходы? их полноценно не тестировали.
    однако эта инсталляция всю полосу FC забивала, когда данные лказывались на ssd кэше.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *