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

Настройка iSCSI (Target и Initiator) на Ubuntu 20.04

• 5 min read • Linux • Обновлено 27 Nov 2025
iSCSI на Ubuntu 20.04: Target и Initiator
iSCSI на Ubuntu 20.04: Target и Initiator

Схема подключения iSCSI: сервер-таргет и инициатор с сетевым подключением

Введение

iSCSI (Internet Small Computer System Interface) — это протокол для обмена SCSI-командами поверх TCP/IP. Он позволяет шарить блочные устройства (разделы HDD/SSD, LVM, файлы-блоки) по сети. В модели iSCSI есть две роли:

  • Target — сервер, который предоставляет доступ к блочному хранилищу.
  • Initiator — клиент, который подключается к таргету и использует удалённый блок-устройствo как локальное.

Определение терминов в одну строку:

  • LUN — логический блок хранения, видимый инициатору как устройство.
  • CHAP — Challenge-Handshake Authentication Protocol, метод аутентификации.

Требования

  • Сервер с Ubuntu 20.04, на котором будет iSCSI Target. На нём есть внешний диск ~1 ГБ (пример: /dev/sdb).
  • Отдельная машина с Ubuntu 20.04 для iSCSI Initiator.
  • Статические IP: 192.168.1.10 — таргет, 192.168.1.20 — инициатор (пример).
  • Корневой доступ (root) на обоих серверах.

Важно: в реальной сети используйте безопасную схему адресации и надёжные пароли CHAP. iSCSI по умолчанию не шифрует трафик — при работе через недоверенные сети применяйте IPsec или VPN.

Обновление системы

Перед началом обновите пакеты на обеих машинах:

apt-get update -y
apt-get upgrade -y

После обновления рекомендуется перезагрузить систему.

Установка iSCSI Target (tgt)

На сервере, который будет таргетом, установите пакет tgt:

apt-get install tgt -y

Проверьте статус сервиса:

systemctl status tgt

Пример ожидаемого вывода (сокращённо):

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-07-11 07:13:04 UTC; 23s ago

Если служба не стартует — проверьте логи через journalctl -u tgt.

Конфигурация iSCSI Target

Создайте файл конфигурации таргета:

nano /etc/tgt/conf.d/iscsi.conf

Добавьте конфигурацию LUN:


     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass

Где:

  • Первая строка задаёт IQN (имя таргета).
  • backing-store указывает устройство на сервере (/dev/sdb).
  • initiator-address ограничивает доступ по IP инициатора.
  • incominguser — логин/пароль для входящих подключений.
  • outgoinguser — учётные данные, которые таргет может использовать при взаимной аутентификации.

После сохранения перезапустите сервис:

systemctl restart tgt

Проверьте конфигурацию через tgtadm:

tgtadm --mode target --op show

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

Target 1: iqn.2020-07.example.com:lun1
    System information:
        Driver: iscsi
        State: ready
    LUN information:
        LUN: 0
            Type: controller
            Size: 0 MB, Block size: 1
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.1.10

Установка и настройка iSCSI Initiator (open-iscsi)

На машине-инициаторе установите клиент:

apt-get install open-iscsi -y

Обнаружьте таргеты на сервере:

iscsiadm -m discovery -t st -p 192.168.1.10

Ожидаемый вывод:

192.168.1.10:3260,1 iqn.2020-07.example.com:lun1

Отредактируйте файл инициатора, если нужно задать собственное имя (по умолчанию генерируется):

nano /etc/iscsi/initiatorname.iscsi

Пример строки:

InitiatorName=iqn.2020-07.example.com:lun1

Затем настройте CHAP в node-конфигурации. Путь к файлу будет примерно такой:

nano /etc/iscsi/nodes/iqn.2020-07.example.com\:lun1/192.168.1.10\,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 iscsid

Проверьте статус:

systemctl status open-iscsi

Проверьте сессии iSCSI:

iscsiadm -m session -o show

Ожидаемый вывод:

tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.example.com:lun1 (non-flash)

И проверьте, что на клиенте появилось устройство (/dev/sdb):

lsblk

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

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
??sda1   8:1    0   80G  0 part /
sdb      8:16   0 1000M  0 disk

Создание файловой системы и монтирование

Разметьте устройство (/dev/sdb) и создайте раздел:

fdisk /dev/sdb

В процессе fdisk выполните создание нового раздела (n), подтвердите значения по умолчанию и затем запишите таблицу (w). Пример интерактивной сессии показан в оригинале.

Отформатируйте раздел:

mkfs.ext4 /dev/sdb1

Пример вывода mkfs.ext4:

mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 255744 4k blocks and 64000 inodes
Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3

Смонтируйте раздел:

mount /dev/sdb1 /mnt

Проверьте via df -h:

df -h

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

/dev/sdb1       968M  2.5M  899M   1% /mnt

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

  • На таргете запущен и активен сервис tgt.
  • Таргет присутствует в выводе tgtadm –mode target –op show.
  • На инициаторе видна iSCSI-сессия iscsiadm -m session -o show.
  • На инициаторе устройство /dev/sdb доступно в lsblk.
  • Раздел отформатирован и монтируется в /mnt.

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

Администратор таргета:

  • Проверил физическое устройство и права доступа.
  • Настроил /etc/tgt/conf.d/iscsi.conf и перезапустил tgt.
  • Ограничил ACL по IP.

Администратор инициатора:

  • Установил open-iscsi и получил discovery.
  • Настроил CHAP и включил автоматический старт сессии.
  • Отформатировал и смонтировал раздел на нужный путь.

Команды-шпаргалка

  • Установить target: apt-get install tgt -y
  • Проверить tgt: systemctl status tgt
  • Показать таргеты: tgtadm –mode target –op show
  • Установить initiator: apt-get install open-iscsi -y
  • Найти таргет: iscsiadm -m discovery -t st -p
  • Показать сессии: iscsiadm -m session -o show
  • Формат: mkfs.ext4 /dev/sdb1
  • Монтировать: mount /dev/sdb1 /mnt

Распространённые ошибки и их решения

  • Таргет не виден на инициаторе:

    • Проверьте сетевую доступность (ping, telnet IP 3260).
    • Убедитесь, что tgt слушает на порту 3260 (ss -ltnp).
    • Проверьте, не блокирует ли firewall порт 3260.
  • Аутентификация CHAP не проходит:

    • Удостоверьтесь, что логин/пароль совпадают на обеих сторонах.
    • Проверьте escape-последовательности в конфиг-файлах (символы \: и \, в путях nodes).
  • Устройство появляется, но не монтируется:

    • Убедитесь, что раздел создан (/dev/sdb1).
    • Проверьте dmesg на предмет ошибок I/O.

Когда iSCSI не подходит

  • Если вам нужно файловое шаринг уровня NFS/SMB, а не блочное устройство.
  • Если требуется шифрование в канале и нет возможности использовать VPN/IPsec.
  • Если сеть ненадёжна: iSCSI чувствителен к задержкам и потере пакетов.

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

  • NFS или SMB для файлового доступа.
  • Ceph/RBD для распределённого блочного хранилища.
  • Fibre Channel для высокопроизводительных SAN (требует отдельного оборудования).

План отката (rollback)

  1. Отключите инициатор: iscsiadm -m node –logout
  2. На клиенте размонтируйте файловую систему: umount /mnt
  3. Удалите запись из /etc/iscsi/nodes/ и /etc/iscsi/initiatorname.iscsi при необходимости.
  4. На таргете остановите tgt: systemctl stop tgt
  5. Верните конфигурационные файлы из бэкапа.

1-line glossary

  • iSCSI — блочное хранилище поверх TCP/IP.
  • LUN — логический блок хранилища.
  • IQN — уникальный идентификатор iSCSI-узла.
  • CHAP — протокол аутентификации.

Риски и смягчение

  • Риск: перехват трафика iSCSI в незашифрованной сети.
    • Смягчение: использовать VPN/IPsec или выделенные VLAN.
  • Риск: повреждение данных при одновременном доступе нескольких хостов.
    • Смягчение: использовать кластерную файловую систему (например, GFS2) или LVM2 с кластерными расширениями.

Короткий SOP для продакшн-развертывания

  1. Подготовить диск и сделать резервные копии.
  2. Настроить таргет в конфиге /etc/tgt/conf.d/ и ограничить ACL.
  3. Настроить CHAP и безопасно хранить пароли.
  4. Тестировать подключение в изолированной сети.
  5. Документировать конфигурацию и расписать откат.

Заключение

Вы успешно настроили iSCSI Target и Initiator на Ubuntu 20.04, создали LUN, подключились с клиента, отформатировали раздел и смонтировали его. Для продакшн-среды обязательно внедрите шифрование трафика и политику резервного копирования.

Если нужна помощь: укажите ошибки из journalctl, вывод lsblk и iscsiadm — помогу диагностировать.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро