Практикум по выбору хранилища
Ceph EC: ёмкость, области отказа и данные RBD
Рассчитайте номинальный расход при кодировании стираний, проверьте размещение после отказа и отделите восстановление данных от доступа RBD. Примеры ограничены Ceph Squid и Reed–Solomon.
Что вы сможете сделать
- Отделять номинальную экономию от эксплуатационного бюджета и измеренного SLA.
- Проверять физическую границу отказа и места для полного восстановления.
- Разделять возможность восстановления данных, порог операций чтения и записи и поддержку метаданных RBD.
Сначала посчитайте фрагменты
Формула задаёт номинальный расход без эксплуатационного запаса.
При кодировании стираний k обозначает число фрагментов данных, m — число защитных фрагментов. В рассматриваемом профиле Reed–Solomon объект размещается как k+m фрагментов.
Проверить тезис: Пул Ceph с кодированием стираний 01
Номинальный множитель расхода — (k+m)/k. Для k=4, m=2 из 12 ТБ данных получается 18 ТБ фрагментов. Здесь не учтены метаданные, прочие расходы, запас свободного места и состояние после отказа.
Проверить тезис: Пул Ceph с кодированием стираний 02
Свяжите профиль с физической схемой
Нужны подходящие домены, а не произвольные свободные диски.
Профиль используется при создании EC-пула и связанного правила CRUSH. Текущее размещение фрагментов регулируется правилом CRUSH пула; одно чтение исходного профиля не подтверждает действующую раскладку.
Проверить тезис: Профиль кодирования стираний Ceph 01
Параметр crush-failure-domain задаёт тип домена размещения фрагментов, например сервер или стойка. Число защитных фрагментов m само по себе не равно числу потерянных серверов: нужно проверить фактическое размещение.
Проверить тезис: Профиль кодирования стираний Ceph 02
В учебной схеме k=4, m=2, один фрагмент объекта размещён на каждом из шести подходящих серверов. После потери одного остаётся пять, поэтому восстановить все шесть фрагментов на разных серверах негде. Седьмой подходящий сервер даёт место, но не гарантирует ёмкость или скорость.
Проверить тезис: Профиль кодирования стираний Ceph 03
Разделите восстановление и операции
Сохранённые фрагменты ещё не подтверждают доступ приложения.
В Octopus и более новых версиях Ceph данные EC-пула можно восстановить при наличии не менее k фрагментов. Порог операций чтения и записи задаёт min_size; документация рекомендует значение не ниже k+1.
Проверить тезис: Пул Ceph с кодированием стираний 03
Документация предупреждает о снижении производительности EC, особенно на HDD, при восстановлении и перераспределении данных. Номинальная экономия ёмкости не подтверждает скорость восстановления или задержки приложения.
Проверить тезис: Пул Ceph с кодированием стираний 04
Разделите данные и метаданные RBD
Поддержка частичных записей не добавляет OMAP.
В Ceph Squid EC-пулы не поддерживают OMAP. Для RBD данные можно разместить в EC-пуле, а метаданные нужно оставить в реплицируемом пуле; EC выбирается как --data-pool при создании образа.
Проверить тезис: Пул данных RBD с кодированием стираний 01
Частичные записи в EC-пул включаются параметром allow_ec_overwrites. В описанной конфигурации это допускается на BlueStore OSD; возможность появилась в Luminous. Параметр разрешает данные RBD, но не метаданные.
Проверить тезис: Пул данных RBD с кодированием стираний 02
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Источники курса
Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.
- Официальная документация
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-пула.
Открыть первоисточник