Хранилища Ceph#

Особенности использования хранилища Ceph#

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

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

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

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

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

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

Дополнительная настройка Ceph-кластера для использования в ПВ#

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

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

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

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

  1. Распределить конфигурационные файлы на узлы Ceph-кластера, например, с использованием инструмента командной строки ceph-deploy:

ceph-deploy --username <администратор_Ceph-кластера> config push <узел_кластера-1> <узел_кластера-2> ... <узел_кластера-N>
  1. Создать пул для хранилищ, в качестве наименования пула указав one:

ceph osd pool create one <количество_групп>

где <количество_групп> — количество групп в пуле, которое определяется по следующей формуле: ((Общее количество OSD * 100) / Уровень репликации) с округлением до ближайшей степени 2 в сторону увеличения.

Примечание

Пример

В случае для 3 узлов Ceph:

(3 OSD * 100) / 3 = 100 (округляется до 128)

Таким образом, количество групп в пуле должно быть равным 128.

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

sudo ceph osd lspools

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

1 device_health_metrics
2 one
  1. Настроить пул one на работу с RBD:

sudo ceph osd pool application enable one rbd

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

enabled application ’rbd’ on pool ’one’
  1. Создать Ceph-пользователя, который будет иметь доступ к пулу хранилищ. Данный пользователь будет также использоваться службой libvirt для доступа к образам дисков. Пример создания пользователя с именем libvirt:

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

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

[client.libvirt] key = AQAS8hJkyaa9FxAAnRqI2RTD1nqmOcJLxPRWNg==

Примечание

Префикс client означает, что команда выполняется в отношении логической сущности «пользователь».

  1. Получить копию ключа Ceph-пользователя для ее дальнейшей передачи на серверы виртуализации. Пример команды для пользователя с именем libvirt:

sudo ceph auth get-key client.libvirt | tee client.libvirt.key

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

AQAS8hJkyaa9FxAAnRqI2RTD1nqmOcJLxPRWNg==
  1. Экспортировать набор ключей 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-кластера выполнить следующие действия:

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

ceph-deploy --username <администратор_Ceph-кластера> \ install --cli <сервер_виртуализации>

где <сервер_виртуализации> — сетевое имя или IP-адрес компьютера, на котором развернута служба сервера виртуализации.

  1. Скопировать ключ Ceph-пользователя, созданного ранее, на все серверы виртуализации в каталог /var/lib/one/. Пример команды:

scp client.libvirt.key <администратор>@<сервер_виртуализации>:/tmp ssh <администратор>@<сервер_виртуализации>  "sudo mv /tmp/client.libvirt.key /var/lib/one"

где <администратор> — учетная запись локального администратора компьютера, на котором развернута служба сервера виртуализации.

  1. Скопировать набор ключей Ceph-пользователя, созданного ранее, на все серверы виртуализации в каталог /etc/ceph/. Пример команды:

scp ceph.client.libvirt.keyring <администратор>@<сервер_виртуализации>:/tmp ssh <администратор>@<сервер_виртуализации> "sudo mv /tmp/ceph.client.libvirt.keyring /etc/ceph"
  1. Сгенерировать универсальный уникальный идентификатор (UUID) и сохранить его в файл secret.xml:

sudo apt install uuid-runtime

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
  1. Скопировать файл secret.xml на все серверы виртуализации в каталог /var/lib/one/. Пример команды:

scp secret.xml <администратор>@<сервер_виртуализации>:/tmp ssh <администратор>@<сервер_виртуализации> "sudo mv /tmp/secret.xml /var/lib/one"

Примечание

Значение универсального уникального идентификатора (UUID) в дальнейшем потребуется для настройки хранилищ.

  1. Последовательно на всех серверах виртуализации задать закрытый ключ службы libvirt, используя файл secret.xml. Для этого на административной рабочей станции необходимо выполнить команду:

ssh <администратор>@<сервер_виртуализации> "sudo virsh -c qemu:///system secret-define /var/lib/one/secret.xml"

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

Секрет c84b8321-6d49-4b43-8d1b-0efc1686edc4 создан
  1. Последовательно на всех серверах виртуализации связать закрытый ключ службы libvirt и ключ Ceph-пользователя. Для этого на административной рабочей станции необходимо выполнить команду:

ssh <администратор>@<сервер_виртуализации> "sudo virsh -c qemu:///system secret-set-value --secret $UUID --file /var/lib/one/client.libvirt.key"

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

Значение установлено
  1. Последовательно на всех серверах виртуализации убедиться в том, что Ceph-пользователь (с наименованием libvirt) имеет корректные настройки. Для этого на административной рабочей станции необходимо выполнить команду:

ssh <администратор>@<сервер_виртуализации> "sudo rbd ls -p one --id libvirt"

результатом выполнения команды должен быть пустой вывод без ошибок.

Примечание

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

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

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

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

Параметры хранилищ#

Для использования 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-кластера

ДА

CEPH_HOST

Разделенный пробелами список узлов Ceph-кластера, с инициированной службой монитора (MON)

ДА

CEPH_SECRET

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

ДА

Примечание

Значение UUID можно скопировать из файла /var/lib/one/secret.xml на сервере управления.

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

Параметр

Значение

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

TYPE

SYSTEM_DS

ДА

TM_MAD

ceph

ДА

Параметр

Значение

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

TYPE

IMAGE_DS

ДА

DS_MAD

ceph

ДА

TM_MAD

ceph

ДА

DISK_TYPE

RBD

ДА

STAGING_DIR

Каталог на компьютере, выполняющем функцию моста для сервера управления, (параметр BRIDGE_LIST) в котором будет временно размещен образ перед передачей его в хранилище. По умолчанию имеет значение /var/tmp

НЕТ

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

  • POOL_NAME;

  • STAGING_DIR;

  • RBD_FORMAT.

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

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

Примечание

Пример

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

  1. Создать файл 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>"
  1. Выполнить команду:

onedatastore create systemds.txt

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

ID: 100

Примечание

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

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

Примечание

Пример

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

  1. Создать файл 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>"
  1. Выполнить команду:

onedatastore create imageds.txt

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

