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

E. iSCSI

5 min read Хранилище Обновлено 19 Oct 2025
iSCSI: настройка сервера и клиента в тесте
iSCSI: настройка сервера и клиента в тесте

Кратко

Важно: пример использован для обучения и тестирования (Oracle RAC в лаборатории). Для боевого развёртывания используйте поддерживаемый стек (LIO, tgt, коммерческие SAN) и продуманную сетевую, аутентификационную и отказоустойчивую архитектуру.

E. iSCSI — обзор

iSCSI — это протокол для организации SAN (Storage Area Network) поверх существующей сетевой инфраструктуры. Он позволяет предоставлять блочные устройства по сети TCP/IP. В этом примере использовался проект iscsitarget (http://iscsitarget.sourceforge.net) для создания целевых LUN на физическом хосте.

Ключевые понятия на одной строке:

  • iSCSI target — сервер, предоставляющий LUN.
  • iSCSI initiator — клиент, подключающийся к целям и видящий удалённые диски.
  • LUN — логический блок хранения, видимый как SCSI-устройство.

1. Установка и настройка iSCSI-сервера

1.a Сборка tarball iscsitarget (на физическом хосте)

Действия, выполненные на физическом хосте:

  • Получите tarball с SourceForge и поместите его в /usr/local/src.
  • Перейдите в /usr/local/src:
cd /usr/local/src
  • Распакуйте архив и перейдите в каталог:
tar xvf iscsitarget-0.4.16.tar.gz  
cd iscsitarget-0.4.16
  • Соберите и установите пакет:
make  
make install

Примечание: в современных дистрибутивах предпочтительнее использовать готовые пакеты или более актуальные реализации (l.io, tgt), особенно на RHEL/CentOS 7/8/9.

1.b Конфигурация ietd.conf (определение LUN)

Ниже — пример моего /etc/ietd.conf, где определяются два LUN, привязанных к логическим томам физического хоста.

#/etc/ietd.conf
# NOTE: the config files has more entries than what i'm showing here.
# but i've commented out the original entries and made the following
Target iqn.2008-07.NODE00:LUN01.NODE00
   MaxConnections         2
   Lun 1 Path=/dev/Virtual00VG/lvLUN01,Type=fileio
   Alias LUN01
Target iqn.2008-07.NODE00:LUN02.NODE00
   MaxConnections         2
   Lun 2 Path=/dev/Virtual00VG/lvLUN02,Type=fileio
   Alias LUN02
# end of ietd.conf

В моём физическом хосте созданы два логических тома по 50 ГБ каждый. Можно вместо томов использовать файлы или разделы — тогда измените параметр Path соответствующим образом.

1.c ACL (разрешения инициаторов)

iscsitarget использует /etc/initiators.allow и /etc/initiators.deny по аналогии с hosts.allow/deny. В моём примере я разрешаю node01 и node02 подключаться к LUN, описанным в ietd.conf.

#/etc/initiators.allow
#this should correspond to the definition in your /etc/ietd.conf
iqn.2008-07.NODE00:LUN01.NODE00 192.168.100.10, 192.168.100.20
iqn.2008-07.NODE00:LUN02.NODE00 192.168.100.10, 192.168.100.20
# endof initiators.allow

Запуск сервиса и автозапуск при загрузке:

service iscsi-target start

и включение в автозагрузку:

chkconfig --add iscsi-target  
chkconfig iscsi-target on  
chkconfig --list iscsi-target
``` ```
iscsi-target 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Примечание: команды управления сервисами и chkconfig актуальны для SysV init (RHEL5). На более новых системах используйте systemctl.

2. Клиентская сторона (initiator)

Пакет iscsi-initiator-utils должен быть установлен на гостевых узлах. В моём примере это пакет iscsi-initiator-utils-6.2.0.865-0.8.el5 (включён в kickstart).

2.a Настройка инициатора

  • Отредактируйте /etc/iscsi/initiatorname.iscsi и укажите имя инициатора.
  • Мой пример /etc/iscsi/initiatorname.iscsi:
#/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2008-07.NODE00:LUN01.NODE00
InitiatorName=iqn.2008-07.NODE00:LUN02.NODE00
# end of #/etc/iscsi/initiatorname.iscsi
  • Запустите демоны и выполните обнаружение целей:
service iscsid start

Ожидаемый вывод при старте:

Turning off network shutdown. Starting iSCSI daemon: [ OK ]

Обнаружение:

iscsiadm -m discovery -t st -p node00

Ожидаемые результаты обнаружения (пример):

192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN01.NODE00  
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN02.NODE00
  • Затем запустите сервис iscsi, чтобы пройти логин и увидеть подключённые LUN:
service iscsi start

Пример вывода:

    iscsid (pid 964 963) is running...
    Setting up iSCSI targets: Login session [iface: default, target: \

    iqn.2008-07.NODE00:LUN02.NODE00, portal: 192.168.222.1,3260]
    Login session [iface: default, target: iqn.2008-07.NODE00:LUN01.\

    NODE00, portal: 192.168.222.1,3260] [  OK  ]
  • Проверьте dmesg и fdisk, чтобы убедиться, что ядро увидело SCSI-устройства:
dmesg

(в примере вывод показывает устройства sda и sdb ~53.6 GB каждый)

fdisk -l

(выдержка из примера показывает /dev/sda и /dev/sdb без таблицы разделов)

После обнаружения LUN

После того, как оба гостя увидят диски (sda, sdb), можно переходить к настройке кластера (двухузловой) и использованию общего хранилища (например, ASM для Oracle или OCFS2).

Примечание: для двух-мастеровых сценариев обязательно организуйте блокировку/cluster-aware filesystem (OCFS2, GFS2) или кластерную файловую систему/менеджер блочного доступа. Простое разделение LUN между двумя независимыми ОС без кластерного слоя приведёт к повреждению данных.

Критерии приёмки

  • iSCSI target отвечает на запросы discovery и login.
  • Клиенты видят SCSI-устройства (dmesg показывает scsi и sdX).
  • Таблица разделов/файловая система успешно создаются на целевых устройствах на клиенте (при тестировании на одном узле).
  • Для совместного доступа — файловая система или уровень блокировки над LUN поддерживает многопользовательский доступ (OCFS2, GFS2, кластерный менеджер).

Типичные проблемы и как их решать

  1. Не обнаруживаются цели при iscsiadm discovery:
    • Проверьте сетевую доступность (ping, tcp/3260).
    • Убедитесь, что сервис iscsi-target запущен на хосте.
    • Проверьте /etc/initiators.allow и /etc/initiators.deny.
  2. Логи показывают отказ при логине:
    • Проверьте соответствие IQN между client/target.
    • Основная проблема — ACL или mismatch имени.
  3. Клиент видит устройство, но оно «unknown partition table»:
    • Это нормально для чистого LUN. Создайте таблицу разделов или используйте LVM/форматирование на клиенте.
  4. Конфликты при параллельном монтировании диска на нескольких хостах:
    • Решение — использовать кластерную ФС или блокирующий уровень; нельзя по отдельности монтировать обычную ext4/xfs на разных хостах.

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

  • Использовать LIO (linux-iscsi) вместо iscsitarget — более современная и поддерживаемая реализация.
  • Использовать tgt (tgtd) как targetd-демон.
  • Аппаратные/NAS/SAN решения — для production среды предпочтительнее аппаратные контроллеры с HA и поддержкой мультипута.

Пошаговая методология (мини-SOP)

  1. Подготовьте физический хост: создайте LVs или файлы нужного размера.
  2. Установите и запустите iSCSI target (iscsitarget/tgt/LIO).
  3. Настройте ietd.conf (или конфиг целевого демона).
  4. Настройте ACL (/etc/initiators.allow).
  5. На клиентах укажите InitiatorName и запустите iscsid.
  6. Выполните discovery и login, проверьте dmesg/fdisk.
  7. Протестируйте создание FS/тома на одном узле.
  8. Для совместного доступа настройте кластерный слой и тестируйте отказоустойчивость.

Чек-лист ролей

Администратор сервера (target):

  • Создать LVM/файлы для LUN.
  • Конфигурировать ietd.conf.
  • Настроить ACL и контроль доступа.
  • Обеспечить мониторинг и бэкапы LUN.

Администратор клиента (initiator):

  • Проверить InitiatorName.
  • Выполнить discovery/login.
  • Протестировать чтение/запись.
  • Настроить кластерный слой или файловую систему с поддержкой кластерного режима.

Факты и полезные номера

  • Порт iSCSI по умолчанию: TCP 3260.
  • LUNs в примере: 50 ГБ (созданные как логические тома).
  • Минимум подключений: проверьте MaxConnections в конфиге target.

Безопасность и лучшие практики

  • Рассмотрите CHAP-аутентификацию для iSCSI.
  • Ограничьте доступ по IP и IQN в ACL.
  • Помните про сегментацию сети: iSCSI трафик лучше изолировать в отдельном VLAN или выделенной сети хранения.
  • Для production настройте мультипат (multipathd) и резервирование каналов.

Когда это не подходит (контрпример)

  • Вы не должны использовать такую лабораторную конфигурацию для критичных данных без HA, резервирования и тестов отказоустойчивости.
  • Для сценариев с высокими RTO/RPO лучше выбирать коммерческие SAN или кластерные решения с поддержкой производителя.

Заключение

Такая лабораторная настройка помогает понять базовые принципы кластеризации и общей организации блочного хранения через сеть без покупки дополнительного оборудования. Для реальной эксплуатации применяйте проверенные и поддерживаемые решения, уделяя внимание безопасности, резервированию и мониторингу.

Дальнейшее чтение

Краткий итог

iSCSI даёт гибкость в лабораторных и тестовых окружениях. Освойте процесс на тестовом стенде, а затем переходите к более зрелым и поддерживаемым решениям для production.

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

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

LibreOffice для студентов: бесплатный офис навсегда
Образование

LibreOffice для студентов: бесплатный офис навсегда

Как освободить место на iPhone быстро
iPhone

Как освободить место на iPhone быстро

JavaScript‑хаки для настройки Facebook
Социальные сети

JavaScript‑хаки для настройки Facebook

Как исправить «iMessage is Signed Out» на iPhone
iPhone

Как исправить «iMessage is Signed Out» на iPhone

Как управлять Steam Deck с ПК через Barrier
Гайды

Как управлять Steam Deck с ПК через Barrier

Распечатка Excel: умещаем и улучшаем таблицы
Excel

Распечатка Excel: умещаем и улучшаем таблицы