В статье рассматривается пример настройки iSCSI в SAN для внешнего хранилища и узлов кластера под управлением ОС AlmaLinux 8 и Astra Linux 1.7. Для других ОС порядок настройки может отличаться.

Порядок настройки SAN перед созданием сетевого LVM-хранилища:

  1. Настройте внешнее хранилище как таргет (iSCSI target).
  2. Настройте узлы кластера VMmanager как инициаторы (iSCSI initiator).
  3. Установите на узлы кластера ПО 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 с учётной записью суперпользователя и выполните следующие действия:

  1. Убедитесь, что вы используете последнюю версию пакетов ПО:

    AlmaLinux

    dnf update
    CODE

    Astra Linux

    apt update
    CODE
  2. Установите оболочку для управления таргетом:

    AlmaLinux

    dnf -y install targetcli
    CODE

    Astra Linux

    apt -y install targetcli-fb
    CODE
  3. Проверьте объём свободного места на диске:

    df -hT
    CODE

    Рекомендуем использовать отдельный раздел или физический диск для создания таргета.

  4. Создайте директорию для таргета. Например, /var/targetdisk01:

    mkdir /var/targetdisk01
    CODE
  5. Запустите консоль targetcli:

    targetcli
    CODE
  6. Создайте файл для таргета:

    cd /backstores/fileio
    CODE
    create <target name> <path> <size> 
    CODE

    <target name> — имя таргета. Например, targetdisk1

    <path> — путь к файлу таргета. Например, /var/targetdisk01/targetdisk1.img.

    <size> — размер файла. Например, 5G — для файла размером 5 Гб.

  7. Задайте IQN для таргета:

    cd /iscsi
    CODE
    create iqn.<year>-<month>.<reverse domain>:<name> 
    CODE

    <year> — текущий год

    <month> — текущий месяц

    <reverse domain> — обратное доменное имя. Например, для домена example.com укажите com.example

    <name> — произвольное имя

    Ответ будет содержать номер созданной TPG.

  8. Создайте 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.

  9. Настройте ACL для таргета:

    1. Задайте 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> — имя инициатора

    2. Задайте id пользователя и пароль инициатора:

      cd iqn.<year>-<month>.<reverse domain>:<initiator name> 
      CODE
      set auth userid=<id>
      CODE
      set auth password=<pass>
      CODE

      <year> — текущий год

      <month> — текущий месяц

      <reverse domain> — обратное доменное имя. Например, для домена example.com укажите com.example

      <initiator name> — имя инициатора

      <id> — id пользователя инициатора. Например, initiator1.

      <pass> — пароль инициатора

    3. Включите авторизацию для инициатора: 

      set attribute authentication=1
      CODE
  10. Убедитесь, что все настройки созданы успешно: 

    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
  11. Чтобы сохранить настройки, выйдите из консоли targetcli:

    exit
    CODE
  12. Добавьте сервис target в автозагрузку:

    • для ОС AlmaLinux — выполните команду: 

      systemctl enable target
      CODE
    • для ОС Astra Linux — выполните команду:

      systemctl enable targetclid.service
      CODE
  13. Если вы используете firewalld, установите необходимые разрешения и перезапустите сервис:

    firewall-cmd --add-service=iscsi-target --permanent
    CODE
    firewall-cmd --reload
    CODE

Настройка узлов кластера


Подключитесь к узлам кластера по SSH с учётной записью суперпользователя и выполните следующие действия:

  1. Установите необходимое ПО:

    AlmaLinux

    dnf -y install iscsi-initiator-utils
    CODE

    Astra Linux

    apt install -y open-iscsi
    CODE
  2. Укажите созданный ранее 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> — имя инициатора

  3. Отредактируйте файл /etc/iscsi/iscsid.conf:

    1. Раскомментируйте строки:

      node.session.auth.authmethod = CHAP
      CODE
    2. Раскомментируйте параметры node.session.auth.username, node.session.auth.password. Укажите id пользователя и пароль, заданные в настройках ACL для таргета:

      node.session.auth.username = <id>
      node.session.auth.password = <pass>
      
      CODE

      <id> — id пользователя инициатора

      <pass> — пароль инициатора

  4. Для ОС Astra Linux:
    1. Включите автоматическое подключение к хранилищу. Для этого в конфигурационном файле /etc/iscsi/iscsid.conf:

      1. Раскомментируйте строку: 

        node.startup=automatic
        CODE


      2. Закомментируйте строку: 

        node.startup=manual
        CODE
    2. Перезапустите сервис iscsid: 

      systemctl restart iscsid.service
      CODE
  5. Проверьте доступ к таргету:

    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
  6. Подключитесь к таргету:

    iscsiadm -m node --login
    CODE
    iscsiadm --mode node --target <target name> --portal <target ip> --logout
    CODE

    <target name> — имя таргета

    <target ip> — IP-адрес сервера с таргетом

    iscsiadm -m node --login
    CODE
  7. Убедитесь, что таргет подключён как блочное устройство:

    lsblk
    CODE

    Обратите внимание!

    Чтобы настройки подключения не зависели от имён блочных устройств, вы можете подключить таргет через UUID или WWID. Подробнее см. в официальной документации Red Hat.

Установка ПО LVM2


Чтобы VMmanager мог подключить сетевое LVM-хранилище к узлам кластера, установите на всех узлах ПО LVM2:

AlmaLinux

dnf -y install lvm2
CODE

Astra Linux

apt install -y lvm2
CODE

При добавлении хранилища в VMmanager платформа автоматически проведёт нужные настройки на блочном устройстве: создаcт PV и VG.

Если при добавлении хранилища VMmanager обнаружит на блочном устройстве VG, созданную другим ПО, хранилище не будет подключено.

Может быть полезно

Связанные статьи: