iSCSI

Материал из ALT Linux Wiki

iSCSI (/ˈaɪskʌzi/) это протокол представления блочных устройств поверх протокола TCP/IP. Среди многих протоколов, выполняющих аналогичную функцию, данный протокол выбирают, когда необходима конфигурация, сложнее, чем предоставляет AoE (ATA over Ethernet), но средств для работы с более мощным Fibre Channel не хватает.

Терминология

  • Target (Цель) — сервер iSCSI, предоставляющий доступ к блочным устройствам по соответствующему протоколу.
  • Initiator (Инициатор) — клиент iSCSI.

Требуемое ПО

В ALT Linux ПО для работы с данным протоколом представлено пакетами:

  • iscsi-scst
  • open-iscsi
  • open-isns
  • scsitarget-utils
  • targetcli

Наиболее популярным решением для организации программного iSCSI-клиента является пакет open-iscsi, а для сервера — scsitarget-utils.

Настройка iSCSI Target

Установите пакет scsitarget-utils командой:

# apt-get install scsitarget-utils

Таким образом мы получим:

  • сервис tgt для systemd;
  • скрипт запуска /etc/rc.d/init.d/tgt для sysvinit;
  • конфигурационные файлы: /etc/tgt/tgtd.conf и /etc/tgt/targets.conf.

Нюансы конфигурирования iSCSI Target

Классическая конфигурация таких сервисов предполагает, что данные блочных устройств передаются по отдельным физически изолированным каналам, а также в отдельном VLAN при необходимости. Потому включение авторизации зачастую является бессмысленным переусложнением конфигурации.

Настройка iSCSI Initiator

Установите пакет open-iscsi командой:

# apt-get install open-iscsi

В случае с пакетом open-iscsi после установки мы получаем:

  • сервис iscsid для systemd;
  • /etc/rc.d/init.d/open-iscsi — скрипт для sysvinit;
  • набор утилит для работы с iSCSI.

Конфигурационный файл демона расположен по адресу /etc/iscsi/iscsid.conf.


Пример настроек Target и Initiator

  • Через команду lsblk определяем жесткий диск (блочное устройство), которое мы собираемся отдать по iSCSI на какой то другой узел/сервер
  • Устанавливаем пакет с iSCSI Target Server (см. выше)
  • Смотрим файл /etc/tgt/conf.d/sample.conf, в самом начале есть простой пример создания Target и iQN
  • Копируем, записываем в конец файла targets.conf (адаптируем имя iqn и имя диска (/dev/sdX - указать нужный диск/блочное устройство)
  • Прописываем автозапуск службы systemctl enable tgt.service --now
  • Через команду: lsof -i -nP | grep -i "3260" проверяем, что служба запустилась и порт слушается.
  • На втором узле ставим клиента (см. выше)
  • Запускаем службу клиента: systemctl enable iscsid --now
  • Сканим сервер (Target): iscsiadm -m discovery -t sendtargets -p XXX.XXX.XXX.XXX:3260
  • Подключаем: iscsiadm -m node -T <IQN_TARGET> -p <IP_TARGET>:3260 --login
  • Используем (если через LVM, то pvcreate/vgcreate/lvcreate/mkfs.<нужная FS>)