VMmanager

Предварительная настройка SAN

В статье рассматривается пример настройки 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) — список управления доступом. Определяет какие инициаторы могут подключаться к таргету и их данные аутентификации.

Настройка внешнего хранилища

  1. Подключитесь к серверу по SSH с учётной записью суперпользователя. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Убедитесь, что вы используете последнюю версию пакетов ПО:

    AlmaLinux
    dnf update
    Astra Linux
    apt update
  3. Установите оболочку для управления таргетом:

    AlmaLinux
    dnf -y install targetcli
    Astra Linux
    apt -y install targetcli-fb
  4. Проверьте объём свободного места на диске:

    df -hT
    Рекомендуем использовать отдельный раздел или физический диск для создания таргета.
  5. Создайте директорию для таргета. Например, /var/targetdisk01:

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

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

    cd /backstores/fileio
    create <target name> <path> <size> 
    Пояснения к команде
  8. Задайте IQN для таргета:

    cd /iscsi
    create iqn.<year>-<month>.<reverse domain>:<name> 
    Пояснения к команде

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

  9. Создайте LUN:

    cd <iqn>/<tpg>/luns
    Пояснения к команде
    create /backstores/fileio/<target name>
    Пояснения к команде

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

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

    1. Задайте IQN инициатора:

      cd /iscsi/<iqn>/<tpg>/acls
      Пояснения к команде
      create iqn.<year>-<month>.<reverse domain>:<initiator name> 
      Пояснения к команде
    2. Задайте id пользователя и пароль инициатора:

      cd iqn.<year>-<month>.<reverse domain>:<initiator name> 
      set auth userid=<id>
      set auth password=<pass>
      Пояснения к командам
    3. Включите авторизацию для инициатора: 

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

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

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

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

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

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

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

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

  1. Подключитесь к узлам кластера по SSH с учётной записью суперпользователя. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Установите необходимое ПО:

    AlmaLinux
    dnf -y install iscsi-initiator-utils
    Astra Linux
    apt install -y open-iscsi
  3. Укажите созданный ранее IQN инициатора в параметре InitiatorName файла /etc/iscsi/initiatorname.iscsi:

    InitiatorName=iqn.<year>-<month>.<reverse domain>:<initiator name>
    Пояснения
  4. Отредактируйте файл /etc/iscsi/iscsid.conf:

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

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

      node.session.auth.username = <id>
      node.session.auth.password = <pass>
      
      Пояснения
  5. Для ОС Astra Linux:
    1. Включите автоматическое подключение к хранилищу. Для этого в конфигурационном файле /etc/iscsi/iscsid.conf:

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

        node.startup=automatic


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

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

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

    iscsiadm -m discovery -t sendtargets -p <target ip>
    Пояснения к команде
    Пример успешного выполнения команды
    192.0.2.123:3260,1
    iqn.2020-02.example.com:MyTarget1
  7. Подключитесь к таргету:

    iscsiadm -m node --login
    iscsiadm --mode node --target <target name> --portal <target ip> --logout
    Пояснения к команде
    iscsiadm -m node --login
  8. Убедитесь, что таргет подключён как блочное устройство:

    lsblk
    Обратите внимание!
    Чтобы настройки подключения не зависели от имён блочных устройств, вы можете подключить таргет через 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, созданную другим ПО, хранилище не будет подключено.

Увеличение размера хранилища

Если в хранилище был увеличен размер LUN, информация о размере хранилища не будет передана в платформу автоматически. Для передачи информации:

  1. На всех узлах кластера:
    1. Выполните сканирование дисков: 
      echo 1 > /sys/block/<device_name>/device/rescan
      Пояснения к команде
    2. Если в хранилище используется multipath, выполните сканирование карты устройств: 
      multipath -r
  2. На одном из узлов кластера измените размер VG: 
    pvresize /dev/mapper/<LUN_name>
    Пояснения к команде
  3. На сервере с платформой обновите информацию о хранилище: 
    docker exec -it vm_box curl -X POST -d '{}' input:1500/vm/v3/cluster/<cluster_id>/storage/<storage_id>/check -H 'internal-auth:on'
    Пояснения к команде
Может быть полезно