Download PDF
Download page Предварительная настройка SAN.
Предварительная настройка 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 с учётной записью суперпользователя. Подробнее о подключении по 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> — пароль инициатора
- Перейдите в директорию портальной группы:
cd /iscsi/<iqn>/<tpg>
CODE<iqn> — IQN таргета. Например, iqn.2020-02.com.example:MyTarget1
<tpg> — имя портальной группы. Например, tpg1.
Включите авторизацию для инициатора:
set attribute authentication=1
CODE
Убедитесь, что все настройки созданы успешно:
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 — выполните команду:
systemctl enable targetclid.service
CODE
Если вы используете firewalld, установите необходимые разрешения и перезапустите сервис:
firewall-cmd --add-service=iscsi-target --permanent
CODEfirewall-cmd --reload
CODE
Настройка узлов кластера
- Подключитесь к узлам кластера по SSH с учётной записью суперпользователя. Подробнее о подключении по 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Закомментируйте строку:
node.startup=manual
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, созданную другим ПО, хранилище не будет подключено.
Может быть полезно
Связанные статьи: