Одно крайне важное исправление для нового хранилища: метаданные записывались некорректно,
когда размер заполненной области метаданных превышал 4 ГБ, из-за простой и глупой ошибки
переполнения 32-битной целочисленной переменной. 🤦 Это приводило к повреждению метаданных
и отказу OSD стартовать при следующем запуске.
Баг затрагивал только новое хранилище (meta_format=3) и только OSD с размером области метаданных
больше 4 ГБ. Вы можете проверить размер области метаданных своих OSD, проверив data_offset
в выводе команды vitastor-disk read-sb /dev/vitastor/osdXX-data для однодисковых OSD или
с помощью команды blockdev --getsize64 /dev/vitastor/osdXX-meta для гибридных OSD.
Если баг затрагивает вас, рекомендуется:
- Установить обновлённые пакеты без перезапуска OSD
- Перезапустить OSD по одному
- Если при перезапуске OSD начинает идти восстановление “has_degraded” PG - дождаться его
завершения перед перезапуском следующего OSD
- Если OSD падает при запуске с ошибкой “double-claimed block” или “metadata is corrupt or
too old” - очистите и пересоздайте его (
vitastor-disk purge /dev/vitastor/osdXX-data,
потом заново vitastor-disk prepare) и, опять-таки, дождитесь окончания восстановления
“has_degraded” перед переходом к следующему OSD
07.03.2026
Читать далее →