iSCSI
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>)