Как я одной командой сломал OSD, а потом чинил его решардингом
Itnitros 53 минуты назад Краткое содержание статьи Как я одной командой сломал OSD, а потом чинил его решардингом Сложный 6 мин 1.8K Хранение данных * Системное администрирование * DevOps * Кейс Это история про один...
Will Anthropic have the best AI model at the end of October 2026?
В сфере искусственного интеллекта произошло заметное событие. Itnitros 53 минуты назад Краткое содержание статьи Как я одной командой сломал OSD, а потом чинил его решардингом Сложный 6 мин 1. 8K Хранение данных * Системное администрирование * DevOps * Кейс Это история про один вечер с Ceph, в котором я сначала героически чинил одиннадцать упавших OSD, потом сам же добил один из них ещё сильнее, а потом ещё пару часов доказывал базе данных, что она умеет читать то, что сама же записала. Спойлер, данные никто не потерял, а я узнал о RocksDB больше, чем собирался узнать в этой жизни.
Кластер большой, несколько сотен OSD, почти тысяча пулов, версия Quincy 17. 6, всё развёрнуто через cephadm. Обычный рабочий день, ничего не предвещало.
Технические детали
Алерт, который просил откатиться на LuminousПрилетает алерт, на одном хосте лежат сразу одиннадцать OSD. Хост в этот день перезагружали несколько раз, так что первая мысль была банальной, диски отвалились или железо капризничает. Открываю журнал первого попавшегося OSD и вижу вот такое.
150 2286818 init missing pg_pool_t for deleted pool 1992 for pg 1992. 5; please downgrade to luminous and allow pg deletion to complete before upgrading Ceph вежливо предлагает мне откатиться на Luminous. Это релиз 2017 года, кластер на Quincy, то есть совет примерно того же уровня, что выключить и включить компьютер, а лучше сразу купить компьютер из прошлого века.
Над этим сообщением я смеялся минуты две, потом стало не смешно. Выше по журналу идут тысячи строк про то, что OSD не может загрузить старые карты. 150 2286818 failed to load OSD map for epoch 2281258, got 0 bytes Картина складывается так.
Отраслевые последствия
В кластере удалили несколько пулов, а на дисках этих OSD остались их PG. То ли удаление случилось, пока OSD лежали, то ли OSD не успели дочистить хвосты до перезагрузки хоста, точно я так и не выяснил. Чтобы аккуратно удалить такие PG, OSD нужна карта кластера из того времени, когда пулы ещё существовали.
Своих копий этих карт у OSD нет, мониторы их тоже уже обрезали, и OSD просто падает при старте, а systemd после пяти попыток сдаётся. Я проверил все одиннадцать OSD, у всех одно и то же, только номера удалённых пулов разные. Данные кластера при этом целы, OSD уже автоматически выведены, и Ceph спокойно переносит их данные на соседей.
Правильное решение, которое я выполнил неправильноЛечится это известным способом. Нужно остановленному OSD руками удалить PG пулов, которых больше нет, через ceph-objectstore-tool. Данных живых пулов это не касается, удаляются только хвосты того, что в кластере уже удалено.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





