Товарищ Virus, подаривший нам статьи про отказоустойчивый iSCSI-таргет и про установку ESX4i на офисных компах, снова на связи.
Как сделать Linux FC-target из компа, кучи SATA-дисков и FC-карты QLogic?
Что это нам дает:
- Возможность дешево получить дисковое место, подключаемое по Fibre Channel (вы возможно слышали о тормозах из-за latency при работе по iscsi?)
- Полное управление возможностями без дополнительных лицензий (опять же, возможно, слышали о Flashcache?)
- Полный контроль над ошибками и сбоями (а знали ли что mdadm умеет сам проверять состояние рейда и присылать письма в электронку если какой-то диск поломался?)
- Возможность подкрутить параметры и получить быстрый ребилд и лишние проценты производительности (Write-intent bitmap или stripe_cache_size?)
Что нам потребуется:
- Компьютер с PCIe 4,8 или 16х, желательно более 4ГБ ОЗУ и процессор новее, чем 2007 года выпуска (все же Gentoo будет компилировать свои кусочки).
- Карточка FC фирмы QLogic: 2400/2500/2600/8100/8300 (якобы с другими не работает, но я запускал на 2432. Список совместимых – http://linux-iscsi.org/wiki/Fibre_Channel#Hardware_support).
- Кроме дисков в 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):
Если у вас меньше строчек в этой меню – вы что-то забыли активировать.
Наиболее вероятно, что нет строки TCM_FC и не активирован драйвер HBA QLogic – (что приводит к невозможности работы с FC и ошибкам при настройке) искать это тут (Device Drivers / SCSI device support / SCSI low-level drivers):
Собственно на этом с ядром все, собираем и перезагружаемся в него (genkernel all&&reboot).
После этого в файле /etc/modprobe.d/qla2xxx.conf необходимо указать что адаптер не должен инициализироваться в режиме инициатора:
1 |
options qla2xxx qlini_mode="disabled" |
далее устанавливаем саму программу управления:
1 |
emerge -av sys-block/targetcli |
RAID-массив у меня уже есть, нужно только к нему приделать bitmap:
1 2 3 4 |
# 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 |
и видим что все получилось:
1 2 3 4 |
# 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):
1 2 3 4 5 6 |
/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, но пока только изнутри системы.
запускаем ПО:
1 |
# targetcli |
видим что инициализация прошла успешно (выделил болдом самое важное место):
1 2 3 4 5 6 7 8 9 10 11 |
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'. |
Отлично, давайте настроим карту:
1 2 3 4 5 6 |
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:
1 2 |
qla2xxx/ create 21:00:00:e0:8b:94:2b:98 Created target 21:00:00:e0:8b:94:2b:98. |
Создаем хранилище:
1 2 3 |
backstores/iblock create sata-r5 /dev/md127 Generating a wwn serial. Created iblock storage object sata-r5 using /dev/md127 |
Создаем LUN0:
1 2 3 |
/qla2xxx/21:00:00:e0:8b:94:2b:98/luns create /backstores/iblock/sata-r5 Selected LUN 0. Successfully created LUN 0. |
Добавляем доступ с инициаторов (не забудьте прописать зоны в FC-свитчах!):
1 2 3 |
/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. |
Смотрим, что получилось:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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] |
сохраняем настройки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/> 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 адаптера должен появится таргет с похожим именем:
1 |
LIO-ORG Fibre Channel Disk (naa.6001405d566ba0125e644df8007603ce) |
Не забудьте проверить:
- На свитче настроены zone, это самая частая ошибка.
- Target прописан в автостарте и вообще запускается.
- Установлен пакет с firmware (sys-block/qla-fc-firmware)
- FC-адаптер на таргете виден в lspci, очень часто PCIe выпадывают из слота. (выполнить lspci | grep ibre ): 02:00.0 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 02).
- FC адаптер на esxi установился, некоторые требуют установки extension.
Далее можно использовать устройство в VMware, но для оптимального результата стоит отключить ускорение (конечно если у вас нет других СХД, поддерживающих эту фичу – посмотреть можно в storage, колонка «hardware acceleration») иначе ESXi будет при каждой операции его пытаться использовать и тормозить.
Было бы очень интересно почитать об этом же в разрезе использования технологии
Fibre Channel over Ethernet.
Здравствуйте.
А cкорость работы Вы с таким таргетом случайно не тестировали?
Т.е. интересна скорость чтения/записи самого raid в сервере и скорость чтения/записи таргета этого же raid оver FС.
я так понимаю вас интересуют накладные расходы? их полноценно не тестировали.
однако эта инсталляция всю полосу FC забивала, когда данные лказывались на ssd кэше.
Здравствуйте, почтеннейшие.
Если имели опыт создания Shared Storage (общих LUN-ов на несколько узлов в кластере) через targetcli, то подскажите, что нужно “подкрутить” в свойствах LUN-а, чтобы не было проблем с его доступностью сразу с нескольких узлов кластера.
Что-то я не припоминаю пробокм, расскажите в чем они?
Пока LUN, полученный из LIO-таргета захвачен одним инициатором – вроде как всё тихо-спокойно. Как только отдаём этот LUN второму, третьему и т.д. инициатору, все инициаторы начинают сходит с ума (у инициаторов поочерёдно отваливается/появляется не только этот LUN, но и другие). Как я понимаю, проблема в конкурентном доступе к LUN-у, и, как я понимаю, проблема связана с Persistent Reservation. Так вот вопрос в том, какие дополнительные шаги требуются при конфигурации LUN-а, если его планируется использовать в мульти-хостовых подключениях, например в качестве стораджа под CSV в кластере Hyper-V.
На стороне hyperv вы все по мануалу сделали?
https://technet.microsoft.com/en-us/library/gg610692(v=sc.12).aspx
Вопрос не про сторону Hyper-V. Там всё в порядке. Подключение выполнялось к действующему двух-узловому кластеру, где другие тома CSV (с HP 3PAR/MSA) подключены и работают без вопросов. После этого была попытка подключить LUN уже к кластеру oVirt из трёх узлов CentOS 7, и там с этим LUN-ом наблюдалась точно такая же картина. Очевидно, что не хватает каких-то настроек на стороне таргета, которые позволяли бы использовать LUN в качестве Shared Storage
Боюсь что вопрос именно про сторону клиента.
Если вы конечно не подняли lio на чемто древнем типа 7го центоса.
Судя по документации все должно работать у вас.
Ps: VMware судя по документации эти механизмы не использует, переходите на неё)))