В статье рассматривается пример настройки iSCSI в SAN для внешнего хранилища и узлов кластера под управлением ОС AlmaLinux 8 и Astra Linux 1.7. Для других ОС порядок настройки может отличаться.
Порядок настройки SAN перед созданием сетевого LVM-хранилища:
- Настройте внешнее хранилище как таргет (iSCSI target).
- Настройте узлы кластера VMmanager как инициаторы (iSCSI initiator).
- Установите на узлы кластера ПО LVM2.
Основные термины
- инициатор (iSCSI initiator) — устройство-клиент, которое отправляет запрос на подключение к таргету. В рассматриваемом примере роли инициаторов выполняют узлы кластера VMmanager;
- таргет (iSCSI target) — программа или устройство, осуществляющее эмуляцию диска и обрабатывающее запросы инициаторов на соединение. Таргет может быть логически поделён на LUN;
- LUN (Logical Unit Number) — составная часть таргета, адрес устройства хранения. Аналог раздела диска или отдельного логического тома;
- TPG (Target Portal Group) — группа таргетов, объединяемых по общему функциональному признаку. Как правило, таргеты на одном устройстве объединяются в одну TPG;
- IQN (iSCSI Qualified Name) — уникальный идентификатор инициатора или таргета;
- ACL (Access Control List) — список управления доступом. Определяет какие инициаторы могут подключаться к таргету и их данные аутентификации.
Настройка внешнего хранилища
- Подключитесь к серверу по SSH с учётной записью суперпользователя. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
-
Убедитесь, что вы используете последнюю версию пакетов ПО:
AlmaLinuxdnf update
Astra Linuxapt update
-
Установите оболочку для управления таргетом:
AlmaLinuxdnf -y install targetcli
Astra Linuxapt -y install targetcli-fb
-
Проверьте объём свободного места на диске:
df -hT
Рекомендуем использовать отдельный раздел или физический диск для создания таргета. -
Создайте директорию для таргета. Например, /var/targetdisk01:
mkdir /var/targetdisk01
-
Запустите консоль targetcli:
targetcli
-
Создайте файл для таргета:
cd /backstores/fileio
create <target name> <path> <size>
Пояснения к команде -
Задайте IQN для таргета:
cd /iscsi
create iqn.<year>-<month>.<reverse domain>:<name>
Пояснения к командеОтвет будет содержать номер созданной TPG.
-
Создайте LUN:
cd <iqn>/<tpg>/luns
Пояснения к командеcreate /backstores/fileio/<target name>
Пояснения к командеОтвет будет содержать номер созданного LUN.
-
Настройте ACL для таргета:
-
Задайте IQN инициатора:
cd /iscsi/<iqn>/<tpg>/acls
Пояснения к командеcreate iqn.<year>-<month>.<reverse domain>:<initiator name>
Пояснения к команде -
Задайте id пользователя и пароль инициатора:
cd iqn.<year>-<month>.<reverse domain>:<initiator name>
set auth userid=<id>
set auth password=<pass>
Пояснения к командам -
Включите авторизацию для инициатора:
set attribute authentication=1
-
-
Убедитесь, что все настройки созданы успешно:
ls /iscsi/
Пример вывода командыo- iscsi .......................................................... [Targets: 1] o- iqn.2020-03.com.example:mytarget1 ............................... [TPGs: 1] o- tpg1 ............................................. [no-gen-acls, no-auth] o- acls ........................................................ [ACLs: 1] | o- iqn.2020-03.com.domain>:initiator1 ................. [Mapped LUNs: 1] | o- mapped_lun0 ........................ [lun0 fileio/targetdisk1 (rw)] o- luns ........................................................ [LUNs: 1] | o- lun0 [fileio/targetdisk1 (/var/targetdisk01/targetdisk1.img) (default_tg_pt_gp)] o- portals .................................................. [Portals: 1] o- 0.0.0.0:3260 ................................................... [OK]
-
Чтобы сохранить настройки, выйдите из консоли targetcli:
exit
-
Добавьте сервис target в автозагрузку:
-
для ОС AlmaLinux — выполните команду:
systemctl enable target
-
для ОС Astra Linux — выполните команду:
systemctl enable targetclid.service
-
-
Если вы используете firewalld, установите необходимые разрешения и перезапустите сервис:
firewall-cmd --add-service=iscsi-target --permanent
firewall-cmd --reload
Настройка узлов кластера
- Подключитесь к узлам кластера по SSH с учётной записью суперпользователя. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
-
Установите необходимое ПО:
AlmaLinuxdnf -y install iscsi-initiator-utils
Astra Linuxapt install -y open-iscsi
-
Укажите созданный ранее IQN инициатора в параметре InitiatorName файла /etc/iscsi/initiatorname.iscsi:
InitiatorName=iqn.<year>-<month>.<reverse domain>:<initiator name>
Пояснения -
Отредактируйте файл /etc/iscsi/iscsid.conf:
-
Раскомментируйте строки:
node.session.auth.authmethod = CHAP
-
Раскомментируйте параметры node.session.auth.username, node.session.auth.password. Укажите id пользователя и пароль, заданные в настройках ACL для таргета:
node.session.auth.username = <id> node.session.auth.password = <pass>
Пояснения
-
- Для ОС Astra Linux:
-
Включите автоматическое подключение к хранилищу. Для этого в конфигурационном файле /etc/iscsi/iscsid.conf:
-
Раскомментируйте строку:
node.startup=automatic
-
Закомментируйте строку:
node.startup=manual
-
-
Перезапустите сервис iscsid:
systemctl restart iscsid.service
-
-
Проверьте доступ к таргету:
iscsiadm -m discovery -t sendtargets -p <target ip>
Пояснения к командеПример успешного выполнения команды192.0.2.123:3260,1 iqn.2020-02.example.com:MyTarget1
-
Подключитесь к таргету:
iscsiadm -m node --login
iscsiadm --mode node --target <target name> --portal <target ip> --logout
Пояснения к командеiscsiadm -m node --login
-
Убедитесь, что таргет подключён как блочное устройство:
lsblk
Обратите внимание!Чтобы настройки подключения не зависели от имён блочных устройств, вы можете подключить таргет через UUID или WWID. Подробнее см. в официальной документации Red Hat.
Установка ПО LVM2
Чтобы VMmanager мог подключить сетевое LVM-хранилище к узлам кластера, установите на всех узлах ПО LVM2:
dnf -y install lvm2
apt install -y lvm2
При добавлении хранилища в VMmanager платформа автоматически проведёт нужные настройки на блочном устройстве: создаcт PV и VG.
Увеличение размера хранилища
Если в хранилище был увеличен размер LUN, информация о размере хранилища не будет передана в платформу автоматически. Для передачи информации:
- На всех узлах кластера:
- Выполните сканирование дисков:
echo 1 > /sys/block/<device_name>/device/rescan
Пояснения к команде - Если в хранилище используется multipath, выполните сканирование карты устройств:
multipath -r
- Выполните сканирование дисков:
- На одном из узлов кластера измените размер VG:
pvresize /dev/mapper/<LUN_name>
Пояснения к команде - На сервере с платформой обновите информацию о хранилище:
docker exec -it vm_box curl -X POST -d '{}' input:1500/vm/v3/cluster/<cluster_id>/storage/<storage_id>/check -H 'internal-auth:on'
Пояснения к команде