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

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
Автор
Редакция

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

Очистка и настройка Recent Places в macOS
macOS

Очистка и настройка Recent Places в macOS

Исправить ошибки Windows 10: 0x80070057 и 0xa0000400
Windows 10

Исправить ошибки Windows 10: 0x80070057 и 0xa0000400

Как удалить проблемные обновления Windows
Windows

Как удалить проблемные обновления Windows

Управление вкладками в Firefox и Chrome
Браузеры

Управление вкладками в Firefox и Chrome

Папка FOUND.000 в Windows 10 — что это и как удалить
Windows

Папка FOUND.000 в Windows 10 — что это и как удалить

Исправить: Windows 8.1 недоступен в регионе
Windows

Исправить: Windows 8.1 недоступен в регионе