Настройка iSCSI на Ubuntu 18.04: таргет и инициатор

Что такое iSCSI
iSCSI (Internet Small Computer System Interface) — сетевой протокол SAN, который передаёт SCSI-команды по TCP/IP, обеспечивая доступ на уровне блоков к удалённым устройствам хранения.
Короткое определение: iSCSI позволяет использовать удалённый диск как локальный блочный девайс через сеть IP.
Основные компоненты
- Таргет (iSCSI target) — сервис на сервере хранения, предоставляющий один или несколько LUN (логических устройств).
- Инициатор (iSCSI initiator) — клиент, который обнаруживает таргеты и подключается к LUN, чтобы работать с ними как с обычными дисками.
Требования
- Два сервера Ubuntu 18.04: один — таргет с внешним HDD 2 ГБ (в примере /dev/sdb1), второй — инициатор.
- Статические IP: таргет 192.168.0.103, инициатор 192.168.0.102.
- Привилегии root на обоих серверах.
Важно: в продакшн-окружении используйте защищённую сеть хранения или VLAN и настройте аутентификацию/шлюзы.
Подготовка серверов
Обновите оба сервера перед началом:
apt-get update -y
apt-get upgrade -yПосле обновления перезагрузите сервера, чтобы применить обновления.
Установка iSCSI таргета на Ubuntu
На сервере-таргете установите пакет tgt (Target Framework):
apt-get install tgt -yПроверьте статус сервиса:
systemctl status tgtОжидаемый результат: сервис запущен (active (running)). В логе могут встречаться предупреждения про RDMA, если соответствующие ядровые модули не загружены — это обычно не критично для TCP/iSCSI.
Конфигурация iSCSI таргета
Создайте конфигурационный файл таргета в /etc/tgt/conf.d:
nano /etc/tgt/conf.d/iscsi.confПример содержимого:
# Provided device as an iSCSI target
backing-store /dev/sdb1
initiator-address 192.168.0.102
incominguser iscsi-user password
outgoinguser iscsi-target secretpass
Пояснения параметров:
- target: уникальный IQN (iSCSI Qualified Name) таргета.
- backing-store: реальное устройство или файл образа, предоставляемые как LUN.
- initiator-address: IP разрешённого инициатора (ACL).
- incominguser / outgoinguser: пары логин/пароль для CHAP и взаимной аутентификации.
Перезапустите сервис, чтобы применить изменения:
systemctl restart tgtПроверьте доступность таргета:
tgtadm --mode target --op showВ выводе вы должны увидеть информацию о таргете, LUN и ACL.
Установка и настройка iSCSI инициатора
На сервере-инициаторе установите клиент open-iscsi:
apt-get install open-iscsi -yВыполните обнаружение таргетов:
iscsiadm -m discovery -t st -p 192.168.0.103Ожидаемый вывод содержит строку с IQN и порталом, например:
192.168.0.103:3260,1 iqn.2019-11.example.com:lun1После обнаружения в /etc/iscsi появятся файлы конфигурации для найденного таргета. Отредактируйте файл default для узла, чтобы прописать CHAP-креденшалы:
nano /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/defaultДобавьте или измените следующие строки:
node.session.auth.authmethod = CHAP
node.session.auth.username = iscsi-user
node.session.auth.password = password
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass
node.startup = automaticПерезапустите клиент:
systemctl restart open-iscsiВ выводе systemd будут логи входа в таргет и сообщение об успешном логине. После этого на стороне инициатора должен появиться новый блочный девайс (например, /dev/sdb).
Создание файловой системы и монтирование
На инициаторе создайте раздел на новом диске (/dev/sdb) с помощью fdisk:
fdisk /dev/sdbДалее создайте файловую систему на разделе (пример для /dev/sdb1):
mkfs.ext4 /dev/sdb1Создайте точку монтирования и смонтируйте:
mount /dev/sdb1 /mntПроверьте смонтированные файловые системы:
df -hТеперь LUN доступен как обычный диск и готов к использованию.
Проверка подключений и отладки
- Список блочных устройств: lsblk
- Информация о таргете на сервере: tgtadm –mode target –op show
- Сессии подключения: tgtadm –mode conn –op show –tid 1
- Логи systemd: journalctl -u tgt или journalctl -u open-iscsi
Типичные проблемы и подсказки:
- «No matching sessions found» при перезапуске open-iscsi — нормальное сообщение при отсутствии активных сессий; проверьте повторно discovery и файл default.
- Правильный IQN и IP в конфигурациях должны совпадать между таргетом и инициатором.
- Ошибки аутентификации — проверьте CHAP-данные и порядок полей username/username_in.
Безопасность и рекомендации
- Используйте отдельную сеть для трафика хранения (VLAN, отдельный физический интерфейс) или VPN.
- В продакшн не используйте простые пароли; применяйте сильные ключи CHAP и ограничивайте ACL по IP.
- Настройте мониторинг доступности дисков и уровней SMART для физических носителей.
- Регулярно делайте резервные копии данных; iSCSI предоставляет блочное устройство, но не является резервной стратегией.
Важно: iSCSI даёт блочный доступ — ошибки на клиенте могут привести к повреждению данных на LUN. Согласуйте политики монтирования и файловых систем (например, кластерные FS для мультихоста).
Когда эта схема не подходит
- Низкопроизводительные сети (например, медленный Wi‑Fi) — большие задержки и низкая пропускная способность.
- Большие мультихостовые сценарии записи без кластерной ФС — риск повреждений данных.
- Если требуется шифрование «по каналу», применяйте iSCSI поверх IPsec или отдельного защищённого туннеля.
Чек-листы ролей
Администратор таргета:
- Подключить и проверить физический диск на целевом сервере.
- Установить tgt, создать конфигурацию /etc/tgt/conf.d/iscsi.conf.
- Ограничить ACL по IP и настроить CHAP.
- Перезапустить и проверить tgtadm –mode target –op show.
Администратор инициатора:
- Установить open-iscsi, выполнить iscsiadm discovery.
- Настроить CHAP в файле default для узла.
- Перезапустить open-iscsi и проверить lsblk, df -h.
Критерии приёмки
- Таргет отображается на сервере-тартете и отвечает на discovery.
- Инициатор успешно логинится и получает блочный девайс (/dev/sdb).
- На данном девайсе можно создать файловую систему, смонтировать и записывать данные.
- Аутентификация CHAP проходит успешно; соединение инициируется автоматически после перезагрузки (node.startup = automatic).
Командная шпаргалка (cheat sheet)
- Установка таргета: apt-get install tgt -y
- Перезапуск: systemctl restart tgt
- Показ таргетов: tgtadm –mode target –op show
- Установка инициатора: apt-get install open-iscsi -y
- Обнаружение: iscsiadm -m discovery -t st -p
- Перезапуск клиента: systemctl restart open-iscsi
- Список дисков: lsblk
- Создание FS: mkfs.ext4 /dev/sdb1
- Монтирование: mount /dev/sdb1 /mnt
Короткий словарь (1 строка на термин)
- LUN — логический блок хранения, который предоставляет таргет.
- IQN — уникальное имя iSCSI-устройства, идентификатор таргета.
- CHAP — протокол аутентификации Challenge-Handshake для iSCSI.
- tgt — демон iSCSI-таргета на Linux (Target Framework).
- open-iscsi — клиент (инициатор) iSCSI для Linux.
Быстрая методология внедрения
- Подготовьте выделенную сеть/подсеть для iSCSI.
- Настройте таргет и ограничьте ACL/CHAP.
- На инициаторе выполните discovery и настройте CHAP.
- Протестируйте подключение, создайте FS, смонтируйте, выполните тестовую запись.
- Настройте автозапуск и мониторинг.
Технические проверки и тест-кейсы
- TC1: После iscsiadm discovery и перезапуска open-iscsi инициатор получает /dev/sdb — PASS.
- TC2: После создания и монтирования /dev/sdb1 возможна запись файлов и их чтение — PASS.
- TC3: Аутентификация CHAP при намеренной подмене пароля должна падать — PASS.
- TC4: После перезагрузки оба сервиса стартуют и подключение возобновляется автоматически — PASS.
Резюме
- iSCSI позволяет организовать блочное хранение по IP, разделяя роли таргета и инициатора.
- На Ubuntu 18.04 в примере мы использовали tgt для таргета и open-iscsi для инициатора.
- Всегда учитывайте безопасность сети хранения, CHAP и мониторинг состояния дисков.
Важно: перед внедрением в продакшн прогоните сценарии отказа и проверку восстановления данных.
Похожие материалы
Spotify не видит локальную музыку на телефоне
Ошибка «Документы в очереди» на HP — как исправить
Запуск нескольких команд в Linux
Сертификат сайта принадлежит другому — что делать
7-Zip: тема Windows 11 и инструкция