Предварительная настройка SAN
В статье рассматривается пример настройки 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 с учётной записью суперпользователя и выполните следующие действия:
Убедитесь, что вы используете последнюю версию пакетов ПО:
AlmaLinux
dnf update
CODEAstra Linux
apt update
CODEУстановите оболочку для управления таргетом:
AlmaLinux
dnf -y install targetcli
CODEAstra Linux
apt -y install targetcli-fb
CODEПроверьте объём свободного места на диске:
df -hT
CODEРекомендуем использовать отдельный раздел или физический диск для создания таргета.
Создайте директорию для таргета. Например, /var/targetdisk01:
mkdir /var/targetdisk01
CODEЗапустите консоль targetcli:
targetcli
CODEСоздайте файл для таргета:
cd /backstores/fileio
CODEcreate <target name> <path> <size>
CODEПояснения к команде<target name> — имя таргета. Например, targetdisk1
<path> — путь к файлу таргета. Например, /var/targetdisk01/targetdisk1.img.
<size> — размер файла. Например, 5G — для файла размером 5 Гб.
Задайте IQN для таргета:
cd /iscsi
CODEcreate iqn.<year>-<month>.<reverse domain>:<name>
CODEПояснения к команде<year> — текущий год
<month> — текущий месяц
<reverse domain> — обратное доменное имя. Например, для домена example.com укажите com.example
<name> — произвольное имя
Ответ будет содержать номер созданной TPG.
Создайте LUN:
cd <iqn>/<tpg>/luns
CODEПояснения к команде<iqn> — IQN таргета. Например, iqn.2020-02.com.example:MyTarget1
<tpg> — имя портальной группы. Например, tpg1.
create /backstores/fileio/<target name>
CODEПояснения к команде<target name> — имя таргета, заданное в п.6
Ответ будет содержать номер созданного LUN.
Настройте ACL для таргета:
Задайте IQN инициатора:
cd /iscsi/<iqn>/<tpg>/acls
CODEПояснения к команде<iqn> — IQN таргета. Например, iqn.2020-02.com.example:MyTarget1
<tpg> — имя портальной группы. Например, tpg1.
create iqn.<year>-<month>.<reverse domain>:<initiator name>
CODEПояснения к команде<year> — текущий год
<month> — текущий месяц
<reverse domain> — обратное доменное имя. Например, для домена example.com укажите com.example
<initiator name> — имя инициатора
Задайте id пользователя и пароль инициатора:
cd iqn.<year>-<month>.<reverse domain>:<initiator name>
CODEset auth userid=<id>
CODEset auth password=<pass>
CODEПояснения к командам<year> — текущий год
<month> — текущий месяц
<reverse domain> — обратное доменное имя. Например, для домена example.com укажите com.example
<initiator name> — имя инициатора
<id> — id пользователя инициатора. Например, initiator1.
<pass> — пароль инициатора
Убедитесь, что все настройки созданы успешно:
ls /iscsi/
CODEПример вывода команды
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]
CODEЧтобы сохранить настройки, выйдите из консоли targetcli:
exit
CODEДобавьте сервис target в автозагрузку:
для ОС AlmaLinux — выполните команду:
systemctl enable target
CODE- для ОС Astra Linux:
Создайте юнит-файл /etc/systemd/system/target.service следующего содержания:
[Unit] Description=Restore LIO kernel target configuration Requires=sys-kernel-config.mount After=sys-kernel-config.mount network.target local-fs.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/targetctl restore ExecStop=/usr/bin/targetctl clear SyslogIdentifier=target [Install] WantedBy=multi-user.target
CODEВыполните команду:
systemctl enable –now target.service
CODE
Если вы используете firewalld, установите необходимые разрешения и перезапустите сервис:
firewall-cmd --add-service=iscsi-target --permanent
CODEfirewall-cmd --reload
CODE
Настройка узлов кластера
Подключитесь к узлам кластера по SSH с учётной записью суперпользователя и выполните следующие действия:
Установите необходимое ПО:
AlmaLinux
dnf -y install iscsi-initiator-utils
CODEAstra Linux
apt install -y open-iscsi
CODEУкажите созданный ранее IQN инициатора в параметре InitiatorName файла /etc/iscsi/initiatorname.iscsi:
InitiatorName=iqn.<year>-<month>.<reverse domain>:<initiator name>
CODEПояснения<year> — текущий год
<month> — текущий месяц
<reverse domain> — обратное доменное имя. Например, для домена example.com укажите com.example
<initiator name> — имя инициатора
Отредактируйте файл /etc/iscsi/iscsid.conf:
Раскомментируйте строки:
node.session.auth.authmethod = CHAP
CODEРаскомментируйте параметры node.session.auth.username, node.session.auth.password. Укажите id пользователя и пароль, заданные в настройках ACL для таргета:
node.session.auth.username = <id> node.session.auth.password = <pass>
CODEПояснения<id> — id пользователя инициатора
<pass> — пароль инициатора
- Для ОС Astra Linux:
Включите автоматическое подключение к хранилищу. Для этого добавьте в конфигурационный файл /etc/iscsi/iscsid.conf строку:
node.startup=automatic
CODEПерезапустите сервис iscsid:
systemctl restart iscsid.service
CODE
Проверьте доступ к таргету:
iscsiadm -m discovery -t sendtargets -p <target ip>
CODEПояснения к команде<target ip> — IP-адрес сервера с таргетом
Пример успешного выполнения команды
192.0.2.123:3260,1 iqn.2020-02.example.com:MyTarget1
CODEПодключитесь к таргету:
iscsiadm -m node --login
CODEiscsiadm --mode node --target <target name> --portal <target ip> --logout
CODEПояснения к команде<target name> — имя таргета
<target ip> — IP-адрес сервера с таргетом
iscsiadm -m node --login
CODEУбедитесь, что таргет подключён как блочное устройство:
lsblk
CODEОбратите внимание!
Чтобы настройки подключения не зависели от имён блочных устройств, вы можете подключить таргет через UUID или WWID. Подробнее см. в официальной документации Red Hat.
Установка ПО LVM2
Чтобы VMmanager мог подключить сетевое LVM-хранилище к узлам кластера, установите на всех узлах ПО LVM2:
AlmaLinux
dnf -y install lvm2
Astra Linux
apt install -y lvm2
При добавлении хранилища в VMmanager платформа автоматически проведёт нужные настройки на блочном устройстве: создаcт PV и VG.
Если при добавлении хранилища VMmanager обнаружит на блочном устройстве VG, созданную другим ПО, хранилище не будет подключено.
Может быть полезно
Связанные статьи: