Хранилища c драйвером BREST_LVM#

Особенности использования драйвера BREST_LVM#

Драйвер BREST_LVM позволяет организовать хранилище образов и системное хранилище в LVM.

Особенности функционирования хранилища BREST_LVM:

  • в BREST_LVM используется формат образа Qcow2 как в системном хранилище, так и в хранилище образов;

  • логический том, используемый в ВМ, будет увеличиться по мере использования диска ВМ;

  • при загрузке образы конвертируются в формат Qcow2;

  • персистентные образы подключаются к ВМ без предварительного копирования в системное хранилище;

  • хранилище поддерживает снимки состояния ВМ;

  • реализована возможность миграции образов и ВМ из других типов хранилищ в BREST_LVM;

  • загружаемые диски в форматах RAW и Qcow2 с опцией preallocation=full (заполнение неиспользованного места нулями) будут преобразованы в диски с preallocation=none (т.е. нули будут удалены). При этом логический том не будет автоматически уменьшен после записи на него конвертированного образа. В связи с этим, рекомендуется загружать диски в платформу в формате Qcow2 для экономии пространства хранилища;

  • загружаемые диски в формате Qcow2 с использованием опции compression (сжатие) будут преобразованы в Qcow2-формат на базе логического тома без сжатия. В этом случае, после «распаковки» размер тома в хранилище увеличится приблизительно в 3.26 раза;

  • оптимальное потребление пространства хранилища за счет хранения фактически занимаемого объема данных. Логические тома создаются по реальному размеру данных в образе с запасом в 8%, а не по виртуальному размеру, указанному в свойствах образа.

Ограничения использования хранилища BREST_LVM:

  • снимки дисков ВМ не поддерживаются;

  • необходимость установки блокировок сервисами lvmlock и sanlock;

  • необходимость копирования образа в системное хранилище при работе в непостоянном режиме;

  • миграция ВМ между системными хранилищами одного типа доступна только при отсутствии снимков ВМ;

  • минимальный размер создаваемого тома 1 ГБ;

  • репликация на уровне СХД (между двумя СХД, LUN-to-LUN) не поддерживается из-за ограничений модуля блокировок sanlock и процедуры аренды и освобождения (метаинформация о блокировках) для активации и деактивации логического тома;

  • данное хранилище не подходит для реализации Метрокластера, Disaster-Recovery и схожих сценариев;

  • данное хранилище не подходит для сетевых сред с высокой сетевой задержкой (High Latency) из-за ограничений модуля блокировок sanlock и процедуры аренды и освобождения (метаинформация о блокировках). Высокая сетевая задержка (7 мс и выше) может приводить к проблемам с активацией и деактивацией логических томов, поскольку данные операции выполняются в синхронном режиме;

  • хранилище поддерживает до 2000 серверов, включая все серверы управления и серверы виртуализации;

  • необходимость предварительного создания групп LVM-томов для системных хранилищ и хранилищ образов, с обязательной настройкой сервисов lvmlock и sanlock;

  • не поддерживает переменную BRIDGE_LIST, что означает необходимость настройки групп LVM-томов на серверах управления:

../../../../_images/best_LVM.png

Регистрация хранилищ в интерфейсе командной строки#

Примечание

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

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

  1. Создать конфигурационный файл хранилища образов images-ds.conf командой:

sudo nano images-ds.conf
  1. Добавить в созданный файл следующие строки и сохранить файл:

cat > images-ds.conf <<EOT
NAME="brest-lvm-images"
TYPE="IMAGE_DS"
DISK_TYPE="BLOCK"
DS_MAD="brest_lvm"
TM_MAD="brest_lvm" DRIVER="qcow2"
EOT
  1. Выполнить команду:

sudo onedatastore create images-ds.conf

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

ID: 100

Регистрация системного хранилища с использованием конфигурационного файла#

  1. Создать конфигурационный файл системного хранилища system-ds.conf командой:

sudo nano system-ds.conf
  1. Добавить в созданный файл следующие строки и сохранить файл:

cat > system-ds.conf <<EOT
NAME="brest-lvm-system"
TYPE="SYSTEM_DS"
TM_MAD="brest_lvm" DRIVER="qcow2"
EOT
  1. Выполнить команду:

sudo onedatastore create system-ds.conf

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

ID: 101

Регистрация хранилищ в веб-интерфейсе ПВ#

Регистрация хранилища образов в веб-интерфейсе ПВ#

Для регистрации системного хранилища BREST_LVM в веб-интерфейсе ПВ необходимо:

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

../../../../_images/lvm_br_1.png
  1. На открывшейся странице Создать хранилище:

  • перейти во вкладку Расширенный;

  • во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:

