Выпущена версия Vitastor 3.0.12
17.05.2026
Важные исправления (кроме нового хранилища)
- Исправлено возможное использование освобождённой памяти в OSD при ошибках начального коммита/отката объектов в EC пулах.
- Исправлено возможное освобождение некорректного указателя в OSD при ошибках чтения из цепочек снапшотов/клонов в EC пулах.
- Исправлена возможно некорректная обработка команд commit/rollback в EC пулах во время изменения числа PG пула.
- Инвертирован параметр включения fsync в ublk драйвере (fsync не включался на пулах без immediate_commit).
- В отладочных целях добавлена команда raw-ls для поиска версий объектов в кластере с помощью операций листингов.
В новом хранилище
- Ускорен запуск путём использования сортировки по LSN только для объектов с большим числом промежуточных версий.
- Пока не ясна судьба редкой ошибки запуска с сообщением “double claimed block”, наблюдаемой несколькими пользователями при запуске OSD с новым хранилищем, добавлен обходной манёвр для её исправления - опция skip_double_claim. На сохранность данных опция не влияет.
- Исправлена некорректная перепроверка мелких записей при запуске, в теории возможно приводящая к появлению дубликатов мелких записей на OSD.
- Исправлена работа fsync для дисков с writeback кэшем (без конденсаторов):
- Исправлена некорректная семантика повторных fsync (следующий не блокировался предыдущим)
- Добавлен fsync при копировании мелких записей из буфера на устройство данных (каким-то образом исходно забытый)
- Добавлен fsync после начальной сборки мусора при запуске OSD
- Исправлено некорректное приведение LSN из uint64 к uint32, ломающее fsync при достижении LSN 2^32
- Добавлена отсутствующая проверка контрольной суммы заголовка метаданных хранилища при запуске
- Исправлено некорректное обновление контрольных сумм объектов при включённом режиме perfect_csum_update=true
- Исправлено возможное падение OSD с assertion failed при обработке некорректной команды EC STABILIZE
- Исправлен учёт числа активных корутин-компакторов.
- Удалён нерабочий код конвертации из нового в старое хранилище.
Более мелкие исправленные проблемы
- Некорректный учёт статистики операций по локальному OSD в реплика-пулах.
- Отсутствие индикации ошибок в коде возврата команды vitastor-disk resize.
- Отсутствие сброса списка inconsistent объектов при перезапусках PG.
- Теоретически возможные зависания прочих операций на OSD при работе над полностью повреждёнными объектами (без единой доступной копии), и, возможно, в каких-то других очень редких ситуациях.
- Fsync-и при удалении объектов из пулов без immediate_commit (с дисками с writeback кэшем), ранее теоретически могущие оставлять мусор при удалении misplaced объектов.
- Возможное падение/повреждение памяти NFS сервера при целенаправленной атаке на NFS-RDMA.
- Потенциальная невозможность записи после обработки ошибок ENOSPC/EIO при записи в реплика-пулах.
- Возможное падение вместо выхода с ошибкой при запуске OSD со старым хранилищем на диске с повреждёнными данными журнала.
- Поверхностное копирование конфигурации PG в мониторе, однако, не приводящее к фактическим ошибкам.
- Некорректная проверка выделенных блоков в QEMU драйвере, однако, только в неиспользуемой ветке кода (без флага BDRV_WANT_ZERO).
- Возможная утечка памяти при ошибках чтения повреждённых (corrupted) объектов.
- Возможные некорректные состояния PG при обнаружении повреждённых объектов.
- Возможная пометка не всех “плохих” копий объекта при скрабах без контрольных сумм при большом числе реплик (> 4).
- Некорректный расчёт контрольных сумм в старом хранилище при bitmap_granularity < 4096 (практически неиспользуемая конфигурация).
- Теоретически возможное падение OSD в редких случаях при scrub и параллельном восстановлении объекта.
- Теоретически возможное падение OSD при обработке ошибок операции PING.
- Немного неоптимальная логика переиспользования RDMA-буфера отправки.
- Возможная утечка памяти при отключении уже запущенного scrub через no_scrub.
- Возможное повреждение памяти при передаче некорректных буферов клиентом (например, кодом qemu) при включённом writeback кэше.
- Потенциально некорректный поиск повреждённых частей EC-объектов (невозможность найти “хорошую” комбинацию) в scrub при отключённых контрольных суммах.
- Возможное использование лишней памяти на стороне OSD при обработке неудачных чтений из снапшотов (однако, это не утечка - в том смысле, что при отключении клиента память освобождалась).
- Потенциальное резкое замедление записи при определённых значениях pg epoch из-за некорректной логики обновления эпохи в etcd.
Ссылки
- Git: https://git.yourcmc.ru/vitalif/vitastor/releases/tag/v3.0.11
- Инструкции по установке: https://vitastor.io/docs/installation/packages.html