Хранилища на базе файловой технологии хранения#

Особенности файловой технологии хранения#

Файловая технология хранения позволяет хранить образы дисков в виде файла. В качестве системы хранения данных (СХД) может выступать локальное хранилище сервера (например, специально выделенное блочное устройство) или внешнее хранилище. В ПВ поддерживаются внешние хранилища, построенные на таких технологиях, как NAS и SAN:

  • NAS (Network Attached Storage — сетевое хранилище данных) обеспечивает доступ к данным на уровне файлов;

  • SAN (Storage Area Network — сеть хранения данных) обеспечивает доступ к данным на уровне блочных устройств.

SAN обеспечивает предоставление блочных устройств посредством сетевых протоколов, таких как Fibre Channel или iSCSI. Для доступа к определенному сетевому блочному устройству используется специализированный адрес этого устройства — LUN (Logical Unit Number — номер логического устройства). Для организации хранения в ПВ требуется выделение как минимум двух LUN (один — для хранилища образов, второй — для системного хранилища). Эти LUN должны быть презентованы каждому компьютеру, на котором развернуты службы сервера управления и/или сервера виртуализации. Файловая технология хранения подразумевает, что подключенные системы хранения данных размечены с использованием одной из файловых систем.

Предупреждение

Сетевая файловая система NFS не поддерживает использование меток безопасности. Если планируется использование этой файловой системы при построении хранилища, функционирующего в мандатном контексте, то для ВМ следует установить уровень целостности, назначаемый по умолчанию, равным 0.

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

  • распределения операций ввода-вывода между серверами хранения данных;

  • обеспечения непрерывности обслуживания.

Ограничения, связанные с функционированием файловой системы NFS#

В дискреционном режиме функционирования ПВ при использовании NFS на каждом сервере виртуализации следует установить уровень целостности, назначаемый по умолчанию для ВМ, равным 0. Для этого необходимо выполнить следующие действия:

  1. Остановить службу libvirtd командой:

sudo systemctl stop libvirtd.service
  1. В конфигурационном файле /etc/libvirt/libvirtd.conf, установить значение параметра ilev_vm равное 0:

ilev_vm = 0
  1. Запустить службу libvirtd командой:

sudo systemctl start libvirtd.service

Особенности использования методов передачи данных#

Методы передачи Shared и Qcow2#

При использовании драйвера shared (метода совместной передачи — shared transfer driver) образы дисков ВМ экспортируются в соответствующий каталог системного хранилища на сервере виртуализации. При этом на всех узлах виртуализации должна быть установлена и настроена общая распределенная (или кластерная) файловая система.

Драйвер qcow2 является разновидностью метода совместной передачи и ориентирован на работу с образами дисков формата Qcow2. Образы создаются и передаются с помощью инструмента командной строки qemu-img с использованием исходного образа в качестве опорного файла. Стандартные параметры инструмента командной строки qemu-img можно скорректировать, указав необходимые значения в конфигурационном файле /etc/one/tmrc (переменная QCOW2_OPTIONS).

Схема функционирования:

../../../../_images/pic_1.png

При развертывании ВМ на сервере виртуализации в каталоге системного хранилища (100) создается рабочий каталог :term:ВМ с наименованием, соответствующем идентификатору этой ВМ (7). Из каталога хранилища образов (101) в рабочий каталог ВМ копируется файл непостоянного образа, указанный в шаблоне ВМ (disk.1) и/или формируется символическая ссылка на файл постоянного образа (disk.0). Цифра после префикса disk. соответствует номеру диска, указанному в шаблоне.

При создании снимка состояния работающей ВМ в рабочем каталоге записывается файл состояния этой ВМ с наименованием вида snap-<номер>.xml, где <номер> — порядковый номер снимка, начиная с цифры 0.

При использовании драйвера qcow2 во время создания снимка состояния работающей ВМ также формируется снимок состояния диска этой ВМ. В файл снимка состояния диска записываются изменения в данных, содержащихся на диске (дельта). В качестве наименования файлов снимков состояния диска выступает порядковый номер снимка, начиная с цифры 0. При этом файлы снимков состояния диска размещаются в следующих каталогах:

  • для непостоянных образов: /var/lib/one/datastores/<идентификатор_системного_хранилища>/ <идентификатор_ВМ>/disk.<идентификатор_диска>.snap/

Примечание

Пример

Для примера, представленного на рисунке выше /var/lib/one/datastores/100/7/disk.1.snap/ При этом файл disk.1 будет являться символической ссылкой на файл актуального снимка состояния диска.

  • для постоянных образов: /var/lib/one/datastores/<идентификатор_хранилища_образов>/ <идентификатор_образа>.snap/

Примечание

Пример