NAME="brest-lvm-images"
TYPE="IMAGE_DS"
DISK_TYPE="BLOCK"
DS_MAD="brest_lvm"
TM_MAD="brest_lvm"
DRIVER="qcow2"
  • нажать на кнопку Создать:

../../../../_images/lvm_br_2.png

Регистрация системного хранилища в веб-интерфейсе ПВ#

  1. В веб-интерфейсе ПВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице «Хранилища» нажать на кнопку +, а затем в выпадающем списке выбрать пункт Создать:

../../../../_images/lvm_br_3.png
  1. На открывшейся странице Создать хранилище:

  • перейти во вкладку Расширенный;

  • во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:

NAME="brest-lvm-system"
TYPE="SYSTEM_DS"
TM_MAD="brest_lvm"
DRIVER="qcow2"
  • нажать на кнопку Создать:

../../../../_images/lvm_br_4.png

Настройка блокировок lvmlock и sanlock для групп томов LVM#

Примечание

Действия выполняются один раз на всех серверах управления и серверах виртуализации кластера (необходимые настройки распределенного LVM для использовании lvmlockd и sanlock).

Для настройки серверов кластера необходимо:

  1. Открыть конфигурационный файл /etc/lvm/lvm.conf командой:

sudo nano /etc/lvm/lvm.conf
  1. В конфигурационном файле /etc/lvm/lvm.conf включить использование lvmlockd, поменяв его значение с «0» на «1»:

use_lvmlockd = 1
  1. Открыть конфигурационный файл /etc/lvm/lvmlocal.conf командой:

sudo nano /etc/lvm/lvmlocal.conf
  1. В конфигурационном файле /etc/lvm/lvmlocal.conf задать уникальный идентификационный номер для каждого сервера, где будет использоваться LVM_BREST:

host_id = <идентификационный_номер>

где <идентификационный_номер> — произвольно выбранное уникальное цифровое значение от 1 до 2000.

Примечание

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

  1. Активировать автозагрузку сервисов lvmlockd, lvmlocks, sanlock и brest-lvm:

sudo systemctl enable lvmlockd lvmlocks sanlock brest-lvm
  1. Для применения выполненных настроек перезапустить сервисы lvmlockd, lvmlocks, sanlock и brest-lvm:

sudo systemctl restart lvmlockd lvmlocks sanlock brest-lvm

Создание групп томов BREST_LVM#

Примечание

Действия выполняются на одном из серверов кластера.

  1. Определить блочные устройства, подключенные к серверу, выполнив команду:

lsblk

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

locadm@mgmt2:~$ lsblk
NAME                             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                8:0    0  250G  0 disk
├─vg--one--101-lv--one--image--0 253:7    0    3G  0 lvm
├─vg--one--101-lv--one--image--3 253:9    0  1,2G  0 lvm
└─vg--one--101-lv--one--image--4 253:10   0   10G  0 lvm
sdb                                8:16   0  150G  0 disk
├─vg--one--100-lv--one--vm--0--0 253:0    0   10G  0 lvm
├─vg--one--100-lv--one--vm--1--0 253:1    0   10G  0 lvm
├─vg--one--100-lv--one--vm--2--0 253:2    0   10G  0 lvm
├─vg--one--100-lv--one--vm--3--0 253:3    0   10G  0 lvm
├─vg--one--100-lv--one--vm--4--0 253:4    0    3G  0 lvm
├─vg--one--100-lv--one--vm--5--0 253:5    0    3G  0 lvm
├─vg--one--100-lv--one--vm--6--0 253:6    0    3G  0 lvm
├─vg--one--100-lv--one--vm--7--0 253:8    0    3G  0 lvm
└─vg--one--100-lv--one--vm--8--0 253:11   0    3G  0 lvm
sr0                               11:0    1  364K  0 rom
sr1                               11:1    1  166M  0 rom
vda                              252:0    0  100G  0 disk
├─vda1                           252:1    0   99G  0 part /
├─vda2                           252:2    0    1K  0 part
└─vda5                           252:5    0  975M  0 part [SWAP]

Примечание

При использовании протокола multipath необходимо указывать не наименование определенного блочного устройства, а его alias или идентификатор.

  1. Получить список дисков LUN, подключенных к серверу, выполнив команды:

sudo ls -al /dev/disk/by-id/ | grep <sda>
sudo ls -al /dev/disk/by-id/ | grep <sdb>

где <sda> и <sdb> — наименования блочных устройств.

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

