Гид по технологиям

Как создать SAN на Fibre Channel с SCST и QLogic HBA на Linux (Debian 6)

6 min read Хранилище Обновлено 25 Nov 2025
SAN на Fibre Channel с SCST и QLogic (Debian 6)
SAN на Fibre Channel с SCST и QLogic (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/Файловую систему внутри виртуального диска — сначала проверьте производительность и режимы синхронизации.

Отладка и распространённые проблемы

  1. Модуль не загружается:
    • Проверьте dmesg и журнал syslog.
    • Убедитесь, что версии модулей совпадают с загруженным ядром.
  2. Клиенты не видят LUN:
    • Проверьте WWN инициаторов и группы в /etc/scst.conf.
    • Убедитесь, что логическая топология в FC-фиксе разрешает связь инициатор–таргет.
  3. Конфликты с системным драйвером:
    • Проверьте blacklist для qla2xxx.
    • Убедитесь, что оригинальный драйвер выгружен rmmod.
  4. Проблемы с производительностью:
    • Проверьте настройки MTU, скорость порта, мультиплексирование.

Альтернативные подходы

  • LIO (Linux IO Target): основной официально поддерживаемый таргет в ядре. Лучше интегрирован в современные ядра.
  • tgt (userspace iSCSI target): если нужен iSCSI вместо FC.
  • Коммерческие решения: поставщики SAN как продукты с поддержкой и инструментами управления.

Когда SCST подходит лучше: если вам нужны специфичные обработчики устройств или уже есть опыт и готовые SCST-хэндлеры.

Контроль совместимости и миграция

  • Проверяйте поддерживаемые версии ядра в репозитории SCST.
  • При миграции на более новое ядро рассмотрите переход на LIO, так как он поддерживается в ядре по умолчанию.
  • Переустановка прошивки HBA может потребовать перезагрузки и повторной проверки WWN.

Короткая методология (шаги в одной строке)

  1. Проверить наличие прошивки и WWN.
  2. Установить зависимости и исходники ядра.
  3. Патчить и конфигурировать ядро с поддержкой qla2x00t target.
  4. Собрать и установить ядро и модули SCST.
  5. Настроить scstadmin и /etc/scst.conf.
  6. Проверить доступность 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 и топологию.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как разблокировать Android без кнопки питания
Мобильные устройства

Как разблокировать Android без кнопки питания

Управление процессами в GNOME System Monitor
Linux

Управление процессами в GNOME System Monitor

Поиск по физическим книгам в Evernote
Продуктивность

Поиск по физическим книгам в Evernote

Восстановление писем Hotmail после перехода в Outlook
Почта

Восстановление писем Hotmail после перехода в Outlook

BerryBoot: мультизагрузка Raspberry Pi
Raspberry Pi

BerryBoot: мультизагрузка Raspberry Pi

Windows XP Mode в Windows 7: руководство и практика
IT/Системы

Windows XP Mode в Windows 7: руководство и практика