Для примера, представленного на рисунке выше /var/lib/one/datastores/101/6f7f699d.snap/

При этом файл disk.0 будет являться символической ссылкой на файл актуального снимка состояния диска.

Кроме того, в рабочем каталоге ВМ будет создана символическая ссылка с наименованием disk.0.snap, которая указывает на каталог со снимками состояний диска (/var/lib/one/datastores/100/6f7f699d.snap/).

При использовании драйвера qcow2 можно отдельно создать снимок состояния диска как работающей, так и выключенной ВМ. Файлы снимков состояния диска будут размещены в каталогах, описанных выше.

При использовании драйвера shared создание снимка состояния диска работающей ВМ не поддерживается. В качестве снимка состояния диска выключенной ВМ создается полная копия файла диска ВМ. Файлы снимков состояния диска размещаются в каталогах, описанных выше.

Метод передачи SSH#

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

../../../../_images/node_ssh_copy.png

При развертывании ВМ на сервере виртуализации в каталоге системного хранилища (100) создается рабочий каталог ВМ с наименованием, соответствующем идентификатору этой ВМ (7). Из каталога хранилища образов (101) в рабочий каталог ВМ копируется файл исходного образа, указанного в шаблоне ВМ. Копии исходных образов имеют наименование вида disk.<номер>, где <номер> — цифра, соответствующая номеру диска в шаблоне.

Предупреждение

Необходимо убедиться в том, что все компьютеры, включая сервер управления, могут осуществлять ssh-передачу на любой другой компьютер, включая самих себя. В противном случае перемещения не будут выполняться.

При создании снимка состояния работающей ВМ в рабочем каталоге этой ВМ создается файл состояния ВМ с наименованием вида snap-<номер>.xml, где <номер> — порядковый номер снимка, начиная с цифры 0.

Для выключенной ВМ можно зафиксировать состояние диска этой ВМ (сделать снимок). При этом файлы снимков состояния диска являются полной копией файла диска ВМ и размещаются в каталоге: /var/lib/one/datastores/<идентификатор_системного_хранилища>/ <идентификатор_ВМ>/disk.<номер>.snap/

где <номер> — цифра, соответствующая номеру диска в шаблоне.

Примечание

Пример

Для файла образа диска disk.1:

``/var/lib/one/datastores/100/7/disk.1.snap/``

В качестве наименования файлов снимков состояния диска, размещенных в этом каталоге, выступает порядковый номер снимка, начиная с цифры 0.

Если в качестве исходного выступал постоянный образ, то при уничтожении ВМ все файлы снимков состояний диска будут перемещены в хранилище образов в каталог: /var/lib/one/datastores/<идентификатор_хранилища_образов>/ <идентификатор_образа>.snap/.

Примечание

Пример

Для файла образа диска disk.1 все файлы из каталога /var/lib/one/datastores/100/7/disk.1.snap/ будут перемещены в каталог /var/lib/one/datastores/101/4b2cda93.snap/

Регистрация хранилищ#

Предупреждение

Действия по регистрации хранилищ в ПВ выполняются под учетной записью администратора ПВ.

Регистрация системного хранилища#

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

Параметр

Значение

NAME

<Наименование_хранилища>

TYPE

SYSTEM_DS

TM_MAD

Одно из следующих значений: shared, qcow2 или ssh. В зависимости от используемого метода передачи данных между хранилищем образов и системным хранилищем

Предупреждение

Необходимо использовать одинаковый метод передачи данных (параметр TM_MAD) для системного хранилища и для хранилища образов.

Примечание

Пример

Регистрация системного хранилища, в котором используется драйвер qcow2:

  1. Создать файл systemds.txt со следующим содержанием:

NAME = fs_system
TYPE = SYSTEM_DS
TM_MAD = qcow2
  1. Выполнить команду:

onedatastore create systemds.txt

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

ID: 100

Регистрация хранилища образов#

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

Параметр

Значение

NAME

<Наименование_хранилища>

TYPE

IMAGE_DS

DS_MAD

fs

TM_MAD

Одно из следующих значений: shared, qcow2 или ssh. В зависимости от используемого метода передачи данных между хранилищем образов и системным хранилищем

SAFE_DIRS

Перечень каталогов, разделенных символом пробела, в которых разрешается размещать образы. По умолчанию имеет значение /var/tmp

Предупреждение

Необходимо использовать одинаковый метод передачи данных (параметр TM_MAD) для системного хранилища и для хранилища образов.

Примечание

Пример

Регистрация хранилища образов, в котором используется драйвер qcow2:

  1. Создать файл imageds.txt со следующим содержанием:

NAME = fs_images
TYPE = IMAGE_DS
DS_MAD = fs
TM_MAD = qcow2
  1. Выполнить команду:

