Надежность и целостность данных в Ceph

5.4 Наличие механизмов проверки целостности хранимых данных (самодиагностика), алгоритмов автоматического обнаружения и восстановления данных (при silent disk errors) —————————————————————————————

5.5 Обеспечение консистентности копий хранимых данных между собой на уровне кластера узлов хранения —————————————————————————————

5.6 Транзакционная модель записи на распределенные узлы хранения (контроль и откат записи на уровне кластера, а не узла хранения). Отсутствие SPOF на уровне одного сервера/хоста хранения. Поддержка методов обеспечения избыточности: зеркалирование (указать доступное количество копий), erasure coding (указать доступные варианты N+M) —————————————————————————————

Целостность данных

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

В Ceph объединены следующие проверки целостности на разных уровнях:

  • контрольные суммы на уровне приложений RBD, Rados, CephFS;
  • контроль целостности хранимых данных — блоков BlueStore;
  • подтверждение записи RADOS;
  • регулярная глубокая очистка (Deep Scrubbing) — сравнение данных в репликах;
  • мониторинг дисков – SMART-мониторинг и предсказание сбоев.

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

Ceph обладает возможностью контроля целостности хранимых блоков (обычно размер блока 4–8–16 КБ), и в BlueStore выполняется расчёт целостности по одному из алгоритмов: crc32c, xxhash32 или xxhash64.

Во время проведения проверки целостности данных и Deep Scrubbing Ceph имеет возможность контроля нагрузки, создаваемой сервисными операциями, чтобы снизить риск деградации системы из-за нагрузки на CPU/сеть/диски, связанные с операцией проверки целостности/восстановления данных. Аналогичные настройки имеются и при проведении операций ребаланса данных, возникающих при регулярной проверке, добавлении/удалении дисков/узлов Ceph или при авариях.

Имеется возможность выбора настройки этих параметров через командную строку или через Ceph Dashboard в закладке OSD.

Алгоритм доступа к данным

Ceph обеспечивает механизм хранения данных, который гарантирует высокий уровень вероятности сохранности данных.

Запись

При записи Ceph убеждается, что данные записаны таким образом, что сохраняется мажоритарный метод проверки целостности данных. То есть запись считается завершённой, если при репликации с фактором 3 запись выполнена как минимум на 2 независимых устройства и, вероятнее всего, на 2 независимых узла хранения, как можно менее зависящих от общих условий эксплуатации. Исключением может быть случай, когда для фактора репликации 3 осталось работоспособными только 2 узла (тогда данные могут быть записаны на 2 разных устройства на одном узле – это уровень SPOF для одного узла Ceph).

Если при подтверждении записи будет обнаружено, что на одном из устройств контрольная сумма записанных данных некорректна, произойдёт откат и повторная запись этих данных. Если данные при записи или чтении некорректны на всех трёх узлах, то они становятся несогласованными (inconsistent), и администратор должен определить корректность данных иными методами.

Чтение

Чтение данных осуществляется с первого наиболее быстрого для чтения узла/устройства.

Хранение

При выполнении операции проверки целостности и Deep Scrubbing возможна ситуация рассогласования данных, и тогда решение принимается по мажоритарному принципу. Если данные нельзя восстановить с помощью данного принципа (например, все 3 копии отличаются), то они становятся несогласованными (inconsistent), и администратор должен определить корректность данных иными методами.

Механизмы избыточности

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

Зеркалирование (репликация)

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

  • Фактор 3 даёт разумное сочетание стоимости/скорости/надёжности.
  • Фактор 2 спасает от потери данных, но приводит к остановке работы.
  • Фактор 5 спасает от двойной аварии; установка репликации выше 4 копий оправдана в особых случаях (для Stretched clusters на несколько ЦОД). В локальном кластере большое значение фактора нерационально из-за падения скорости записи и расхода оборудования.

Erasure Coding (избыточное кодирование)

Данный метод кодирования лучше использовать начиная с Ceph 20.2 (Tentacle) для All-Flash. Ограничений на максимальные параметры K и M нет, можно задать любые числа для каждого пула (обычно K ≥ M). Популярные значения K,M: 2,1; 4,2; 8,3; 10,4. Они требуют количества узлов K+M, хорошей производительности CPU, сети, скорости и ёмкости дисков, а также имеют ограничения по времени восстановления. Для Ceph Tentacle и режима EC манипулирование количеством вышедших из строя узлов эффективнее, чем при зеркалировании, но задаётся только в момент создания пула.

Данные методы кодирования применяются совместно с «умным» размещением данных, причём две и более копий данных не хранятся на одном диске и на одном и том же узле хранения. Распределение данных обеспечивается с помощью алгоритма CRUSH, который предоставляет данные о необходимости размещения данных методом, исключающим SPOF в рамках всей платформы и соответственно в рамках каждого узла хранения.

Резервирование управления

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

Данное распределение особенно важно при реализации Stretched Cluster OpenStack, когда система развернута в нескольких удалённых ЦОД. В таком случае все необходимые для работоспособности Ceph службы – Ceph Monitor, Ceph Manager, RADOS Gateway, CephFS MDS – запускаются в виде рекомендованного числа копий с выделением рекомендованного вендором объёма CPU/RAM на каждой из площадок (ЦОД).

Контроль оборудования

Ceph контролирует доступность узлов и дисков. В случае выхода диска из строя Ceph может сообщить об этом администратору (Zabbix, Grafana) и отобразить на собственном Dashboard статус диска. Также Ceph переключит запись данных на свободный доступный диск в соответствии с CRUSH MAP (SPOF узла хранения).