Хранилища Ceph#
Особенности использования хранилища Ceph#
Ceph — распределенная объектная сеть хранения, обеспечивающая файловый и блочный интерфейсы доступа. Она может использоваться на системах, состоящих как из нескольких серверов, так и из тысяч узлов, образовывающих кластер. Встроенные механизмы продублированной репликации данных обеспечивают высокую отказоустойчивость системы. При добавлении или удалении новых узлов кластера массив данных автоматически балансируется с учетом внесенных изменений. В Ceph обработка данных и метаданных разделена на различные группы узлов в кластере.
Образы и диски виртуальных машин хранятся в одном Ceph-пуле. Каждый образ имеет в пуле имя вида: one-<идентификатор_образа>
. Виртуальные машины будут использовать RBD-тома для своих дисков если образы помечены как постоянный, в противном случае создаются новые снапшоты образа с наименованием вида:
one-<идентификатор_образа>-<идентификатор_ВМ>-<идентификатор_диска_ВМ>.
Допускается совместная работа хранилища образов, построенного на базе Ceph, и системного хранилища, построенного на базе файловой технологии хранения. При этом в качестве драйвера передачи данных между хранилищем образов и системным хранилищем используется метод совместной передачи (shared). В этом случае энергозависимые диски и диски подкачки создаются в виде обычных файлов в системном хранилище. А также кроме Ceph-кластера необходимо выполнить установку и настройку распределенной файловой системы, например, NFS.
Предупреждение
Для использования хранилища Ceph необходимо, чтобы серверы виртуализации являлись Ceph-клиентами работающего Ceph-кластера.
Дополнительная настройка Ceph-кластера для использования в ПВ#
Предупреждение
Действия по настройке Ceph-кластера выполняются в ОС СН под учетной записью администратора ОС СН с высоким уровнем целостности.
Предварительно должен быть развернут Ceph-кластер.
Дополнительно на административной рабочей станции от имени учетной записи администратора Ceph-кластера необходимо выполнить следующие настройки:
Распределить конфигурационные файлы на узлы Ceph-кластера, например, с использованием инструмента командной строки
ceph-deploy
:
ceph-deploy --username <администратор_Ceph-кластера> config push <узел_кластера-1> <узел_кластера-2> ... <узел_кластера-N>
Создать пул для хранилищ, в качестве наименование пула указав
one
:
ceph osd pool create one <количество_групп>
где <количество_групп>
— количество групп в пуле, которое определяется по следующей формуле: ((Общее количество OSD * 100) / Уровень репликации)
с округлением до ближайшей степени 2 в сторону увеличения.
Примечание
Пример
В случае для 3 узлов ceph:
(3 OSD * 100) / 3 = 100 (округляется до 128)
Таким образом, количество групп в пуле должно быть равным 128.
Вывести перечень пулов командой:
sudo ceph osd lspools
Пример вывода после выполнения команды:
1 device_health_metrics
2 one
Настроить пул one на работу с RBD:
sudo ceph osd pool application enable one rbd
Пример вывода после успешного выполнения команды:
enabled application ’rbd’ on pool ’one’
Создать Ceph-пользователя, который будет иметь доступ к пулу хранилищ. Данный пользователь будет также использоваться службой libvirt для доступа к образам дисков. Пример создания пользователя с именем
libvirt
:
sudo ceph auth get-or-create client.libvirt \ mon ’profile rbd’ osd ’profile rbd pool=one’
Пример вывода после успешного выполнения команды:
[client.libvirt] key = AQAS8hJkyaa9FxAAnRqI2RTD1nqmOcJLxPRWNg==
Примечание
Префикс client
означает, что команда выполняется в отношении логической сущности «пользователь».
Получить копию ключа Ceph-пользователя для ее дальнейшей передачи на серверы виртуализации. Пример команды для пользователя с именем
libvirt
:
sudo ceph auth get-key client.libvirt | tee client.libvirt.key
Пример вывода после успешного выполнения команды:
AQAS8hJkyaa9FxAAnRqI2RTD1nqmOcJLxPRWNg==
Экспортировать набор ключей Ceph-пользователя в файл
ceph.client.libvirt.keyring
командой:
sudo ceph auth get client.libvirt -o ceph.client.libvirt.keyring
Пример вывода после успешного выполнения команды:
exported keyring for client.libvirt
Настройка сервера управления для работы с Ceph-кластером#
Для сервера управления не требуется специальная настройка. Сервер управления будет выполнять доступ к Ceph-кластеру через серверы виртуализации, настроенные на использование Ceph-кластера (параметр BRIDGE_LIST
, который указывается при регистрации хранилища).
Настройка сервера виртуализации для работы с Ceph-кластером#
Предупреждение
Действия по настройке сервера виртуализации выполняются в ОС СН под учетной записью администратора ОС СН с высоким уровнем целостности.
Для настройки сервера виртуализации на использование Ceph-кластера необходимо на административной рабочей станции от имени учетной записи администратора Ceph-кластера выполнить следующие действия:
Установить клиентские инструментальные средства на всех компьютерах, выполняющих функцию сервера виртуализации. Пример команды:
ceph-deploy --username <администратор_Ceph-кластера> \ install --cli <сервер_виртуализации>
где <сервер_виртуализации>
— сетевое имя или IP-адрес компьютера, на котором развернута служба сервера виртуализации.
Скопировать ключ Ceph-пользователя, созданного ранее, на все серверы виртуализации в каталог
/var/lib/one/
. Пример команды:
scp client.libvirt.key <администратор>@<сервер_виртуализации>:/tmp ssh <администратор>@<сервер_виртуализации> "sudo mv /tmp/client.libvirt.key /var/lib/one"
где <администратор>
— учетная запись локального администратора компьютера, на котором развернута служба сервера виртуализации.
Скопировать набор ключей Ceph-пользователя, созданного ранее, на все серверы виртуализации в каталог
/etc/ceph/
. Пример команды:
scp ceph.client.libvirt.keyring <администратор>@<сервер_виртуализации>:/tmp ssh <администратор>@<сервер_виртуализации> "sudo mv /tmp/ceph.client.libvirt.keyring /etc/ceph"
Сгенерировать универсальный уникальный идентификатор (
UUID
) и сохранить его в файлsecret.xml
:
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
Скопировать файл
secret.xml
на все серверы виртуализации в каталог/var/lib/one
. Пример команды:
scp secret.xml <администратор>@<сервер_виртуализации>:/tmp ssh <администратор>@<сервер_виртуализации> "sudo mv /tmp/secret.xml /var/lib/one"
Примечание
Значение универсального уникального идентификатора (UUID
) в дальнейшем потребуется для настройки хранилищ.
Последовательно на всех серверах виртуализации задать закрытый ключ службы
libvirt
, используя файлsecret.xml
. Для этого на административной рабочей станции необходимо выполнить команду:
ssh <администратор>@<сервер_виртуализации> "sudo virsh -c qemu:///system secret-define /var/lib/one/secret.xml"
Пример вывода после успешного выполнения команды:
Секрет c84b8321-6d49-4b43-8d1b-0efc1686edc4 создан
Последовательно на всех серверах виртуализации связать закрытый ключ службы
libvirt
и ключ Ceph-пользователя. Для этого на административной рабочей станции необходимо выполнить команду:
ssh <администратор>@<сервер_виртуализации> "sudo virsh -c qemu:///system secret-set-value --secret $UUID --file /var/lib/one/client.libvirt.key"
Пример вывода после успешного выполнения команды:
Значение установлено
Последовательно на всех серверах виртуализации убедиться в том, что Ceph пользователь (с наименованием
libvirt
) имеет корректные настройки. Для этого на административной рабочей станции необходимо выполнить команду:
ssh <администратор>@<сервер_виртуализации> "sudo rbd ls -p one --id libvirt"
результатом выполнения команды должен быть пустой вывод без ошибок.
Примечание
После настройки сервера виртуализации необходимо убедиться в том, что на узлах Ceph-кластера выделено достаточно места для хранения вспомогательных файлов виртуальных машин, таких как context-диски, файлы развертывания и файлы контрольной точки.
Регистрация хранилищ#
Предупреждение
Действия по регистрации хранилищ в ПВ выполняются под учетной записью администратора ПВ.
Параметры хранилищ#
Для использования Ceph-кластера в качестве системы хранения необходимо зарегистрировать системное хранилище и хранилище образов. При регистрации этих хранилищ указываются значения общих параметров конфигурации, приведенные в таблице:
Параметр |
Описание |
Обязательный |
---|---|---|
|
Имя хранилища |
ДА |
|
Имя Ceph-пула |
ДА |
|
Имя Ceph-пользователя, используемое службами libvirt и rbd |
ДА |
|
Полный путь файла закрытого ключа для пользователя, если не используется стандартный файл ( |
НЕТ |
|
Нестандартный конфигурационный файл Ceph, если необходим |
НЕТ |
|
По умолчанию будет использоваться RBD-формат 2 |
НЕТ |
|
Разделенный пробелами список серверов виртуализации, настроенных на использование Ceph-кластера |
ДА |
|
Разделенный пробелами список узлов Ceph-кластера, с инициированной службой монитора ( |
ДА |
|
Универсальный уникальный идентификатор ( |
ДА |
А также дополнительные параметры для каждого типа хранилища, представленные в таблицах:
Параметр |
Значение |
Обязательный |
---|---|---|
|
|
ДА |
|
|
ДА |
Параметр |
Значение |
Обязательный |
---|---|---|
|
|
ДА |
|
|
ДА |
|
|
ДА |
|
|
ДА |
|
Каталог на компьютере, выполняющем функцию моста для сервера управления, (параметр |
НЕТ |
В конфигурационном файле /var/lib/one/remotes/datastore/ceph/ceph.conf
могут быть установлены значения по умолчанию для следующих параметров хранилища Ceph
:
POOL_NAME
;
STAGING_DIR
;
RBD_FORMAT
.
Регистрация системного хранилища#
Примечание
Пример
Создание хранилища с использованием конфигурационного файла:
Создать файл systemds.txt со следующим содержанием:
NAME = ceph_system
TYPE = SYSTEM_DS
TM_MAD = ceph
POOL_NAME = one
CEPH_USER = libvirt
BRIDGE_LIST = "<сервер_виртуализации-1> <сервер_виртуализации-2> ... <сервер_виртуализации-N>"
CEPH_HOST = "<узел_кластера-1> <узел_кластера-2> ... <узел_кластера-N>"
CEPH_SECRET = "<значение_UUID>"
Выполнить команду:
onedatastore create systemds.txt
Пример вывода после выполнения команды:
ID: 100
Примечание
Также Ceph
может работать с системным хранилищем, построенном на базе файловой технологии хранения с использованием метода совместной передачи (shared
). В этом случае энергозависимые диски и диски подкачки создаются в виде обычных файлов в системном хранилище. Кроме Ceph-кластера необходимо выполнить установку и настройку распределенной файловой системы, например, NFS.
Регистрация хранилища образов#
Примечание
Пример
Создание хранилища с использованием конфигурационного файла:
создать файл
imageds.txt
со следующим содержанием:
NAME = "ceph_images"
TYPE = IMAGE_DS
DS_MAD = ceph
TM_MAD = ceph
DISK_TYPE = RBD
POOL_NAME = one
CEPH_USER = libvirt
BRIDGE_LIST = "<сервер_виртуализации-1> <сервер_виртуализации-2> ... <сервер_виртуализации-N>"
CEPH_HOST = "<узел_кластера-1> <узел_кластера-2> ... <узел_кластера-N>"
CEPH_SECRET = "<значение_UUID>"
выполнить команду:
onedatastore create imageds.txt
Пример вывода после выполнения команды:
ID: 101