E. 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, кластерный менеджер).
Типичные проблемы и как их решать
- Не обнаруживаются цели при iscsiadm discovery:
- Проверьте сетевую доступность (ping, tcp/3260).
- Убедитесь, что сервис iscsi-target запущен на хосте.
- Проверьте /etc/initiators.allow и /etc/initiators.deny.
- Логи показывают отказ при логине:
- Проверьте соответствие IQN между client/target.
- Основная проблема — ACL или mismatch имени.
- Клиент видит устройство, но оно «unknown partition table»:
- Это нормально для чистого LUN. Создайте таблицу разделов или используйте LVM/форматирование на клиенте.
- Конфликты при параллельном монтировании диска на нескольких хостах:
- Решение — использовать кластерную ФС или блокирующий уровень; нельзя по отдельности монтировать обычную ext4/xfs на разных хостах.
Альтернативные подходы
- Использовать LIO (linux-iscsi) вместо iscsitarget — более современная и поддерживаемая реализация.
- Использовать tgt (tgtd) как targetd-демон.
- Аппаратные/NAS/SAN решения — для production среды предпочтительнее аппаратные контроллеры с HA и поддержкой мультипута.
Пошаговая методология (мини-SOP)
- Подготовьте физический хост: создайте LVs или файлы нужного размера.
- Установите и запустите iSCSI target (iscsitarget/tgt/LIO).
- Настройте ietd.conf (или конфиг целевого демона).
- Настройте ACL (/etc/initiators.allow).
- На клиентах укажите InitiatorName и запустите iscsid.
- Выполните discovery и login, проверьте dmesg/fdisk.
- Протестируйте создание FS/тома на одном узле.
- Для совместного доступа настройте кластерный слой и тестируйте отказоустойчивость.
Чек-лист ролей
Администратор сервера (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 или кластерные решения с поддержкой производителя.
Заключение
Такая лабораторная настройка помогает понять базовые принципы кластеризации и общей организации блочного хранения через сеть без покупки дополнительного оборудования. Для реальной эксплуатации применяйте проверенные и поддерживаемые решения, уделяя внимание безопасности, резервированию и мониторингу.
Дальнейшее чтение
- RHEL5 Virtualization Manual
- http://iscsitarget.sourceforge.net
- Oracle RAC HowTO
Краткий итог
iSCSI даёт гибкость в лабораторных и тестовых окружениях. Освойте процесс на тестовом стенде, а затем переходите к более зрелым и поддерживаемым решениям для production.
Похожие материалы

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

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

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

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

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