onedatastore create imageds.txt

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

ID: 101

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

Предупреждение

Действия по монтированию блочных устройств выполняются в ОС СН под учетной записью администратора ОС СН с высоким уровнем целостности.

Особенности монтирования блочных устройств в ПВ#

На сервере виртуализации необходимо создать каталоги для созданных ранее хранилищ на базе файловой технология хранения (по умолчанию /var/lib/one/datastores/<идентификатор_хранилища>). Для этого последовательно выполнить команды:

sudo mkdir /var/lib/one/datastores/<идентификатор_системного_хранилища>
sudo mkdir /var/lib/one/datastores/<идентификатор_хранилища_образов>

Примечание

Пример

Создание каталогов хранилищ, с идентификаторами 100 и 101:

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

На сервере виртуализации необходимо смонтировать подготовленную систему хранения данных в каталог хранилища. Если все хранилища одного типа, можно смонтировать весь каталог /var/lib/one/datastores.

На сервере управления необходимо смонтировать только хранилище образов.

Кроме того, необходимо убедиться в том, что на смонтированном дисковом ресурсе достаточно места для хранения образов и дисков виртуальных машин, которые находятся в состоянии остановлена и не размещена.

Монтирование сетевых блочных устройств с OCFS2#

В общем случае для монтирования блочных устройств, размеченных с использованием кластерной файловой системы OCFS2, необходимо выполнить следующую последовательность действий:

  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"

где в качестве блочных устройств sda и sdb выступают сетевые блочные устройства.

  1. В файл /etc/fstab добавить строки c описанием настроек монтирования сетевых блочных устройств следующего вида:

UUID=<идентификатор_блочного_устройства> <точка_монтирования> \ ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0

Примечание

Пример

При монтировании сетевых блочных устройств, представленных в примере выше, в каталоги каталогов хранилищ с идентификаторами 100 и 101 строки будут иметь следующий вид:

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
  1. Выполнить монтирование командой:

sudo mount -a

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

  1. Перезагрузить компьютер.

Предупреждение

После добавления записи об автоматическом монтировании в файле /etc/fstab и перезагрузки компьютера, необходимо назначить на каталог этого хранилища владельца oneadmin. В противном случае при перезагрузке компьютера владелец меняется на root и использование хранилища будет не доступно.

Для того чтобы назначить на каталог хранилища владельца oneadmin необходимо выполнить команду:

sudo chown oneadmin:oneadmin /var/lib/one/datastores/<идентификатор_хранилища>

Монтирование сетевых ресурсов с NFS#

Предупреждение

Для каждого сетевого каталога, предоставляемого сетевым хранилищем, предварительно необходимо назначить владельцем пользователя с UID равным 9869 (соответствует пользователю oneadmin). А в качестве группы-владельца — группу с GID равным 9869 (соответствует группе oneadmin).

Для монтирования сетевых ресурсов, предоставляемого NFS-сервером, на каждом компьютере (выполняющем функцию сервера управления или сервера виртуализации) необходимо выполнить следующую последовательность действий: 1. Установить службу клиента NFS командой: .. code-block:: bash

sudo apt install nfs-common

2. Просмотреть перечень доступных сетевых ресурсов командой: .. code-block:: bash

sudo showmount -e <IP-адрес_сервера_NAS>

Примечание

Пример

Вывод списка сетевых ресурсов, предоставляемых NFS-сервером с IP-адресом 192.168.1.10

sudo showmount -e 192.168.1.10

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

Export list for 192.168.1.10: /mnt/nfs-images node?,front /mnt/nfs-system node?,front

где /mnt/nfs-system и /mnt/nfs-images — сетевые ресурсы, предоставляемые NFS-сервером, запись node?,front означает, что доступ предоставлен компьютерам, сетевое имя которых начинается с последовательности символов node (далее следует один любой символ), а также компьютеру с сетевым именем front.

  1. Настроить автоматическое монтирование сетевых ресурсов в точки монтирования. Для этого в файл /etc/fstab добавить строки c описанием настроек монтирования сетевых ресурсов: <IP-адрес_сервера_NFS>:<сетевой_ресурс> <точка_монтирования> \ nfs _netdev,timeo=14,intr 0 0

В качестве точек монтирования необходимо указать каталоги созданных хранилищ.

Примечание

Пример Для сетевых ресурсов, представленных выше, строки будут иметь следующий вид:

192.168.1.10:/mnt/nfs-images /var/lib/one/datastores/101 \ nfs _netdev,timeo=14,intr 0 0
192.168.1.10:/mnt/nfs-system /var/lib/one/datastores/100 \ nfs _netdev,timeo=14,intr 0 0
  1. Выполнить монтирование командой:

sudo mount -a

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