Оглавление

В данном примере тестовый стенда ПК СВ, функционирующий в сервисном режиме, будет расширен за счет дополнительного узла виртуализации.

Для расширенного тестового стенда будут созданы хранилище образов и системное хранилище на базе файловой технология хранения. Созданные хранилища будут размещены на сетевых блочных устройствах, подключаемых по протоколу iSCSI (программная СХД). При этом сетевые блочные устройства будут размечены с использованием кластерной файловой системы OCFS2.

Описание тестовой среды

В данном примере в качестве тестовой среды выступает система виртуализации QEMU/KVM в ОС СН Astra Linux Special Edition 1.7.2.

При этом описываемые действия по созданию и настройке гостевых машин выполняются в программе Virt-manager версии 2.2.1-3.

Для эмуляции дополнительного узла виртуализации будет развернута гостевая машина (с наименованием node1) со следующими параметрами:

  • количество процессоров: 4;
  • размер памяти (ОЗУ): 4 ГБ;
  • диск для размещения файлов ОС Astra Linux объемом 12 ГБ.

Для организации программной системы хранения данных будет развернута гостевая машина (с наименованием iscsi-target) со следующими параметрами:

  • количество процессоров: 1;
  • размер памяти (ОЗУ): 2 ГБ;
  • один диск для размещения файлов ОС Astra Linux объемом 12 ГБ;
  • два дополнительных диска для эмуляции сетевых блочных устройств объемом 24 ГБ.

При этом вычислительные ресурсы тестового стенда должны обеспечить одновременное функционирование гостевой машины виртуализации, на которой установлены программные компоненты ПК СВ (далее по тексту – фронтальной машины), гостевой машины node1 и гостевой машины iscsi-target.

В ОС гостевых машин будут подключены интернет-репозитории Astra Linux. Поэтому необходимо, чтобы в хостовой ОС был доступ к сети Интернет.

В этом примере в качестве установочного носителя используется файл образа технологического установочного диска 1.7.2-11.08.2022_15.28.iso (установочный диск Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с интегрированным обновлением БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2)).

Кроме того, потребуется файл образа установочного диска ПК СВ «Брест».

1. Создание и настройка дополнительного узла виртуализации

Гостевой машине, на которой будет установлена и настроена служба узла виртуализации, будет присвоен IP-адрес: 172.16.1.51 и сетевое имя node1.

Значение IP-адреса гостевой машины node1 выбрано исходя из диапазона, установленного при создании виртуальной сети в Virt-Manager (172.16.1.0 /24) – см. ПК СВ «Брест» в пределах одного сервера (сервисный режим).


