Download PDF
Download page Создание и настройка хранилища образов iSCSI-Libvirt для тестового стенда.
Создание и настройка хранилища образов iSCSI-Libvirt для тестового стенда
Оглавление
В представленном примере описан процесс создания хранилища образов iSCSI-Libvirt, в котором будет зарегистрирован образ диска с репозиторием оперативного обновления 1.7.2.UU.1.
После успешного развертывания ВМ, к ней будет дополнительно подключен образ диска с репозиторием для установки оперативного обновления.
Исходные данные
Предварительно должен быть подготовлен тестовый стенд ПК СВ, функционирующий в сервисном режиме. К тестовому стенду должны быть подключены хранилища, размеченные с использованием кластерной файловой системы OCFS2.
Описание тестовой среды
В данном примере в качестве тестовой среды выступает система виртуализации QEMU/KVM в ОС СН Astra Linux Special Edition 1.7.2.
Описываемые действия по настройке гостевых машин выполняются в программе "Менеджер виртуальных машин" (Virtual Machine Manager) версии 2.2.1-3.
Для размещения репозитория оперативного обновления 1.7.2.UU.1 будет создан файл образа диска в формате QCow2 объемом 24 ГБ. Образ диска с репозиторием будет подключен к гостевой машине iscsi-target (программная система хранения данных).
Вычислительные ресурсы тестового стенда должны обеспечить одновременное функционирование гостевой машины виртуализации, на которой установлены программные компоненты ПК СВ (далее по тексту – фронтальной машины), гостевой машины node1 и гостевой машины iscsi-target.
Перед выполнением действий, описанных ниже, необходимо выключить все гостевые машины тестового стенда.
1. Подготовка образа диска с репозиторием
В представленном примере описаны процессы создания файла образа диска в формате QCow2 и подключения его в хостовой операционной системе.
На подключенный образ диска можно скопировать, например, файлы локального репозитория Astra Linux. Подготовленный образ диска затем можно подключить к гостевой машине для установки оперативного обновления без подключения интернет-репозитория Astra Linux.
Для того чтобы создать файл образа диска, необходимо выполнить команду:
Пример
Пример вывода после выполнения команды:
Formatting 'repo_disk.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=25769803776 lazy_refcounts=off refcount_bits=16
Чтобы подключить файл образа диска, необходимо выполнить последовательность действий, описанную ниже.
-
Загрузить драйвер Network Block Device (NBD):
sudo modprobe nbd -
Подключить образ диска в качестве блочного устройства:
sudo qemu-nbd -c /dev/nbd0 <наименование_диска>.qcow2где/dev/nbd0– свободное устройство NBD.Пример
sudo qemu-nbd -c /dev/nbd0 repo_disk.qcow2Появление сообщения об ошибке вида:
... Failed to set NBD socket ...CODEозначает, что указанное устройство NBD занято. Необходимо выполнить подключение к другому блочному устройству (
nbd1, nbd2и т.д.).Появление сообщения об ошибке вида:
Failed to open /dev/nbd0: No such file or directory...CODEозначает, что драйвер NBD не был загружен.
Для того чтобы разместить файлы локального репозитория Astra Linux на подключенном образе диска, необходимо выполнить последовательность действий, описанную ниже.
-
Просмотреть разделы на блочном устройстве:
sudo fdisk -l /dev/nbd0Пример вывода после выполнения команды:Диск /dev/nbd0: 24 GiB, 25769803776 байт, 50331648 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байтCODE - Создать раздел на диске (один, первичный, размером равный объему всего диска). Для этого:
-
запустить инструмент командной строки
fdiskв интерактивном режиме:sudo fdisk /dev/nbd0 -
при появлении приглашения для ввода вида:
Команда (m для справки):CODEввести "n" (подготовить конфигурацию нового раздела) и нажать клавишу <Enter>. Значения всех запрашиваемых параметров оставить без изменений (сразу нажимать клавишу <Enter>).
Пример вывода после завершения настройки параметров раздела:Создан новый раздел 1 с типом 'Linux' и размером 24 GiB.CODE -
при появлении приглашения для ввода вида:
Команда (m для справки):CODEввести "w" (записать на блочное устройство конфигурацию нового раздела) и нажать клавишу <Enter>.
Пример вывода после завершения настройки параметров раздела:
Таблица разделов была изменена. Вызывается ioctl() для перечитывания таблицы разделов. Синхронизируются диски.CODEПосле этого интерактивный режим работы инструмента командной строки
fdiskзавершится.
-
-
Просмотреть разделы на блочном устройстве:
sudo fdisk -l /dev/nbd0Пример вывода после выполнения команды:... Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/nbd0p1 2048 50331647 50329600 24G 83 LinuxCODE -
Создать файловую систему
ext4в разделеnbd0p1:sudo mkfs.ext4 /dev/nbd0p1Пример вывода после успешного выполнения команды:Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: doneCODE -
Создать каталог, например,
/tmp/repo, для монтирования созданного раздела:mkdir /tmp/repo -
Примонтировать раздел:
sudo mount /dev/nbd0p1 /tmp/repo -
Скопировать в каталог
/tmp/repoфайлы локального репозитория Astra Linux, например, базовый репозиторий оперативного обновления 1.7.2.UU.1 (БЮЛЛЕТЕНЬ № 2022-1011SE17MD). Для этого необходимо в каталоге с tar-архивом обновленного базового репозитория выполнить команду:sudo tar zxvf base-1.7.2.11-04.10.2022_16.55.tgz -C /tmp/repo
После завершения копирования, необходимо выполнить последовательность действий, описанную ниже.
-
Отмонтировать раздел:
sudo umount /tmp/repo -
Отключить образ диска:
sudo qemu-nbd -d /dev/nbd0Пример вывода после успешного выполнения команды:/dev/nbd0 disconnectedCODE -
Выгрузить драйвер Network Block Device:
sudo modprobe -r nbd
Далее файл образа можно подключить в качестве дополнительного диска к гостевой машине.
Файл образа диска предварительно должен быть скопирован в пул хранилища (по умолчанию /var/lib/libvirt/images).
2. Создание и настройка цели (iSCSI-target)
- Подключить подготовленный образ диска к гостевой машине
iscsi-target. - Включить гостевую машину
iscsi-target. -
В ОС гостевой машины
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 vdd 252:48 0 24G 0 disk └─vdd1 252:49 0 24G 0 partCODEгде:
vda– диск для размещения файлов ОС;vdbиvdc– диски для эмуляции сетевых блочных устройств;vdd– блочное устройство, на котором размещены файлы репозитория.
-
Войти в консоль управления Linux-IO Target командой:
sudo targetcli -
Создать (зарегистрировать) блочное устройство
/dev/vddв разделе/backstores/block, присвоив устройству наименование, например,repo-disk:/backstores/block create repo-disk /dev/vddПример вывода после выполнения команды:Created block storage object repo-disk using /dev/vdd.CODE -
Создать цель (
target) в разделе/iscsiкомандой:/iscsi createПример вывода после выполнения команды:Created target iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.c43be0f8555b. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.CODE -
Создать LUN на основе блочного устройства, зарегистрированного в разделе
/backstores/block/iscsi/<идентификатор_цели>/tpg1/luns/ create /backstores/block/<наименование_устройства>где:- <идентификатор_цели> – в рассматриваемом примере имеет значение
"iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.c43be0f8555b"(см. шаг 6); - <наименование_устройства> – в рассматриваемом примере имеет значение
"repo-disk"(см. шаг 5).
Пример вывода после выполнения команды:
Created LUN 0CODE - <идентификатор_цели> – в рассматриваемом примере имеет значение
- Отключить контроль доступа:
-
переместиться на ветку
/iscsi/<идентификатор_цели>/tpg1:cd /iscsi/<идентификатор_цели>/tpg1где <идентификатор_цели> – в рассматриваемом примере имеет значение"iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.c43be0f8555b"(см. шаг 6) .В консоли управления нажатие клавиши <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
-
-
Выполнить сохранение настроек:
/ saveconfigПример вывода после выполнения команды:Last 10 configs saved in /etc/rtslib-fb-target/backup. Configuration saved to /etc/rtslib-fb-target/saveconfig.jsonCODE -
Выйти из консоли управления:
exit
3. Настройка ПК СВ для использования хранилища
- Включить гостевую машину
node1(узел виртуализации); -
В ОС гостевой машины
node1установить пакетlibiscsi-binкомандой:sudo apt install libiscsi-bin
4. Создание (регистрация) хранилища образов iSCSI-Libvirt в веб-интерфейсе ПК СВ
- Включить фронтальную машину;
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- в поле Название задать наименование хранилища;
- в выпадающем списке Тип хранилища выбрать значение "iSCSI Libvirt initiator";
- установить флаг Образы;
- в поле iSCSI узел указать IP-адрес гостевой машины
iscsi-target; - нажать на кнопку [Создать].

- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере хранилищу образовiscsi_libvirt-imagesприсвоен идентификатор102.
5. Регистрация блочного устройства в хранилище
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Образы.
- На открывшейся странице Образы нажать на кнопку [+], затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Укажите параметры нового образа выполнить действия:
- в поле Название задать наименование образа диска;
- в выпадающем списке Тип выбрать значение Общий блок данных хранилища;
- в выпадающем списке Хранилище выбрать созданное ранее хранилище образов iSCSI-Libvirt;
- в выпадающем списке Этот образ является постоянным выбрать значение Да;
- в секции Расположение образа установить флаг Путь/URL и в поле Путь на сервере OpenNebula или URL указать идентификатор блочного устройства (см. шаг 6 раздела Создание и настройка цели (iSCSI-target)).

- На странице Укажите параметры нового образа нажать на кнопку Создать.
- На открывшейся странице Образы необходимо удостовериться в том, что созданный образ имеет статус ГОТОВО.
Перед выполнением дальнейших действий необходимо развернуть ВМ и выполнить установку ОС в ней (см. Создание предварительного шаблона и установка ОС в ВМ). Во время действий по созданию ВМ из шаблона следует дополнительно указать необходимость развертывания ВМ на узле виртуализации node1. Для этого на странице Создать ВМ необходимо раскрыть секцию Выбрать узел для развертывания и указать узел виртуализации node1.

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

