Облачные хранилища Ceph#

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

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

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

Общие сведения#

Образы и диски виртуальных машин хранятся в одном Ceph-пуле. Каждый образ имеет в пуле имя вида: one-<идентификатор_образа>. Виртуальные машины будут использовать RBD-тома для своих дисков если образы помечены как постоянный, в противном случае создаются новые снапшоты образа с наименованием вида:

one-<идентификатор_образа>-<идентификатор_ВМ>-<идентификатор_диска_ВМ>.

Настройка Ceph-кластера#

Предварительно должен быть развернут Ceph-кластер.

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

  1. Создать пул для облачных хранилищ, указав наименование пула one:

ceph osd pool create one 128 ceph osd lspools

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

0 data,1 metadata,2 rbd,6 one,
  1. Определить Ceph-пользователя, который будет иметь доступ к пулу хранилищ. Данный пользователь будет также использоваться libvirt для доступа к образам дисков, например:

ceph auth get-or-create client.libvirt \ mon ’profile rbd’ osd ’profile rbd pool=one’

Кроме того, необходимо получить копию ключа данного пользователя для ее дальнейшей передачи на узлы виртуализации, например:

ceph auth get-key client.libvirt | tee client.libvirt.key ceph auth get client.libvirt -o ceph.client.libvirt.keyring
  1. Несмотря на то, что в ПВ поддерживается RBD-формат 1, настоятельно рекомендуется использовать RBD-формат 2, для этого в файле ceph.conf указать:

[global] rbd_default_format = 2
  1. Выбрать группу клиентских узлов кластера для использования в качестве мостов хранилищ storage bridges. Эти узлы будут использоваться для импорта образов в Ceph-кластер из ПВ. В данных узлах должна быть установлена программа qemu-img.

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

Для фронтальной машины не требуется специальная настройка Ceph. Фронтальная машина будет выполнять доступ к Ceph-кластеру через мосты хранилищ.

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

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

  1. Должны быть установлены клиентские инструментальные средства Ceph.

  2. Сервис MON должен быть определен в ceph.conf для всех узлов, поэтому значения hostname и port не требуется указывать в Ceph-командах;

  3. от имени пользователя (например, admin), входящего в группы astra-admin и astra-console, скопировать набор ключей Ceph-пользователя ceph.client.libvirt.keyring на узлы в каталог /etc/ceph и ключ пользователя client.libvirt.key в каталог /var/lib/one:

scp ceph.client.libvirt.keyring admin@node:/tmp
scp client.libvirt.key admin@node:/tmp
ssh admin@node "sudo mv /tmp/ceph.client.libvirt.keyring /etc/ceph"
ssh admin@node "sudo mv /tmp/client.libvirt.key /var/lib/one"
ssh admin@node "sudo ln -s /var/lib/one/client.libvirt.key /root/client.libvirt.key"
  1. Сгенерировать секретный ключ для Ceph-пользователя и скопировать его на узлы в каталог /var/lib/one. Зафиксировать универсальный уникальный идентификатор (UUID) для дальнейшего использования:

UUID=’uuidgen’ cat > secret.xml <<EOF
<secret ephemeral=’no’ private=’no’>
<uuid>$UUID</uuid>
<usage type=’ceph’>
<name>client.libvirt secret</name>
</usage>
</secret> EOF
scp secret.xml admin@node:/tmp
ssh admin@node "sudo mv /tmp/secret.xml /var/lib/one"
ssh admin@node "sudo ln -s /var/lib/one/secret.xml /root/secret.xml"
  1. Установить секретный ключ libvirt и удалить файлы ключа на узлах:

ssh admin@node "sudo virsh -c qemu:///system secret-define secret.xml"
ssh admin@node "sudo virsh -c qemu:///system secret-set-value --secret $UUID --base64 $(cat /root/client.libvirt.key)"
ssh admin@node "sudo rm /root/client.libvirt.key"
ssh admin@node "sudo rm /var/lib/one/client.libvirt.key"
  1. Убедиться в том, что Ceph-клиент имеет корректные настройки на узле:

ssh admin@node "sudo rbd ls -p one --id libvirt"
  1. Убедиться в том, что на узлах выделено достаточно места для хранения вспомогательных файлов виртуальных машин, таких как context-диски, файлы развертывания и файлы контрольной точки.

Общие настройки ПВ#

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

Примечание

Можно добавить дополнительные хранилища образов и системные хранилища, указав другие пулы с отличными от Ceph политиками распределения ресурсов/репликации.

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

Параметр

Описание

Обязательный

NAME

Имя хранилища

ДА

POOL_NAME

Имя Ceph-пула

ДА

CEPH_USER

Имя Ceph-пользователя, используемое командами libvirt и rbd

ДА

CEPH_KEY

Полный путь файла секретного ключа для пользователя, если не используется стандартный файл (/var/lib/one/client.libvirt.key)

НЕТ

CEPH_CONF

Нестандартный конфигурационный файл Ceph, если необходим

НЕТ

RBD_FORMAT

По умолчанию будет использоваться RBD-формат 2

НЕТ

BRIDGE_LIST

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

ДА

CEPH_HOST

Разделенный пробелами список узлов виртуализации, с инициированным сервисом монитора (MON), например, NODE1:port1 NODE2:port2 host4:port4

ДА

CEPH_SECRET

Универсальный уникальный идентификатор (UUID) секретного ключа libvirt

ДА

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

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

Параметр

Описание

Обязательный

TYPE

SYSTEM_DS

ДА

TM_MAD

ceph

ДА

Примечание

Пример

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

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

NAME = ceph_system
TYPE = SYSTEM_DS
TM_MAD = ceph
POOL_NAME = one
CEPH_USER = libvirt
BRIDGE_LIST = NODE1 NODE1
CEPH_HOST = NODE1:port1 NODE2:port2
CEPH_USER = libvirt
CEPH_SECRET = "6f88b54b-5dae-41fe-a43e-b2763f601cfc"
  1. Выполнить команду:

onedatastore create systemds.txt

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

ID: 100

Примечание

Также Ceph может работать с системным хранилищем, построенном на базе файловой технологии хранения с использованием метода совместной передачи (shared). В этом случае энергозависимые диски и диски подкачки создаются в виде обычных файлов в системном хранилище. Кроме Ceph-кластера необходимо выполнить установку и настройку распределенной файловой системы, например, NFS.

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

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

Параметр

Описание

Обязательный

DS_MAD

ceph

ДА

TM_MAD

ceph

ДА

DISK_TYPE

RBD

ДА

STAGING_DIR

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

НЕТ

Примечание

Пример

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

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

NAME = "cephds"
DS_MAD = ceph
TM_MAD = ceph
DISK_TYPE = RBD
POOL_NAME = one
CEPH_HOST = NODE1:port1 NODE2:port2
CEPH_USER = libvirt
CEPH_SECRET = "6f88b54b-5dae-41fe-a43e-b2763f601cfc"
BRIDGE_LIST = NODE1 NODE1
  1. Выполнить команду:

onedatastore create imageds.txt

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

ID: 101

Дополнительные параметры#

В файле /var/lib/one/remotes/datastore/ceph/ceph.conf могут быть установлены значения по умолчанию для следующих параметров Ceph-драйвера: - POOL_NAME — имя Ceph-пула; - STAGING_DIR — путь для операций с образом; - RBD_FORMAT — формат для RBD томов.