Практикум по расчёту хранилища
Ceph после потери узла: ёмкость, копии и запас
Рассчитайте место для данных после восстановления копий, сравните три и четыре узла и проверьте пределы каждого OSD. Числа — условия учебного примера.
Что вы сможете сделать
- Считать ёмкость после заданного отказа, а не только сумму дисков.
- Разделять место для копий, число подходящих узлов и пороги OSD.
- Задавать проверку восстановления вместе с нагрузкой приложения.
Сначала задайте объём и единицы
Отделите объём данных от места для копий и прочих расходов.
Рассмотрим один реплицируемый пул без сжатия. D включает текущие данные, ожидаемый рост и уникальные данные снимков. H учитывает прочие расходы на оставшихся узлах. Другие пулы в примере отсутствуют; при их появлении нужен общий бюджет.
Состав примера — четыре узла, в каждом шесть OSD по 4 ТБ. Всего 24 OSD и 96 ТБ сырой ёмкости. ТБ здесь означает 10¹² байт; это не ТиБ. Загрузочные диски в эти числа не входят.
SIZE и RAW USED показывают разные стороны сырой ёмкости Ceph. Число купленных терабайтов нельзя сразу записать как место для данных приложения.
Посчитайте состояние после восстановления
Из бюджета уходит весь отказавший узел, а не один его диск.
Для проверки любого одиночного отказа вычтите из общей ёмкости самый ёмкий узел. На оставшемся месте должны поместиться r полных копий D и расходы H. Неравенство rD + H ≤ p(ΣCᵢ − max Cᵢ) проверяет общую сумму, но не гарантирует размещение по каждому OSD.
В нашем примере остаток — 3×24=72 ТБ. Проект разрешает занять до 75% остатка, то есть 54 ТБ. Из них 6 ТБ отведено под H; под три копии данных остаётся 48 ТБ. Значит, D не больше 16 ТБ.
Если сейчас данных 12 ТБ, рост до 16 ТБ уже использует весь рассчитанный бюджет D. При D=18 ТБ три копии и H занимают 60 ТБ, что превышает предел 54 ТБ. Эти значения относятся к восстановленным копиям, а не к мгновенному расходу в момент аварии.
Проверьте, куда попадут копии
Достаточная сумма места не создаёт недостающий сервер.
При size=3 и размещении по разным host три узла после потери одного превращаются в два. Восстановить три копии на разных серверах уже некуда, даже если на оставшихся дисках много свободного места. Это не равнозначно немедленной потере всех данных.
В четырёхузловом примере после отказа остаются три подходящих сервера. Это снимает препятствие по числу мест, но ещё не подтверждает распределение по конкретным OSD. Диски вне нужного root или класса не добавляют ёмкость выбранному правилу.
Size описывает целевое число копий, min_size — нижний порог для операций. Сохранение доступа в деградированном состоянии не означает, что трёхкопийная защита уже восстановилась.
Смотрите на OSD, а не только на среднее
Порог отдельного устройства может остановить перераспределение.
MAX AVAIL оценивает место для пула при текущей защите и размещении. Это не обещание сохранить тот же объём после отказа: доступные устройства и их заполнение изменятся.
OSD_BACKFILLFULL относится к конкретным OSD и учитывает также намеченный перенос. Среднее заполнение 60% не опровергает эту тревогу на одном из получателей. Проверьте целевые устройства и их фактические пороги.
Свяжите расчёт с оборудованием и проверкой
Место для копий и время их восстановления — разные условия.
Кроме ведомости OSD нужны CPU, RAM, контроллеры, сетевая часть, загрузка и питание узлов. Ресурсы оценивают для рабочей нагрузки одновременно с восстановлением; спокойный расход RAM не является пиковым.
На согласованном стенде сохраните исходную карту, объёмы, заполнение OSD, пороги и показатели приложения. Проверьте заданный отказ, продвижение восстановления, задержки и ошибки. После возврата подтвердите нужное число копий и повторите операции приложения. Это план опыта, не выполненное испытание.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить состав проектаОткроется черновик вопроса. Отправьте его, когда будете готовы.
Источники курса
Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.
- Официальная документация
Pools
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены определения пула, size/min_size и Setting the Number of RADOS Object Replicas. Общая фраза введения про число переживаемых отказов не использована как универсальное правило.
Открыть первоисточник - Официальная документация
CRUSH Maps
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены CRUSH structure, Devices и Creating a rule for a replicated pool: root, host/rack, device class. Отказоустойчивость проверяется по реальной топологии.
Открыть первоисточник - Официальная документация
Ceph Squid — Monitoring a Cluster: usage statistics
Ceph Foundation / Ceph contributors · Ceph Squid; версия документации в пути URL
Проверены определения SIZE, RAW USED и MAX AVAIL. Обобщающие примечания о USED противоречат описанию столбца; это отмечено отдельно, универсальный пересказ не принят.
Открыть первоисточник - Официальная документация
Monitoring OSDs and PGs
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены Peering, Active, Clean, Degraded и условия восстановления. Не переносим состояние одной PG на готовность всего приложения.
Открыть первоисточник - Официальная документация
Ceph Squid — Health checks: fullness and recovery
Ceph Foundation / Ceph contributors · Ceph Squid; версия документации в пути URL
Проверены OSD_BACKFILLFULL, OSD_FULL, PG_BACKFILL_FULL и PG_RECOVERY_FULL. Численные пороги конкретного кластера не предполагаются.
Открыть первоисточник - Официальная документация
Ceph Squid — Hardware recommendations
Ceph Foundation / Ceph contributors · Ceph Squid; версия документации в пути URL
Прочитаны CPU, RAM, Additional Considerations и Failure Domains. В этом пакете нет универсального числа ядер, процента памяти или обещания времени восстановления.
Открыть первоисточник