locadm@mgmt2:~$ ls -al /dev/disk/by-id/ | grep sda
lrwxrwxrwx 1 root root   9 мар  5 13:04 lvm-pv-uuid-BHiG7e-vqnV-gYYH-Op1c-A0sX-srGK-9kwv4z -> ../../sda
lrwxrwxrwx 1 root root   9 мар  5 13:04 scsi-360014057fb55687b6784f07b4936ab21 -> ../../sda
lrwxrwxrwx 1 root root   9 мар  5 13:04 wwn-0x60014057fb55687b6784f07b4936ab21 -> ../../sda
locadm@mgmt2:~$ ls -al /dev/disk/by-id/ | grep sdb
lrwxrwxrwx 1 root root   9 мар  5 12:58 lvm-pv-uuid-3UeG8h-Jjpm-Uo3y-e6nM-3fRd-u3B6-p4Iq5R -> ../../sdb
lrwxrwxrwx 1 root root   9 мар  5 12:58 scsi-36001405430fdeae2f8a4d8187cc5fa4c -> ../../sdb
lrwxrwxrwx 1 root root   9 мар  5 12:58 wwn-0x6001405430fdeae2f8a4d8187cc5fa4c -> ../../sdb
locadm@mgmt2:~$ ^C
  1. Создать группу системного хранилища, c использованием LUN, выбранного для системного хранилища (в данном примере: «360014057fb55687b6784f07b4936ab21»):

sudo vgcreate --shared --lock-type sanlock vg-one-<SYSTEM_DS_ID> /dev/disk/by-id/scsi-<360014057fb55687b6784f07b4936ab21>

где:

  • <SYSTEM_DS_ID> — идентификатор системного хранилища;

  • <360014057fb55687b6784f07b4936ab21> — идентификатор LU.

  1. Создать отдельную группу LVM-томов для хранилища образов на блочных устройствах, с использованием LUN, выбранного для хранилища образов (в данном примере: «36001405430fdeae2f8a4d8187cc5fa4c»):

sudo vgcreate --shared --lock-type sanlock vg-one-<IMAGE_DS_ID> /dev/disk/by-id/scsi-<36001405430fdeae2f8a4d8187cc5fa4c>

где:

  • <IMAGE_DS_ID> — идентификатор хранилища образов;

  • <36001405430fdeae2f8a4d8187cc5fa4c> — идентификатор LUN.

  1. Для активации блокировок, перезапустить службу brest-lvm на всех серверах кластера, выполнив на них команду:

sudo systemctl restart brest-lvm

Примечание

Запуск службы brest-lvm, как и создание группы томов LVM с блокировками, может занять длительное время (от 30 секунд до 3 минут) в связи с особенностями функционирования сервиса sanlock. Следовательно после загрузки сервера хранилище будет доступно только после запуска блокировок.

Миграция образов из других хранилищ в BREST_LVM#

Для выполнения миграции образов, в интерфейсе CLI выполните команду:

sudo oneimage convert <IMAGE_ID> <BREST_LVM_IMAGE_DS_ID>

где:

  • <IMAGE_ID> — идентификатор переносимого образа;

  • <BREST_LVM_IMAGE_DS_ID> — идентификатор хранилища образов BREST_LVM.

Примечание

Команда sudo oneimage convert <IMAGE_ID> <BREST_LVM_IMAGE_DS переносит в хранилище BREST_LVM только неиспользуемые образы (в состоянии «ГОТОВО»). Используемый образ можно перенести только вместе с ВМ, которая его использует.

Примечание

На данный момент поддерживаются только хранилища LVM_LVM, LVM_THIN и qcow2.

Миграция ВМ из других хранилищ в BREST_LVM#

Примечание

Поддерживается только миграция ВМ в состоянии ВЫКЛЮЧЕНО.

Для выполнения миграции виртуальных машин, в интерфейсе CLI выполните команду:

sudo onevm changeds <VMID> <BREST_LVM_SYSTEM_DS_ID> <BREST_LVM_IMAGE_DS_ID>

где:

  • <VMID> — идентификатор виртуальной машины;

  • <BREST_LVM_SYSTEM_DS_ID> — идентификатор системного хранилища BREST_LVM;

  • <BREST_LVM_IMAGE_DS_ID> — идентификатор хранилища образов BREST_LVM.

Миграция ВМ будет происходить следующими этапами:

  1. При миграции будет создана копия образа ВМ в хранилище BREST_LVM.

  2. Имя нового образа будет изменено на <ИМЯ_ОРИГИНАЛЬНОГО_ОБРАЗА>_<ID_ОРИГИНАЛЬНОГО_ОБРАЗА>.

  3. ВМ будет перемещена в системное хранилище BREST_LVM и связана с новым образом.

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

  5. По завершении миграции всех ВМ, связанных с образом, он останется в хранилище образов, но с ним уже не будет связана ни одна ВМ.

Примечание

На данный момент поддерживаются только хранилища LVM_LVM, LVM_THIN и qcow2.