Практикум по выбору хранилища

Ceph EC: ёмкость, области отказа и данные RBD

Рассчитайте номинальный расход при кодировании стираний, проверьте размещение после отказа и отделите восстановление данных от доступа RBD. Примеры ограничены Ceph Squid и Reed–Solomon.

База → расчёт и приёмка35 минут4 модуля8 вопросов
После курса

Что вы сможете сделать

  1. Отделять номинальную экономию от эксплуатационного бюджета и измеренного SLA.
  2. Проверять физическую границу отказа и места для полного восстановления.
  3. Разделять возможность восстановления данных, порог операций чтения и записи и поддержку метаданных RBD.
Модуль 1 из 4

Сначала посчитайте фрагменты

Формула задаёт номинальный расход без эксплуатационного запаса.

  • При кодировании стираний k обозначает число фрагментов данных, m — число защитных фрагментов. В рассматриваемом профиле Reed–Solomon объект размещается как k+m фрагментов.

    Проверить тезис: Пул Ceph с кодированием стираний 01

  • Номинальный множитель расхода — (k+m)/k. Для k=4, m=2 из 12 ТБ данных получается 18 ТБ фрагментов. Здесь не учтены метаданные, прочие расходы, запас свободного места и состояние после отказа.

    Проверить тезис: Пул Ceph с кодированием стираний 02

Модуль 2 из 4

Свяжите профиль с физической схемой

Нужны подходящие домены, а не произвольные свободные диски.

  • Профиль используется при создании EC-пула и связанного правила CRUSH. Текущее размещение фрагментов регулируется правилом CRUSH пула; одно чтение исходного профиля не подтверждает действующую раскладку.

    Проверить тезис: Профиль кодирования стираний Ceph 01

  • Параметр crush-failure-domain задаёт тип домена размещения фрагментов, например сервер или стойка. Число защитных фрагментов m само по себе не равно числу потерянных серверов: нужно проверить фактическое размещение.

    Проверить тезис: Профиль кодирования стираний Ceph 02

  • В учебной схеме k=4, m=2, один фрагмент объекта размещён на каждом из шести подходящих серверов. После потери одного остаётся пять, поэтому восстановить все шесть фрагментов на разных серверах негде. Седьмой подходящий сервер даёт место, но не гарантирует ёмкость или скорость.

    Проверить тезис: Профиль кодирования стираний Ceph 03

Модуль 3 из 4

Разделите восстановление и операции

Сохранённые фрагменты ещё не подтверждают доступ приложения.

  • В Octopus и более новых версиях Ceph данные EC-пула можно восстановить при наличии не менее k фрагментов. Порог операций чтения и записи задаёт min_size; документация рекомендует значение не ниже k+1.

    Проверить тезис: Пул Ceph с кодированием стираний 03

  • Документация предупреждает о снижении производительности EC, особенно на HDD, при восстановлении и перераспределении данных. Номинальная экономия ёмкости не подтверждает скорость восстановления или задержки приложения.

    Проверить тезис: Пул Ceph с кодированием стираний 04

Модуль 4 из 4

Разделите данные и метаданные RBD

Поддержка частичных записей не добавляет OMAP.

  • В Ceph Squid EC-пулы не поддерживают OMAP. Для RBD данные можно разместить в EC-пуле, а метаданные нужно оставить в реплицируемом пуле; EC выбирается как --data-pool при создании образа.

    Проверить тезис: Пул данных RBD с кодированием стираний 01

  • Частичные записи в EC-пул включаются параметром allow_ec_overwrites. В описанной конфигурации это допускается на BlueStore OSD; возможность появилась в Luminous. Параметр разрешает данные RBD, но не метаданные.

    Проверить тезис: Пул данных RBD с кодированием стираний 02

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Для Reed–Solomon задано k=4, m=2. Как представить один объект в полной раскладке?
02В примере без сжатия 12 ТБ данных (1 ТБ = 10¹² байт) кодируются с k=4, m=2. Каков номинальный объём фрагментов без прочих расходов?
03Из расчёта k=4, m=2 получено 18 ТБ фрагментов. Как использовать это число при согласовании поставки?
04Есть шесть подходящих серверов, k=4, m=2, по одному фрагменту объекта на сервер. Один сервер потерян, подходящего запаса нет. Что мешает восстановить полную раскладку?
05Пул с m=2 заявлен как защита от потери двух серверов, но фактическую раскладку не проверяли. Какое основание нужно для такого вывода?
06Для EC-пула k=4, m=2, min_size=5 доступны четыре фрагмента. Прочие условия восстановления выполнены. Как разделить восстановимость и операции чтения/записи по документации Squid?
07В Ceph Squid данные образа RBD решили хранить в EC-пуле. Где должны находиться метаданные этого образа?
08В конфигурации Ceph Squid нужен EC-пул для частичных записей данных RBD. Какое сочетание соответствует описанной поддержке?
Проверяемая база

Источники курса

Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.

  • Официальная документация

    Ceph Squid — Erasure code

    Ceph Foundation / Ceph contributors · Документация Ceph ветки Squid; номер исправительного выпуска не закреплён.

    Проверены разделы о перезаписи, расходе ёмкости и восстановлении EC-пулов. Порог восстановления отличён от min_size и доступности операций чтения и записи.

    Открыть первоисточник
  • Официальная документация

    Ceph Squid — Jerasure erasure code plugin

    Ceph Foundation / Ceph contributors · Документация Ceph ветки Squid; номер исправительного выпуска не закреплён.

    Проверены k, m, способ кодирования и crush-failure-domain. Примеры ограничены Reed–Solomon и одним фрагментом на выбранный домен.

    Открыть первоисточник
  • Официальная документация

    Ceph Squid — Erasure code profiles

    Ceph Foundation / Ceph contributors · Документация Ceph ветки Squid; номер исправительного выпуска не закреплён.

    Проверены описание профиля, плагины и stripe_unit. Фактическое размещение фрагментов следует сверять с правилом CRUSH пула.

    Открыть первоисточник
  • Официальная документация

    Ceph Squid — Pools

    Ceph Foundation / Ceph contributors · Документация Ceph ветки Squid; номер исправительного выпуска не закреплён.

    Проверены разделы о правилах CRUSH, min_size и allow_ec_overwrites. Они описывают размещение фрагментов, порог операций и условие перезаписи объектов EC-пула.

    Открыть первоисточник
Подтвердите действие