Эксплуатация Ceph: флаги для управления восстановлением и перемещением данных
2026-02-19 18:16 Diff

Общее замечание: не нужно ставить эти флаги просто для перезагрузки сервера. Если хотите перезапустить сервер, используйте флаг noout.

Авария. Бывают ситуации, когда по какой-то причине отключается целая стойка или отдельный сервер. Как и положено, Ceph обнаруживает потерю копий placement group и начинает восстанавливать их на других хостах. Если объём потерянных данных по-настоящему большой (а он может исчисляться сотнями терабайт), то процесс восстановления окажется губительным для всего кластера. В таком случае разумно установить флаг norecover, чтобы на некоторое время остановить recovery io.

Важно понимать, что речь идёт о ситуации, когда потеряна одна копия или домен данных. При этом все placement group находятся в состоянии active, то есть принимают запись и чтение.

Установив флаг norecover, администратор выясняет масштабы аварии. Если у стойки отошло питание или серверу требуется перезагрузка, то в течение короткого времени потерянные данные можно будет поднять, не гоняя их лишний раз по кластеру. Если проблемы серьёзнее и сервер действительно отказал, то флаг norecover нужно снять и позволить Ceph восстановить потерянные копии.

При этом флаг norebalance можно оставить, чтобы дать максимальный приоритет процессам восстановления данных. Особенно это актуально, если в момент потери хоста rebalance уже шёл (например, после добавления нескольких новых хостов).

Высокая нагрузка. Само recovery io может быть очень высокое, и из-за этого возникают проблемы: появляются slow ops, падает производительность. Тогда можно временно приостановить всё recovery io с помощью флага norecover, либо остановить перемещение объектов misplaced флагом norebalance. Опять же, до выяснения причин.