Как создать SAN на Fibre Channel с SCST и QLogic HBA на Linux (Debian 6)
Введение
Это подробная инструкция по созданию SAN на основе Fibre Channel с серверной частью SCST и QLogic HBA в режиме таргета на Debian 6 / Ubuntu. Оригинальный материал был адаптирован и дополнен пояснениями, проверками и советами по совместимости. Предполагается, что вы понимаете основы работы Linux. Простое копирование команд без понимания может привести к нестабильной системе.
Важно: инструкция основана на ядре 2.6.32, но с практическим подходом многие шаги применимы к другим дистрибутивам и версиям ядра. Всегда делайте резервные копии и тестируйте на стенде.
Что нужно и краткая проверка окружения
- Машина с QLogic HBA (например qla2xxx).
- Debian/Ubuntu (на примере Debian 6 / Ubuntu похожие шаги).
- Исходники ядра и инструменты для сборки.
- Подключение к Интернету для скачивания firmware и исходников.
- Минимальные навыки: работа с консолью, редактирование файлов, установка пакетов.
Проверьте наличия прошивки для QLogic:
ls /lib/firmware/ | grep ql*Если прошивки нет — скачайте с официального сайта производителя: http://ldriver.qlogic.com/firmware/ и установите пакет firmware-qlogic для Debian.
Подготовка: загрузочное меню и конфигурация GRUB
Перед началом убедитесь, что вы можете попасть в меню загрузчика и изменить опции загрузки при необходимости.
Откройте файл настроек загрузчика:
nano /etc/default/grubСделайте видимым меню загрузки и уберите скрытие таймаута, сохраните файл и примените:
update-grubУстановка зависимостей для сборки ядра и модулей SCST
Установите базовые пакеты для сборки:
apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev gcc libncurses5-dev linux-headers-$(uname -r) lsscsi patch subversionУстановите зависимости для сборки текущего образа ядра:
apt-get build-dep --no-install-recommends linux-image-$(uname -r)Если требуется прошивка QLogic для Debian:
mkdir /root/tmp
cd /root/tmp
wget http://ftp.au.debian.org/debian/pool...ueeze1_all.deb
dpkg -i firmware-qlogic_0.28+squeeze1_all.deb
ls /lib/firmware/ | grep ql*(Замените URL на актуальный пакет для вашей версии.)
Скачивание SCST и подготовка к установке
Загрузите исходники SCST со SVN:
cd /root
svn co https://scst.svn.sourceforge.net/svnroot/scst/trunk scstОтключите системный драйвер QLogic, чтобы он не конфликтовал:
rmmod qla2xxx
echo blacklist qla2xxx >/etc/modprobe.d/blacklist-qla2xxx.confИсходники ядра: установка, распаковка и патч
Установите исходники ядра и создайте символическую ссылку на /usr/src/linux:
cd /usr/src
apt-get install linux-source-2.6
tar xjf linux-source-2.6.32.tar.bz2
ln -s /usr/src/linux-source-2.6.32 LinuxПримените патч SCST для ядра (пример для 2.6.32):
cd /usr/src/linux-source-2.6.32
patch -p1 < /root/scst/scst/kernel/scst_exec_req_fifo-2.6.32.patchСкопируйте текущий config вашего запущенного ядра в каталог исходников:
cp -vi /boot/config-`uname -r` .configЗамена драйвера QLogic в исходниках на SCST-версию
Сделайте резервную копию оригинального драйвера и замените ссылкой на SCST-драйвер:
mv /usr/src/linux/drivers/scsi/qla2xxx /usr/src/linux/drivers/scsi/qla2xxx_orig
ln -s ~/scst/trunk/qla2x00t /usr/src/linux/drivers/scsi/qla2xxxКонфигурация ядра: включаем таргетный режим QLogic
Запустите меню конфигурации ядра:
make menuconfigВ меню выберите путь:
Device Drivers -> SCSI device support -> SCSI low level drivers -> Qlogic 2xxx target mode support
Убедитесь, что поддержка QLogic target mode включена.
Совет: включите необходимые опции как встроенные или модульные в зависимости от вашей политики обновлений.
Ускорение сборки и сборка пакета .deb
Если у вас многоядерный CPU, установите уровень параллелизма:
export CONCURRENCY_LEVEL="число ядер плюс 1"Соберите ядро в deb-пакеты:
cd /usr/src/linux
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-scst kernel-image kernel-headersЗатем установите созданные deb-пакеты (имена файлов зависят от версии):
cd /usr/src/
dpkg -i linux-image-2.6.32-scst_2.6.32-scst-10.00.Custom_amd64.deb
dpkg -i linux-headers-2.6.32-scst_2.6.32-scst-10.00.Custom_amd64.debВ Ubuntu возможно потребуется обновить initramfs:
update-initramfs -uПерезагрузите систему и загрузитесь в новое ядро:
rebootСборка и установка SCST и драйверов таргета QLogic
Выберите режим сборки (по умолчанию debug). Для релизной сборки:
cd /root/scst
make 2releaseСоберите модули SCST и установите их:
cd /root/scst/scst/src
make all
make installСборка драйвера QLogic (пример):
cd /root/scst
BUILD_2X_MODULE=y CONFIG_SCSI_QLA_FC=y CONFIG_SCSI_QLA2XXX_TARGET=y \
make -s -C qla2x00t/qla2x00-target install
ls -l /lib/modules/`uname -r`/extra/qla2*Автозагрузка модулей и ручная загрузка
Добавьте модули в /etc/modules, чтобы они загружались при старте:
nano /etc/modulesВставьте в файл (в конец):
scst
qla2xxx_scst
qla2x00tgt
scst_vdisk
scst_user
scst_diskЗагрузите модули сейчас или перезагрузите систему:
modprobe scst
modprobe qla2xxx_scst
modprobe qla2x00tgt
modprobe scst_vdisk
modprobe scst_user
modprobe scst_diskПроверьте, что модули загружены и файлы модулей присутствуют в каталоге /lib/modules/uname -r/extra.
Определение WWN целевых портов
Узнайте WWN ваших FC-портов (Target WWN):
cat /sys/class/fc_host/host*/port_nameЗапишите значения — они будут использоваться в конфигурации SCST.
Установка и запуск scstadmin
Соберите и установите scstadmin:
cd /root/scst/scstadmin
make
make installПримеры команд для настройки таргета QLogic, группы и инициаторов:
scstadmin -enable_target "target WWN" -driver qla2x00t
scstadmin -add_group "group name" -driver qla2x00t -target "target WWN"
scstadmin -add_init "initiator wwn" -driver qla2x00t -target "target wwn" -group "group name"
scstadmin -add_init "additional initiator wwn" -driver qla2x00t -target "target wwn" -group "group name"Создание виртуального диска и LUN
Создадим файл-образ виртуального диска (пример):
dd if=/dev/zero of="file path" bs="size in kb" count=512
ls -l /mnt/disk1
file /mnt/disk1Откройте файл как устройство SCST и назначьте LUN:
scstadmin -open_dev "VD Name being disk1" -handler vdisk_fileio -attributes filename=/mnt/disk1
scstadmin -add_lun "lun ID" -driver qla2x00t -target "Target WWN" -group "group name" -device "VD Name being disk1"
scstadmin -write_config /etc/scst.confАвтозапуск scstadmin на старте системы
Если служебный скрипт /etc/init.d/scst не запускается автоматически, можно добавить вызов scstadmin в /etc/rc.local. Установите sudo, если его ещё нет:
apt-get install sudo
nano /etc/rc.localДобавьте перед строчкой exit 0:
sudo scstadmin -config /etc/scst.confПример /etc/scst.conf
HANDLER vdisk_fileio {
DEVICE VDisk01 {
filename /vdisk/VDisk01
}
}
TARGET_DRIVER qla2x00t {
TARGET 21:00:00:1b:32:08:6d:ea {
HW_TARGET
enabled 1
rel_tgt_id 1
GROUP esxi {
LUN 0 VDisk01
INITIATOR 20:00:00:1b:32:08:a7:c3
INITIATOR 21:00:00:1b:32:08:a7:c3
}
}
TARGET 21:01:00:1b:32:28:6d:ea {
HW_TARGET
enabled 0
}
}Оставьте конфигурацию читаемой. При массовом использовании применяйте контроль версий для /etc/scst.conf.
Важные примечания и советы безопасности
- Тестируйте на изолированной сети и на тестовом оборудовании. Ошибки в конфигурации SAN могут привести к потере данных.
- Всегда проверяйте совместимость версии драйвера QLogic с вашим HBA и версией прошивки.
- Логи ядра (dmesg) и /var/log/messages помогут при отладке модулей.
- Если используете LVM/Файловую систему внутри виртуального диска — сначала проверьте производительность и режимы синхронизации.
Отладка и распространённые проблемы
- Модуль не загружается:
- Проверьте dmesg и журнал syslog.
- Убедитесь, что версии модулей совпадают с загруженным ядром.
- Клиенты не видят LUN:
- Проверьте WWN инициаторов и группы в /etc/scst.conf.
- Убедитесь, что логическая топология в FC-фиксе разрешает связь инициатор–таргет.
- Конфликты с системным драйвером:
- Проверьте blacklist для qla2xxx.
- Убедитесь, что оригинальный драйвер выгружен rmmod.
- Проблемы с производительностью:
- Проверьте настройки MTU, скорость порта, мультиплексирование.
Альтернативные подходы
- LIO (Linux IO Target): основной официально поддерживаемый таргет в ядре. Лучше интегрирован в современные ядра.
- tgt (userspace iSCSI target): если нужен iSCSI вместо FC.
- Коммерческие решения: поставщики SAN как продукты с поддержкой и инструментами управления.
Когда SCST подходит лучше: если вам нужны специфичные обработчики устройств или уже есть опыт и готовые SCST-хэндлеры.
Контроль совместимости и миграция
- Проверяйте поддерживаемые версии ядра в репозитории SCST.
- При миграции на более новое ядро рассмотрите переход на LIO, так как он поддерживается в ядре по умолчанию.
- Переустановка прошивки HBA может потребовать перезагрузки и повторной проверки WWN.
Короткая методология (шаги в одной строке)
- Проверить наличие прошивки и WWN.
- Установить зависимости и исходники ядра.
- Патчить и конфигурировать ядро с поддержкой qla2x00t target.
- Собрать и установить ядро и модули SCST.
- Настроить scstadmin и /etc/scst.conf.
- Проверить доступность LUN с инициаторов.
Ролевые чек-листы
Администратор ядра:
- Резервная копия /boot и текущего config.
- Установить исходники, применить патч, собрать .deb.
Системный администратор хранения:
- Проверить прошивку HBA и WWN.
- Настроить SCST и тестовый LUN.
Оператор сети:
- Настроить FC-зоны и проверку видимости портов.
- Убедиться в согласованности MTU и скорости каналов.
Краткий глоссарий
- HBA: адаптер шины хоста для Fibre Channel.
- WWN: World Wide Name, уникальный идентификатор портов FC.
- LUN: логическое устройство хранения, экспортируемое таргетом.
- SCST: проект Linux Target (SCSI target stack) для реализации таргета в ядре или модуле.
Когда это может не сработать
- Наличие проприетарных аппаратных ограничений HBA.
- Несовместимость версии прошивки и драйвера.
- Конфликты с модулем, который невозможно выгрузить на работающей системе.
Итог и рекомендации
SCST с QLogic HBA даёт гибкость при создании FC-таргетов, но требует внимательного подхода к сборке ядра и совместимости прошивки. Для новых систем рассмотрите LIO как более интегрированную альтернативу. Всегда тестируйте на стенде и имейте план отката.
Ключевые файлы для проверки: /etc/scst.conf, /etc/modules, /var/log/syslog, dmesg. Сохраняйте конфигурации под контролем версий и документируйте WWN и топологию.
Похожие материалы
Как разблокировать Android без кнопки питания
Управление процессами в GNOME System Monitor
Поиск по физическим книгам в Evernote
Восстановление писем Hotmail после перехода в Outlook
BerryBoot: мультизагрузка Raspberry Pi