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

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

В ПК СВ логика работы хранилищ данных устроена так

  • хранилище образов (Images Datastore) – предназначено для хранения всех зарегистрированных образов дисков, которые могут использоваться для создания ВМ. В качестве таких образов могут выступать:
    • образ операционной системы (образ загрузочного диска);
    • CD-ROM – файл в формате ISO, содержащий образ оптического диска (предназначен только для чтения);
    • общий блок данных – образ диска, на котором могут быть размещены любые данные, необходимые пользователю;
  • системное хранилище (System Datastore) – используется для размещения образов дисков созданных ВМ. Эти образы могут быть полными копиями исходного образа, дельтами или символическими ссылками на исходный образ, в зависимости от используемой технологии хранения. При использовании файловой технологии хранения в системном хранилище размещаются служебные файлы ВМ, создаваемые при формировании снимка состояния этой ВМ

В зависимости от назначения выделяют два типа образов:

  • постоянный (persistent) — диск постоянного хранения данных. Изменения, внесенные в такой образ диска, не будут удалены после удаления ВМ или отсоединения его от ВМ. В любой момент времени может быть только одна ВМ, использующая постоянный образ;
  • непостоянный (non-persistent) — диск непостоянного хранения данных. Изменения не сохранятся после удаления ВМ или отсоединения этого образа диска от ВМ. Непостоянные образы могут использоваться несколькими ВМ одновременно, поскольку каждая из них будет работать со своей собственной копией, расположенной в системном хранилище в каталоге этой ВМ.

Методы передачи данных

В ПК СВ используются несколько основных методов передачи данных, например, драйверы shared и qcow2.

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

Схема функционирования данных методов передачи представлена на рисунке:

Рис. 1

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

При использовании драйвера qcow2 во время создания снимка состояния работающей ВМ также формируется снимок состояния диска этой ВМ. В качестве наименования файлов снимков состояния диска выступает порядковый номер снимка, начиная с цифры "0". Снимок состояния работающей ВМ объединяется с основным файлом диска в каталоге /var/lib/one/datastores/<идентификатор_системного_хранилища>/<идентификатор_ВМ>/disk.<идентификатор_диска>.snap/. При этом файлы снимков состояния диска размещаются в следующих каталогах:

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

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

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

При использовании драйвера shared создание снимка состояния диска работающей ВМ не поддерживается.

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

В качестве снимка состояния диска выключенной ВМ создается полная копия файла диска ВМ. Файлы снимков состояния диска размещаются в следующих каталогах:

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

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

Требования

Прежде чем начать работу необходимо убедиться, что соблюдены следующие условия: 

  • Развернут OpenNebula Front-end
  • LUN-ы подключены к узлам кластера

Создание хранилищ

Создадим хранилище images. В веб-интерфейсе управления облаком перейти в Storage - Datastores.

Нажать + и заполнить, как представлено ниже и нажать Create

Аналогичным способом создать хранилище типа system

В Datastores отобразятся созданные хранилища с их идентификаторами (ID)

На Front-end по пути /var/lib/one/datastores будут созданы два каталога с идентификаторами datastore-id. (в данном примере 100 и 101)

 В дальнейшем в эти пути необходимо смонтировать созданные на СХД LUN-ы, но для начала необходимо разметить их одной из кластерных файловых систем.

Далее необходимо отформатировать оба LUN, как описано ниже

Создание файловых систем

В данном примере рассматривается кластерная система OCFS2.

  1. На каждом узле кластера (Front-end и узлах виртуализации) выполните шаги по статье OCFS2
  2. Далее на одном из узлов отформатируйте LUN-a следующим образом:

    sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2 /dev/<sdX>
    CODE

    где <sdX> - имя блочного устройства LUN

  3. После этого, на каждом узле необходимо добавить данные ФС к каталогом, которые будут автоматически монтироваться при загрузке узла. Определите UUID uuid разделов командой:

    blkid
    CODE

    и добавьте его монтирование в /etc/fstab:

    UUID=<uuid> /var/lib/one/datastores/<datastore-id> ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    CODE

Монтирование

На всех узлах кластера выполните команду:

sudo mount -a
CODE

Проверить, что монтирование прошло без ошибок командой:

sudo lsblk

Дополнительно все примонтированные диски типа ocfs2 можно отобразить командой:
mount | grep ocfs2