SCSI target over FC на FreeBSD, как сделать FC Storage с ZFS бекэндом

Жил да был дисковый сервер на FreeBSD, кторый отдавал по iSCSI тома с ZFS для стейджей под бекапы. Отдавал и отдавал, временами подглюкивал.
Какое-то время назад появилась мысль попробовать включить сервак в существующую SAN с помощью FC-HBA и отдавать тома по Fiber Channel, все равно бекапы идут на FCшные библиотеки. Это было бы всяко быстрее iSCSI, заодно надо было разобраться с FC target на FreeBSD.
(Upd: заметка долго провалялась в черновиках, история имела продолжение)

Для начала я поставил FC-HBAшку, это оказался 4Gb Qlogic 2432. Карточку я скоммутировал в один из свичей рабочей SAN фабрики на которой которой крутилась вся Fiber channel инфраcтруктура, осталось ее завести. Драйвер во фре для куложиков есть – isp. И к нему в довесок набор фирмварей ispfw. Подгружается и работает это все в виде модулей.

В системе HBA увиделся и даже нашел оказавшиеся давным давно отзонированными на его wwn’ы магнитофоны

Скажу сразу с наскоку у меня таргет естественно не заработал. В name server на FC-fabric ресурс не регистрировался, инициаторы ничего не видели, полная глушь. Информации по настройке FC target на FreeBSD в инете совсем не много, FreeNAS из коробки работать таргетом по FC не умеет совсем. Пришлось собирать всё по кусочкам и заводить руками. После некоторой возни мне это всё же удалось. Ниже о том как это сделать.

Идём дальше, в документации на isp(4) пишут что режим таргета он поддерживает. А также упоминаются хинты для задания режимов карточки – hint.isp.0.role. В интернетах есть упоминания и про разные значения паматра – “target” и “1”. Но если почитать /usr/src/sys/dev/isp/ispvar.h, то получается что непосредственно к включению режима таргета этот хинт не относится. Там же в мане, если почитать внимательно, можно найти что поддержка режима таргета для драйвера включается опцией при сборке модуля “options ISP_TARGET_MODE”. Тут как раз недавно появился release 10 с новым iscsi стеком в ядре, так что я решил обновить систему с 9тки для 10тки, и заодно пересобрать ядро с вышеуказаной опцией.

В конфиг ядра я добавил “options ISP_TARGET_MODE”, драйвер isp вкомпиливать в ядро я не стал, собрал в виде модуля, будет большая свобода дествий при тестировании.
Обновление системы я опущу, оно прошло без проблем. Продолжим с FC.

В /boot/loader.conf я добавил

что есть загрузка драйвера HBAшки и микрокода к ней и загрузка модуля CAM target layer, который собственно и отвечает за предоставление ресурсов блочных устройств.

В /boot/device.hints можно задать режим работы карточки индивидуально для каждого порта

Перезагружаемся или просто подгружаем модули налету и в логах можно наблюдать следующее:

А так же кучу мусора, значение которого я не очень-то понял

Будем считать что карта завелась, переменные драйвера можно посмотреть через sysctl

WWNы тут, почему-то, выводятся совершенно не те что видны со стороны FC-коммутатора, помему – я так и не выяснил. Так что SAN zoning я настраивал отдельно на самих брокейдах, выцепив port-wwn непосредственно с порта коммутатора куда был включен FC-HBA. Настройку FC-fabric я опущу, все стандартно, создается отдельная зона на target и initiator (PWWN карточки). (Маленький хинт, если нужно отзонировать 3 железки – СХД, сервер и ленту, то нужно делать 2 отдельные зоны на СХД-сервер и сервер-ленту).

Теперь можно попробовать завести таргет и отдать том по FC на сервер. В качестве блочного тома будет выступать ZFS volume – непосредственно vol и будет отдан как target device. Для начала сделаю тестовый том на ZFS, его и буду отдавать.

zfs create -V 100G str/vols/fctest

CAM target в FreeBSD управляется утилитой ctladm(8).

Для начала посмотрим список “портов”, доступных для управления

Тут видно что в системе есть как FC порты от QLogicовской карточки так и подсистема iSCSI.
Главное что есть нужные мне FC порты. Видно что они в оффлайне, т.е. режим target на карточке не используется. Включаем их

ну вот и реальные WWNы появились, можно проверить зонирование в фабриках по портам.
Где-то в списках рассылки я натыкался на рекоммендации выключать sync (CTL’s SYNCHRONIZE CACHE behavior) при работе с блочными бекэндами, т.к. не весь функционал target пока еще реализован, не вникая в детали, просто последую ему (но надо бы проверить как с этим обстоят дела сейчас).

ctladm realsync off

Ну и наконец публикация тома таргетом, просто создаю пробный том без лишних заморочек используя в качестве backend ранее созданый ZFS volume.

Можно посмотреть что появилось в списке устройств

camcontrol devlist -v

Со стороны инициатора теперь можно пересканировать шину и увидеть новый том – простенькое Fiber Channel СХД с поддержкой снапшотов, клонов и дедубликации готово :), можно форматировать диск и тестировать работу.

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">