- В открывшемся окне Присоединить диск выбрать зарегистрированный образ диска с репозиторием и нажать кнопку Присоединить.

- Дождаться момента, когда в столбце Действия появятся кнопки действий.
для обновления страницы можно воспользоваться кнопкой Обновить.
7. Установка оперативного обновления в ВМ с использованием блочного устройства
- Запустить виртуальную машину.
-
В ОС виртуальной машины вывести перечень блочных устройств:
lsblkЧтобы запустить терминал в ВМ, можно воспользоваться графическим интерфейсом: Меню Пуск – Системные — Терминал Fly.
Пример вывода после выполнения команды:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 24G 0 disk └─sda1 8:1 0 24G 0 part 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]CODEгде
sda– блочное устройство, на котором размещены файлы репозитория. -
Создать каталог для размещения репозитория, например,
/srv/base-repository/:sudo mkdir /srv/base-repository -
Примонтировать раздел блочного устройства, на котором размещены файлы репозитория:
sudo mount /dev/sda1 /srv/base-repository -
Подключить в качестве локального репозитория каталог
/srv/base-repository/, для этого в файле/etc/apt/sources.listдобавить строку вида:deb file:/srv/base-repository/ 1.7_x86-64 main contrib non-freeCODEЕсли в качестве источников пакетов ранее был указан оптический установочный диск, т.е. присутствует строка вида:
deb cdrom:[<наименование_установочного_диска>]/ 1.7_x86-64 contrib main non-freeCODEто эту строку необходимо закомментировать (установить символ "#" в начале строки).
-
Выполнить повторную синхронизацию файлов описаний пакетов с их источником командой:
sudo apt update -
Установить обновление, выполнив команду:
sudo astra-update -A -r -T - Перезагрузить ВМ.
После установки оперативного обновления образ диска с репозиторием можно отключить от ВМ.