Для установки оперативного обновления 1.7.2.UU.1 (БЮЛЛЕТЕНЬ № 2022-1011SE17MD) будет использован интернет-репозиторий Astra Linux. Поэтому необходимо, чтобы в хостовой ОС был доступ к сети Интернет.

  1. Создать гостевую машину node1. Действия по созданию гостевой машины аналогичны действиям, описанным в статье Создание гостевой машины (за исключением пункта установки дополнительного оборудования — канал SPICE добавлять не нужно). При этом необходимо установить следующие параметры гостевой машины:
    • количество процессоров: 4;
    • размер памяти (ОЗУ): 4 ГБ;
    • объем диска для размещения ОС: 12 ГБ.

  2. В гостевой машине node1 установить операционную систему специального назначения "Astra Linux Special Edition" РУСБ.10015-01. При этом следует учитывать следующие особенности установки:

    • на странице Установка базовой системы выбрать для установки ядро linux-5.15-generic;
    • на странице Выбор программного обеспечения выбрать пункт Средства удаленного подключения SSH;
    • на странице Дополнительные настройки ОС выбрать Базовый уровень защищенности "Орел";
    • на странице Дополнительные настройки ОС выбрать пункт Запрет автонастройки сети.
  3. Подключить образ установочного носителя к гостевой машине node1 (см. Подключение образа установочного носителя к гостевой машине).
  4. Настроить сетевое соединение:

    • установить пакет bridge-utils командой:

      sudo apt install bridge-utils

    • в файл /etc/network/interfaces добавить следующие строки: 

      auto eth0
      iface eth0 inet manual
      auto br0
      iface br0 inet static
      bridge_ports eth0
      address 172.16.1.51
      netmask 255.255.255.0
      gateway 172.16.1.1
      CODE
    • запустить в работу сетевой интерфейс командой:

      sudo ifup br0

    • файл /etc/hosts привести к следующему виду:

      127.0.0.1	localhost 
      172.16.1.51 node1
      CODE
    • задать сетевое имя гостевой машине, выполнив команду:

      sudo hostnamectl set-hostname node1
      Сообщение об ошибке вида:

      sudo: unable to resolve host <предыдущее_имя_гостевой_машины>: В соединении отказано
      CODE

      можно игнорировать (перед тем как выполнить команду инструмент командной строки sudo обращается к файлу /etc/hosts чтобы определить IP-адрес используя предыдущее имя гостевой машины).

    • добавить в автозапуск и запустить службу ssh командой:

      sudo systemctl enable ssh --now

    Далее можно подключиться к гостевой машине из хостовой ОС по SSH.
  5. Создать файл /etc/resolv.conf и указать IP-адрес общедоступного DNS-сервера, например, 77.88.8.8:

    search auto
    nameserver 77.88.8.8
    CODE
  6. Удостовериться в том, что интернет-репозиторий Astra Linux доступен по доменному имени, выполнив команду: 

    ping dl.astralinux.ru
    пример вывода после выполнения команды: 

    PING dl.astralinux.ru (51.250.6.116) 56(84) bytes of data.
    64 bytes from 51.250.6.116 (51.250.6.116): icmp_seq=1 ttl=57 time=6.91 ms
    CODE
  7. Настроить доступ к базовому репозиторию оперативного обновления 1.7.2.UU.1 (БЮЛЛЕТЕНЬ № 2022-1011SE17MD):
    • в файле /etc/apt/sources.list закомментировать (установить символ "#" в начале строки) строку, в которой в качестве источника пакетов указан оптический установочный диск:

      deb cdrom:[<наименование_установочного_диска>]/ 1.7_x86-64 contrib main non-free
      CODE
    • в файле /etc/apt/sources.list добавить строку вида:

      deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/uu/1/repository-base/ 1.7_x86-64 main contrib non-free
      CODE
    • выполнить повторную синхронизацию файлов описаний пакетов с их источником командой:

      sudo apt update

  8. Установить пакет astra-update:

    sudo apt install astra-update

  9. Применить оперативное обновление командой:

    sudo astra-update -A -r -T

  10. Создать локальный репозиторий, используя установочный диск ПК СВ «Брест»:

    • подключить к гостевой машине файл образа установочного диска ПК СВ «Брест» (см. Подключение образа установочного носителя к гостевой машине);
    • создать каталог для размещения репозитория командой: 

      sudo mkdir -p /srv/repo/brest

    • примонтировать установочный диск ПК СВ «Брест» командой:

      sudo mount /dev/sr0 /media/cdrom

    • скопировать файлы из установочного диска ПК СВ «Брест» в каталог репозитория командой:

      sudo cp -a /media/cdrom/* /srv/repo/brest

    • отмонтировать установочный диск ПК СВ «Брест» командой:

      sudo umount /media/cdrom

    • подключить в качестве локального репозитория каталог /srv/repo/brest/, для этого в файле /etc/apt/sources.list добавить строку вида:

      deb file:/srv/repo/brest/ brest main non-free
      CODE
    • выполнить повторную синхронизацию файлов описаний пакетов с их источником командой:

      sudo apt update

  11. Установить пакет opennebula-node-kvm командой:

    sudo apt install opennebula-node-kvm
    В открывшемся окне ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ нажать кнопку [Принять].

  12. Перезагрузить гостевую машину node1.
  13. На фронтальной машине в файл /etc/hosts добавить строку вида:

    172.16.1.51 node1
    CODE
  14. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Инфраструктура — Узлы и на открывшейся странице Узлы нажать на кнопку +.
  15. На открывшейся странице Создать узел:
    • в поле Имя хоста указать сетевое имя гостевой машины (node1);
    • в полях Логин администратора и Пароль администратора указать аутентификационные параметры локального администратора гостевой машины node1 (которые были заданы во время выполнения действий по установке ОС).
  16. На странице Создать узел нажать на кнопку Создать.
  17. На открывшейся странице Узлы появится запись о зарегистрированном узле. Необходимо дождаться пока в столбце Статус для созданного на предыдущем шаге Узла значение Инициализация не изменится на ВКЛ . Для обновления информации, отображаемой на странице, можно воспользоваться кнопкой Обновить.

2. Создание и настройка программной СХД (iSCSI-target)

Гостевой машине, предоставляющей блочные данные по протоколу iSCSI, будет присвоен IP-адрес: 172.16.1.41 и сетевое имя iscsi-target

Значение IP-адреса гостевой машины iscsi-target выбрано исходя из диапазона, установленного при создании виртуальной сети в Virt-Manager (172.16.1.0 /24) – см. ПК СВ «Брест» в пределах одного сервера (сервисный режим) .

  1. Создать гостевую машину iscsi-target. Действия по созданию гостевой машины аналогичны действиям, описанным в статье Создание гостевой машины (за исключением пункта установки дополнительного оборудования — канал SPICE добавлять не нужно). При этом необходимо установить следующие параметры гостевой машины:
    • количество процессоров: 1;
    • размер памяти (ОЗУ): 2 ГБ;
    • объем диска для размещения ОС: 12 ГБ.

      Диски для эмуляции сетевых блочных устройств будет добавлены позже.

      Для организации системы хранения в ПК СВ «Брест» требуется выделение как минимум двух сетевых блочных устройств. 

  2. В гостевой машине iscsi-target установить операционную систему специального назначения "Astra Linux Special Edition" РУСБ.10015-01. При этом следует учитывать следующие особенности установки:

    • на странице Установка базовой системы выбрать для установки ядро linux-5.15-generic;
    • на странице Выбор программного обеспечения выбрать пункт Средства удаленного подключения SSH;
    • на странице Дополнительные настройки ОС выбрать Базовый уровень защищенности "Орел";
    • на странице Дополнительные настройки ОС выбрать пункт Запрет автонастройки сети.
  3. Настроить сетевое соединение:
    • в файл /etc/network/interfaces добавить следующие строки:

      auto eth0
      iface eth0 inet static
      address 172.16.1.41
      netmask 255.255.255.0
      gateway 172.16.1.1
      CODE
    • запустить в работу сетевой интерфейс командой:

      sudo ifup eth0

      Далее можно подключиться к гостевой машине из хостовой ОС по SSH.
    • файл /etc/hosts привести к следующему виду:

      127.0.0.1	localhost 
      172.16.1.41 iscsi-target
      CODE
    • задать сетевое имя гостевой машине, выполнив команду:

      sudo hostnamectl set-hostname iscsi-target
      Сообщение об ошибке вида:

      sudo: unable to resolve host <предыдущее_имя_гостевой_машины>: В соединении отказано
      CODE

      можно игнорировать (перед тем как выполнить команду инструмент командной строки sudo обращается к файлу /etc/hosts чтобы определить IP-адрес используя предыдущее имя гостевой машины).

  4. Выключить гостевую машину iscsi-target.
  5. В окне программы Virt-manager на панели инструментов окна гостевой машины iscsi-target нажать на кнопку [Показать виртуальное оборудование].
  6. Подключить к гостевой машине iscsi-target первый диск для эмуляции сетевого блочного устройства:
    • в окне параметров гостевой машины нажать на кнопку [Добавить оборудование] в левом нижнем углу;
    • в открывшемся окне Добавление виртуального оборудования:
      • в левом поле выбрать пункт Хранилище;

      • в правом поле установить флаг Создать образ диска для виртуальной машины;

      • задать размер диска равным 24 ГБ;
      • нажать на кнопку [Готово].

  7. Аналогичным образом подключить к гостевой машине iscsi-target второй диск для эмуляции сетевого блочного устройства.
  8. Подключить образ установочного носителя к гостевой машине iscsi-target (см. Подключение образа установочного носителя к гостевой машине).
  9. Включить гостевую машину iscsi-target.
  10. В ОС гостевой машины iscsi-target вывести перечень блочных устройств:

    lsblk
    Пример вывода после выполнения команды:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1  3,9G  0 rom  
    vda    252:0    0   12G  0 disk 
    ├─vda1 252:1    0   11G  0 part /
    ├─vda2 252:2    0    1K  0 part 
    └─vda5 252:5    0  975M  0 part [SWAP]
    vdb    252:16   0   24G  0 disk 
    vdc    252:32   0   24G  0 disk 
    CODE

    где: 

    • vda – диск для размещения файлов ОС;

    • vdb и vdc – диски для эмуляции сетевых блочных устройств.
  11. В ОС гостевой машины iscsi-target установить консоль управления Linux-IO Target (пакет targetcli-fb):

    sudo apt install targetcli-fb

  12. Войти в консоль управления Linux-IO Target командой:

    sudo targetcli

  13. В консоли управления вывести текущую конфигурацию командой:

    ls
    Пример вывода после выполнения команды:

    o- / ............................................ [...]
      o- backstores ................................. [...]
      | o- block ..................... [Storage Objects: 0]
      | o- fileio .................... [Storage Objects: 0]
      | o- pscsi ..................... [Storage Objects: 0]
      | o- ramdisk ................... [Storage Objects: 0]
      o- iscsi ............................... [Targets: 0]
      o- loopback ............................ [Targets: 0]
      o- vhost ............................... [Targets: 0]
      o- xen-pvscsi .......................... [Targets: 0]
    CODE
  14. Создать (зарегистрировать) блочное устройство /dev/vdb в разделе /backstores/block, присвоив устройству наименование, например, storage01:

    /backstores/block create storage01 /dev/vdb
    Пример вывода после выполнения команды:

    Created block storage object storage01 using /dev/vdb.
    CODE
  15. Проверить результат командой ls. Пример вывода после выполнения команды:

      /> ls
    o- / ............................................................... [...]
      o- backstores .................................................... [...]
      | o- block ........................................ [Storage Objects: 1]
      | | o- storage01 ........... [/dev/vdb (24.0GiB) write-thru deactivated]
      | |   o- alua ......................................... [ALUA Groups: 1]
      | |     o- default_tg_pt_gp ............. [ALUA state: Active/optimized]
      | o- fileio ....................................... [Storage Objects: 0]
      | o- pscsi ........................................ [Storage Objects: 0]
      | o- ramdisk ...................................... [Storage Objects: 0]
      o- iscsi .................................................. [Targets: 0]
      o- loopback ............................................... [Targets: 0]
      o- vhost .................................................. [Targets: 0]
      o- xen-pvscsi ............................................. [Targets: 0]
    CODE
  16. Создать цель (target) в разделе /iscsi командой:

    /iscsi create
    Пример вывода после выполнения команды:

    Created target iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1.
    Created TPG 1.
    Global pref auto_add_default_portal=true
    Created default portal listening on all IPs (0.0.0.0), port 3260.
    CODE
  17. Проверить результат командой ls. Пример вывода после выполнения команды:

    /> ls
    o- / ........................................................................... [...]
      o- backstores ................................................................ [...]
      | o- block .................................................... [Storage Objects: 1]
      | | o- storage01 ........................[/dev/vdb (24.0GiB) write-thru deactivated]
      | |   o- alua ..................................................... [ALUA Groups: 1]
      | |     o- default_tg_pt_gp ......................... [ALUA state: Active/optimized]
      | o- fileio ................................................... [Storage Objects: 0]
      | o- pscsi .................................................... [Storage Objects: 0]
      | o- ramdisk .................................................. [Storage Objects: 0]
      o- iscsi .............................................................. [Targets: 1]
      | o- iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 ...... [TPGs: 1]
      |   o- tpg1 ................................................. [no-gen-acls, no-auth]
      |     o- acls ............................................................ [ACLs: 0]
      |     o- luns ............................................................ [LUNs: 0]
      |     o- portals ...................................................... [Portals: 1]
      |       o- 0.0.0.0:3260 ....................................................... [OK]
      o- loopback ........................................................... [Targets: 0]
      o- vhost .............................................................. [Targets: 0]
      o- xen-pvscsi ......................................................... [Targets: 0]
    CODE
  18. Создать LUN на основе блочного устройства, зарегистрированного в разделе/backstores/block

    /iscsi/<идентификатор_цели>/tpg1/luns/ create /backstores/block/<наименование_устройства>
    где:

    • <наименование_устройства> – в рассматриваемом примере имеет значение "storage01" (см. шаг 14);
    • <идентификатор_цели> – в рассматриваемом примере имеет значение "iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1" (см. шаг 16).

    Пример вывода после выполнения команды:

    Created LUN 0
    CODE
  19. Проверить результат командой ls. Пример вывода после выполнения команды:

    /> ls
    o- / ........................................................................... [...]
      o- backstores ................................................................ [...]
      | o- block .................................................... [Storage Objects: 1]
      | | o- storage01 ........................[/dev/vdb (24.0GiB) write-thru deactivated]
      | |   o- alua ..................................................... [ALUA Groups: 1]
      | |     o- default_tg_pt_gp ......................... [ALUA state: Active/optimized]
      | o- fileio ................................................... [Storage Objects: 0]
      | o- pscsi .................................................... [Storage Objects: 0]
      | o- ramdisk .................................................. [Storage Objects: 0]
      o- iscsi .............................................................. [Targets: 1]
      | o- iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 ...... [TPGs: 1]
      |   o- tpg1 ................................................. [no-gen-acls, no-auth]
      |     o- acls ............................................................ [ACLs: 0]
      |     o- luns ............................................................ [LUNs: 0]
      |     | o- lun0 .................... [block/storage01 (/dev/vdb) (default_tg_pt_gp)]
      |     o- portals ...................................................... [Portals: 1]
      |       o- 0.0.0.0:3260 ....................................................... [OK]
      o- loopback ........................................................... [Targets: 0]
      o- vhost .............................................................. [Targets: 0]
      o- xen-pvscsi ......................................................... [Targets: 0]
    CODE
  20. В рассматриваемом примере контроль доступа не требуется, поэтому его можно отключить:
    • переместиться на ветку /iscsi/<идентификатор_цели>/tpg1:

      cd /iscsi/<идентификатор_цели>/tpg1
      где <идентификатор_цели> – в рассматриваемом примере имеет значение "iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1" (см. шаг 16).

      В консоли управления нажатие клавиши <Tab> автоматически дополняет текущую команду или путь к ветке дерева конфигурации, если возможен только один вариант.

    • отключить использования списков управления доступом (ACL) командой:

      set attribute generate_node_acls=1
      Пример вывода после выполнения команды:

      Parameter generate_node_acls is now '1'.
      CODE
    • настроить работу цели в demo-режиме (без аутентификации, видимым и доступным для всех) командой:

      set attribute demo_mode_write_protect=0
      Пример вывода после выполнения команды:

      Parameter demo_mode_write_protect is now '0'.
      CODE
  21. Повторить шаги 14 – 20 для блочного устройства /dev/vdc (при выполнении действий шага 14 присвоить устройству наименование, например, storage02).
  22. Выполнить сохранение настроек:

    / saveconfig
    Пример вывода после выполнения команды:

    Last 10 configs saved in /etc/rtslib-fb-target/backup.
    Configuration saved to /etc/rtslib-fb-target/saveconfig.json
    CODE
  23. Выйти из консоли управления:

    exit

В консоли управления Linux-IO Target, используемой в ПК СВ версии 3.2, введена система бэкапов конфигурации, и, в связи с этим, после перезагрузки сохраненная конфигурация не загружается автоматически.

На текущий момент после перезагрузки конфигурацию необходимо восстанавливать командой:

sudo targetcli restoreconfig

Пример вывода после выполнения команды:

Configuration restored from /etc/rtslib-fb-target/saveconfig.json
CODE

Для того чтобы автоматизировать восстановление конфигурации, необходимо выполнить действия, описанные ниже.

  1. Создать службу  target, сформировав unit-файл, например с помощью тестового редактора  nano, для этого выполнить команду:

    sudo nano /lib/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

    После этого сохранить unit-файл и закрыть текстовый редактор.

  2. Перезагрузить список служб командой:

    sudo systemctl daemon-reload

  3. Добавить службу target в автозагрузку командой:

    sudo systemctl enable target
    Пример вывода после выполнения команды:

    Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /lib/systemd/system/target.service.
    CODE
  4. Для проверки следует перезагрузить гостевую машину iscsi-target и вывести информацию о состоянии службы target:

    sudo systemctl status target
    Пример вывода после выполнения команды:

    ● target.service - Restore LIO kernel target configuration
       Loaded: loaded (/lib/systemd/system/target.service; enabled; vendor preset: enabled)
       Active: active (exited) since Mon 2023-03-20 16:28:26 MSK; 9min ago
      Process: 577 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS)
     Main PID: 577 (code=exited, status=0/SUCCESS)
    CODE

3. Подключение сетевых блочных устройств к фронтальной машине (настройка iSCSI-initiator)

Действия, описанные в данном разделе, выполняются в ОС фронтальной машины.

  1. Установить пакет open-iscsi:

    sudo apt install open-iscsi

  2. В конфигурационном файле /etc/iscsi/iscsid.conf для параметра node.startup установить значение automatic:

    node.startup = automatic
    CODE
  3. Запустить службу клиента (iSCSI-initiator):

    sudo systemctl start iscsi

  4. Выполнить сканирование для поиска целей (iSCSI-target):

    sudo iscsiadm -m discovery -t st -p 172.16.1.41
    где 172.16.1.41 – IP-адрес гостевой машины iscsi-target.

    Пример вывода после успешного выполнения команды:

    172.16.1.41:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1
    172.16.1.41:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098
    CODE
  5. Подключить найденные цели (iSCSI-target):

    sudo iscsiadm -m node -l
    Пример вывода после успешного выполнения команды:

    Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1, portal: 172.16.1.41,3260] (multiple)
    Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098, portal: 172.16.1.41,3260] (multiple)
    Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1, portal: 172.16.1.41,3260] successful.
    Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098, portal: 172.16.1.41,3260] successful.
    CODE
  6. Для проверки выполнить команду:

    lsblk
    Пример вывода после выполнения команды:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   24G  0 disk 
    sdb      8:16   0   24G  0 disk 
    sr0     11:0    1 1024M  0 rom  
    vda    252:0    0   64G  0 disk 
    ├─vda1 252:1    0   63G  0 part /
    ├─vda2 252:2    0    1K  0 part 
    └─vda5 252:5    0  975M  0 part [SWAP]
    CODE

    где в качестве локальных блочных устройств sda и sdb выступают сетевые блочные устройства, предоставляемые программной СХД (гостевой машиной iscsi-target).

4. Подключение сетевых блочных устройств к узлу виртуализации (настройка iSCSI-initiator)

В ОС гостевой машины node1 выполнить действия, описанные в разделе Подключение сетевых блочных устройств к фронтальной машине (настройка iSCSI-initiator).

5. Создание кластера OCFS2

Для того, чтобы обеспечить доступ фронтальной машины и узла виртуализации к одним и тем же сетевым блочным устройствам, будет использоваться кластерная файловая система OCFS2.

5.1. Настройки фронтальной машины

  1. Установить пакеты кластерной файловой системы OCFS2:

    sudo apt install ocfs2-tools

  2. Создать кластер с наименованием ocfs2cluster командой:

    sudo o2cb add-cluster ocfs2cluster
    В результате выполнения команды будет создан файл конфигурации /etc/ocfs2/cluster.conf.

  3. В файл конфигурации добавить описание сетевых параметров фронтальной машины и узла виртуализации (гостевой машины node1) командами:

    sudo o2cb add-node ocfs2cluster <сетевое_имя_фронтальной_машины> --ip 172.16.1.20

    sudo o2cb add-node ocfs2cluster node1 --ip 172.16.1.51

    Сетевые имена должны быть точно такими, какими они указаны в файлах /etc/hostname гостевых машин.

  4. Просмотреть итоговый файл конфигурации, например, с помощью команды:

    cat /etc/ocfs2/cluster.conf
    Пример вывода после выполнения команды:

    cluster:
            heartbeat_mode = local
            node_count = 2
            name = ocfs2cluster
    
    node:
            number = 0
            cluster = ocfs2cluster
            ip_port = 7777
            ip_address = 172.16.1.20
            name = oneserver
    
    node:
            number = 1
            cluster = ocfs2cluster
            ip_port = 7777
            ip_address = 172.16.1.51
            name = node1
    
    
    CODE
  5. Запустить мастер настройки кластера OCFS2 командой:

    sudo dpkg-reconfigure ocfs2-tools
    В запустившемся мастере:

    • разрешить запускать кластер OCFS2 (O2CB) во время загрузки (нажать на кнопку [Да]);
    • задать имя кластера: ввести "ocfs2cluster" и нажать на кнопку [Ok];
    • для остальных параметров выбрать значения, установленные по умолчанию.
  6. Перезапустить службу o2cb командой:

    sudo systemctl restart o2cb

  7. Удостовериться в успешном запуске службы o2cb. Для этого просмотреть в журнале регистрации события, относящиеся к службе:

    sudo journalctl -u o2cb
    Пример вывода после выполнения команды:

    мар 23 09:40:58 oneserver.brest.local systemd[1]: Starting Load o2cb Modules...
    мар 23 09:40:58 oneserver.brest.local o2cb[20018]: checking debugfs...
    мар 23 09:40:58 oneserver.brest.local o2cb[20018]: Loading stack plugin "o2cb": OK
    мар 23 09:40:58 oneserver.brest.local o2cb[20018]: Loading filesystem "ocfs2_dlmfs": OK
    мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Creating directory '/dlm': OK
    мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Mounting ocfs2_dlmfs filesystem at /dlm: OK
    мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Setting cluster stack "o2cb": OK
    мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Registering O2CB cluster "ocfs2cluster": OK
    мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Setting O2CB cluster timeouts : OK
    мар 23 09:40:59 oneserver.brest.local o2hbmonitor[20070]: Starting
    мар 23 09:40:59 oneserver.brest.local systemd[1]: Started Load o2cb Modules.
    CODE

5.2. Настройки узла виртуализации

Действия, описываемые в данном подразделе выполняются в ОС гостевой машины node1.

  1. Установить пакеты кластерной файловой системы OCFS2:

    sudo apt install ocfs2-tools

  2. Создать кластер с наименованием ocfs2cluster командой:

    sudo o2cb add-cluster ocfs2cluster

  3. Скопировать файл конфигурации /etc/ocfs2/cluster.conf с фронтальной машины в локальный каталог /etc/ocfs2/:

    sudo scp <локальный_администратор>@172.16.1.20:/etc/ocfs2/cluster.conf /etc/ocfs2/
    где <локальный_администратор> – имя локального администратора фронтальной машины.
    В ходе выполнения команды необходимо ответить "yes" ("Да") и указать пароль локального администратора фронтальной машины.

  4. Просмотреть полученный файл конфигурации, например, с помощью команды:

    cat /etc/ocfs2/cluster.conf
    Пример вывода после выполнения команды:

    cluster:
            heartbeat_mode = local
            node_count = 2
            name = ocfs2cluster
    
    node:
            number = 0
            cluster = ocfs2cluster
            ip_port = 7777
            ip_address = 172.16.1.20
            name = oneserver
    
    node:
            number = 1
            cluster = ocfs2cluster
            ip_port = 7777
            ip_address = 172.16.1.51
            name = node1
    
    
    CODE
  5. Запустить мастер настройки кластера OCFS2 командой:

    sudo dpkg-reconfigure ocfs2-tools
    В запустившемся мастере:

    • разрешить запускать кластер OCFS2 (O2CB) во время загрузки (нажать на кнопку [Да] );
    • задать имя кластера: ввести "ocfs2cluster" и нажать на кнопку [Ok];
    • для остальных параметров выбрать значения, установленные по умолчанию.
  6. Перезапустить службу o2cb командой:

    sudo systemctl restart o2cb

  7. Удостовериться в успешном запуске службы o2cb. Для этого в журнале регистрации просмотреть события, относящиеся к службе, командой:

    sudo journalctl -u o2cb
    Пример вывода после выполнения команды:

    мар 23 09:45:48 astra systemd[1]: Starting Load o2cb Modules...
    мар 23 09:45:48 astra o2cb[15281]: checking debugfs...
    мар 23 09:45:48 astra o2cb[15281]: Loading stack plugin "o2cb": OK
    мар 23 09:45:48 astra o2cb[15281]: Loading filesystem "ocfs2_dlmfs": OK
    мар 23 09:45:48 astra o2cb[15281]: Creating directory '/dlm': OK
    мар 23 09:45:48 astra o2cb[15281]: Mounting ocfs2_dlmfs filesystem at /dlm: OK
    мар 23 09:45:48 astra o2cb[15281]: Setting cluster stack "o2cb": OK
    мар 23 09:45:48 astra o2cb[15281]: Registering O2CB cluster "ocfs2cluster": OK
    мар 23 09:45:48 astra o2cb[15281]: Setting O2CB cluster timeouts : OK
    мар 23 09:45:48 astra o2hbmonitor[15329]: Starting
    мар 23 09:45:48 astra systemd[1]: Started Load o2cb Modules
    CODE

6. Создание (регистрация) хранилищ в веб-интерфейсе ПК СВ

Подключение к веб-интерфейсу ПК СВ описано в статье ПК СВ «Брест» в пределах одного сервера (сервисный режим).

6.1. Создание системного хранилища

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
  2. На открывшейся странице Создать хранилище:
    • в поле Название задать наименование хранилища;
    • в выпадающем списке Тип хранилища выбрать значение Filesystem - qcow2 mode;
    • установить флаг Система;
    • нажать на кнопку [Создать].
  3. Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON

    В представленном примере системному хранилищу file-ds_system присвоен идентификатор 100.

6.2. Создание хранилища образов

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
  2. На открывшейся странице Создать хранилище:
    • в поле Название задать наименование хранилища;
    • в выпадающем списке Тип хранилища выбрать значение Filesystem - qcow2 mode;
    • установить флаг Образы;
    • нажать на кнопку [Создать].
  3. Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON

    В представленном примере хранилищу образов file-ds_images присвоен идентификатор 101.

7. Монтирование сетевых блочных устройств к каталогам хранилищ

Предварительно подключенные сетевые блочные устройства должны быть размечены с использованием кластерной файловой системы OCFS2.

Для этого в ОС фронтальной машины необходимо выполнить команды:

sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2cluster /dev/sda

sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2cluster /dev/sdb

7.1. Настройки фронтальной машины

  1. Определить идентификаторы (UUID)  сетевых блочных устройств командой:

    sudo blkid
    Пример вывода после выполнения команды:

    /dev/vda1: UUID="b5fd411a-4c96-491b-bfc0-b4e9e2670e9c" TYPE="ext4" PARTUUID="50741579-01"
    /dev/vda5: UUID="31daa40d-8e07-44cc-b851-d985f2121bb7" TYPE="swap" PARTUUID="50741579-05"
    /dev/sdb: UUID="3bd71b84-6463-42ec-8aff-106cafdae2e2" TYPE="ocfs2"
    /dev/sda: UUID="41ff6399-368e-4b81-bae4-bdfa4aedd45a" TYPE="ocfs2"
    CODE
  2. В файл /etc/fstab добавить следующие строки:

    UUID=41ff6399-368e-4b81-bae4-bdfa4aedd45a /var/lib/one/datastores/100 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    UUID=3bd71b84-6463-42ec-8aff-106cafdae2e2 /var/lib/one/datastores/101 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    CODE

    таким образом в разделе sda будет размещено системное хранилище, а в разделе sdb – хранилище образов.

  3. Выполнить монтирование командой:

    sudo mount -a
    Результатом выполнения команды должен быть пустой вывод без ошибок.

  4. Выполнить перезагрузку.
  5. Назначить на каталог созданных хранилищ владельца oneadmin. Для этого последовательно выполнить команды:

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/100

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/101

  6. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища убедиться в том, что созданные хранилища имеют актуальный размер.

7.2. Настройки узла виртуализации

  1. На узле виртуализации создать каталоги для созданных ранее хранилищ на базе файловой технология хранения. Для этого последовательно выполнить команды:

    sudo mkdir /var/lib/one/datastores/100

    sudo mkdir /var/lib/one/datastores/101

  2. Определить идентификаторы (UUID)  сетевых блочных устройств командой:

    sudo blkid
    Пример вывода после выполнения команды:

    /dev/vda1: UUID="43f857b0-8c35-403a-813e-a888c1ebe88a" TYPE="ext4" PARTUUID="30cbce44-01"
    /dev/vda5: UUID="097bdac9-ba26-42bb-8d89-3df9149957f7" TYPE="swap" PARTUUID="30cbce44-05"
    /dev/sdb: UUID="3bd71b84-6463-42ec-8aff-106cafdae2e2" TYPE="ocfs2"
    /dev/sda: UUID="41ff6399-368e-4b81-bae4-bdfa4aedd45a" TYPE="ocfs2"
    CODE
  3. В файл /etc/fstab добавить следующие строки:

    UUID=41ff6399-368e-4b81-bae4-bdfa4aedd45a /var/lib/one/datastores/100 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    UUID=3bd71b84-6463-42ec-8aff-106cafdae2e2 /var/lib/one/datastores/101 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    CODE

    таким образом в разделе sda будет размещено системное хранилище, а в разделе sdb – хранилище образов.

  4. Выполнить монтирование командой:

    sudo mount -a
    Результатом выполнения команды должен быть пустой вывод без ошибок.

  5. Выполнить перезагрузку.
  6. Назначить на каталог созданных хранилищ владельца oneadmin. Для этого последовательно выполнить команды:

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/100

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/101

8. Проверка работы хранилищ

Для проверки работы созданных хранилищ можно выполнить действия по развертыванию ВМ. Для этого: