Облачные хранилища Ceph#
Программно-определяемая технология хранения Ceph обеспечивает возможность использования блочных устройств Ceph для размещения образов и дисков виртуальных машин.
Предупреждение
Для работы данного драйвера необходимо, чтобы узлы виртуализации, использующие технологию Ceph, являлись Ceph-клиентами работающего Ceph-кластера.
Общие сведения#
Образы и диски виртуальных машин хранятся в одном Ceph-пуле. Каждый образ имеет в пуле имя вида: one-<идентификатор_образа>
. Виртуальные машины будут использовать RBD-тома для своих дисков если образы помечены как постоянный, в противном случае создаются новые снапшоты образа с наименованием вида:
one-<идентификатор_образа>-<идентификатор_ВМ>-<идентификатор_диска_ВМ>.
Настройка Ceph-кластера#
Предварительно должен быть развернут Ceph-кластер.
Дополнительно необходимо выполнить следующие настройки:
Создать пул для облачных хранилищ, указав наименование пула
one
:
ceph osd pool create one 128 ceph osd lspools
Пример вывода после выполнения команды:
0 data,1 metadata,2 rbd,6 one,
Определить 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
Несмотря на то, что в ПВ поддерживается RBD-формат
1
, настоятельно рекомендуется использовать RBD-формат2
, для этого в файлеceph.conf
указать:
[global] rbd_default_format = 2
Выбрать группу клиентских узлов кластера для использования в качестве мостов хранилищ
storage bridges
. Эти узлы будут использоваться для импорта образов в Ceph-кластер из ПВ. В данных узлах должна быть установлена программаqemu-img
.
Настройка фронтальной машины#
Для фронтальной машины не требуется специальная настройка Ceph. Фронтальная машина будет выполнять доступ к Ceph-кластеру через мосты хранилищ.
Настройка узла виртуализации#
Для использования Ceph-кластера необходимо выполнить следующую настройку узлов:
Должны быть установлены клиентские инструментальные средства Ceph.
Сервис MON должен быть определен в
ceph.conf
для всех узлов, поэтому значенияhostname
иport
не требуется указывать в Ceph-командах;от имени пользователя (например,
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"
Сгенерировать секретный ключ для 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"
Установить секретный ключ
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"
Убедиться в том, что Ceph-клиент имеет корректные настройки на узле:
ssh admin@node "sudo rbd ls -p one --id libvirt"
Убедиться в том, что на узлах выделено достаточно места для хранения вспомогательных файлов виртуальных машин, таких как context-диски, файлы развертывания и файлы контрольной точки.
Общие настройки ПВ#
Для использования Ceph-кластера в качестве облачного хранилища необходимо зарегистрировать системное хранилище и хранилище образов. Оба хранилища совместно используют одни и те же параметры конфигурации, и Ceph-пул.
Примечание
Можно добавить дополнительные хранилища образов и системные хранилища, указав другие пулы с отличными от Ceph политиками распределения ресурсов/репликации.
Параметры конфигурации системного хранилища и хранилища образов:
Параметр |
Описание |
Обязательный |
---|---|---|
|
Имя хранилища |
ДА |
|
Имя Ceph-пула |
ДА |
|
Имя Ceph-пользователя, используемое командами |
ДА |
|
Полный путь файла секретного ключа для пользователя, если не используется стандартный файл ( |
НЕТ |
|
Нестандартный конфигурационный файл Ceph, если необходим |
НЕТ |
|
По умолчанию будет использоваться RBD-формат |
НЕТ |
|
Разделенный пробелами список узлов виртуализации, используемых в качестве мостов хранилищ |
ДА |
|
Разделенный пробелами список узлов виртуализации, с инициированным сервисом монитора (MON), например, |
ДА |
|
Универсальный уникальный идентификатор (UUID) секретного ключа |
ДА |
Регистрация системного хранилища#
При регистрации системного хранилища дополнительно к параметрам, приведенным в таблице выше, устанавливаются параметры, указанные в таблице:
Параметр |
Описание |
Обязательный |
---|---|---|
|
|
ДА |
|
|
ДА |
Примечание
Пример
Создание хранилища с использованием конфигурационного файла:
Создать файл
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"
Выполнить команду:
onedatastore create systemds.txt
Пример вывода после выполнения команды:
ID: 100
Примечание
Также Ceph может работать с системным хранилищем, построенном на базе файловой технологии хранения с использованием метода совместной передачи (shared). В этом случае энергозависимые диски и диски подкачки создаются в виде обычных файлов в системном хранилище. Кроме Ceph-кластера необходимо выполнить установку и настройку распределенной файловой системы, например, NFS.
Регистрация хранилища образов#
При регистрации хранилища образов дополнительно устанавливаются параметры, указанные в таблице:
Параметр |
Описание |
Обязательный |
---|---|---|
|
|
ДА |
|
|
ДА |
|
|
ДА |
|
Путь по умолчанию для операций с образом в мостах |
НЕТ |
Примечание
Пример
Создание хранилища с использованием конфигурационного файла:
Создать файл
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
Выполнить команду:
onedatastore create imageds.txt
Пример вывода после выполнения команды:
ID: 101
Дополнительные параметры#
В файле /var/lib/one/remotes/datastore/ceph/ceph.conf
могут быть установлены значения по умолчанию для следующих параметров Ceph-драйвера:
- POOL_NAME
— имя Ceph-пула;
- STAGING_DIR
— путь для операций с образом;
- RBD_FORMAT
— формат для RBD томов.