ID: 101

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

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

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

  2. На открывшейся странице Создать хранилище зарегистрировать хранилище одним из способов:

    1. На вкладке Расширенный указать непосредственно значения параметров хранилища:

      ../../../../_images/ceph_system-extended_sst.png
    2. На вкладке Мастер настройки выполнить следующие действия:

      • в поле Название задать наименование хранилища;

      • в выпадающем списке Тип хранилища выбрать значение Ceph;

      • в секции Тип хранилища установить флаг Система:

        ../../../../_images/ceph_system-ext_2.png
      • прокрутить страницу Создать хранилище ниже;

      • в поле Список мостов на узле через пробел перечислить серверы виртуализации, настроенные на использование Ceph-кластера;

      • в поле Пул Ceph для хранения образов ввести наименование пула, созданного для хранилища;

      • в поле Пользователь Ceph ввести имя Ceph-пользователя;

      • в поле Узел Ceph через пробел перечислить узлы кластера Ceph, на которых инициирована служба монитора (MON);

      • в поле Ceph секрет ввести значение универсального уникального идентификатора (UUID).

      Примечание

      Значение UUID можно скопировать из файла /var/lib/one/secret.xml.

      Примечание

      Пример заполнения параметров Ceph-кластера

      ../../../../_images/ceph_system-exem.png
  3. На странице Создать хранилище нажать на кнопку Создать.

  4. Дождаться, когда на странице Хранилища для созданного хранилища отобразится актуальный размер:

    ../../../../_images/ceph_system_added_sst.png

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

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

  2. На открывшейся странице Создать хранилище зарегистрировать хранилище одним из способов:

    1. На вкладке Расширенный указать непосредственно значения параметров хранилища:

      ../../../../_images/ceph_images-extended_sst.png
    2. На вкладке Мастер настройки выполнить следующие действия:

      • в поле Название задать наименование хранилища;

      • в выпадающем списке Тип хранилища выбрать значение Ceph;

      • в секции Тип хранилища установить флаг Образы:

        ../../../../_images/ceph_images-2_sst.png
      • прокрутить страницу Создать хранилище ниже;

      • в поле Список мостов на узле через пробел перечислить серверы виртуализации, настроенные на использование Ceph-кластера;

      • в поле Пул Ceph для хранения образов ввести наименование пула, созданного для хранилища;

      • в поле Пользователь Ceph ввести имя Ceph-пользователя;

      • в поле Узел Ceph через пробел перечислить узлы кластера Ceph, на которых инициирована служба монитора (MON);

      • в поле Ceph секрет ввести значение универсального уникального идентификатора (UUID).

      Примечание

      Значение UUID можно скопировать из файла /var/lib/one/secret.xml.

    Примечание

    Пример заполнения параметров Ceph-кластера

    ../../../../_images/ceph_images-exem_sst.png
  3. На странице Создать хранилище нажать на кнопку Создать.

  4. Дождаться, когда на странице Хранилища для созданного хранилища отобразится актуальный размер:

    ../../../../_images/ceph_images_added_sst.png

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

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

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

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

  2. На открывшейся странице Создание хранилища:

    • в поле Название Хранилища задать наименование хранилища;

    • в выпадающем списке Организация хранения данных выбрать значение Ceph;

    • в секции Применение хранилища установить флаг Система:

      ../../../../_images/ceph_system-extended_crtl.png
    • прокрутить страницу Создание хранилища ниже;

    • в поле Список мостов на узле через пробел перечислить серверы виртуализации, настроенные на использование Ceph-кластера;

    • в поле Пул Ceph для хранения образов ввести наименование пула, созданного для хранилища;

    • в поле Узел Ceph через пробел перечислить узлы кластера Ceph, на которых инициирована служба монитора (MON);

    • в поле Пользователь Ceph ввести имя Ceph-пользователя;

    • в поле Ceph секрет ввести значение универсального уникального идентификатора (UUID);

      Примечание

      Значение UUID можно скопировать из файла /var/lib/one/secret.xml.

    Примечание

    Пример заполнения параметров Ceph-кластера

    ../../../../_images/ceph_system-exem_crtl.png
    • выполнить дополнительные настройки создаваемого хранилища, при необходимости;

    • нажать на кнопку Создать.

  3. Дождаться, когда на странице Хранилища для созданного хранилища отобразится актуальный размер:

    ../../../../_images/ceph_system_added_crtl.png

    В представленном примере системному хранилищу ceph_system присвоен идентификатор 113.

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

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

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

  2. На открывшейся странице Создание хранилища:

    • в поле Название Хранилища задать наименование хранилища;

    • в выпадающем списке Организация хранения данных выбрать значение Ceph;

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

      ../../../../_images/ceph_images-extended_crtl.png
    • прокрутить страницу Создание хранилища ниже;

    • в поле Список мостов на узле через пробел перечислить серверы виртуализации, настроенные на использование Ceph-кластера;

    • в поле Пул Ceph для хранения образов ввести наименование пула, созданного для хранилища;

    • в поле Узел Ceph через пробел перечислить узлы кластера Ceph, на которых инициирована служба монитора (MON);

    • в поле Пользователь Ceph ввести имя Ceph-пользователя;

    • в поле Ceph секрет ввести значение универсального уникального идентификатора (UUID);

      Примечание

      Значение UUID можно скопировать из файла /var/lib/one/secret.xml.

    Примечание

    Пример заполнения параметров Ceph-кластера

    ../../../../_images/ceph_images-exem_crtl.png
    • выполнить дополнительные настройки создаваемого хранилища, при необходимости;

    • нажать на кнопку Создать.

  3. Дождаться, когда на странице Хранилища для созданного хранилища отобразится актуальный размер:

    ../../../../_images/ceph_images_added_crtl.png

    В представленном примере хранилищу образов ceph_images присвоен идентификатор 114.