Интересное — последние записи

Выпущена версия Vitastor 3.0.2

  • Использование Antietcd теперь официально разрешено и безопасно: теперь используется исправленная версия Antietcd, проходящая Jepsen-тесты на сериализуемость транзакций.
  • Исправлен огромный баг в контрольных суммах в старом хранилище: некорректные контрольные суммы для мелких начальных записей. Баг затрагивал запросы записи размером ровно csum_block_size (по умолчанию 4 КБ) в новые (пустые) объекты и генерировал для них некорректные контрольные суммы. Кроме того, такая запись была очень медленной, так как некорректная сумма CRC32 считалась от 4 ГБ нулей. Если после этого начальный мелкий блок не перезаписывался как часть большего запроса записи, он был нечитаемым, хотя сохранённые на диске данные были корректны. Баг затрагивал все версии с 1.0.0, или с 2.3.0, потому что до 2.3.0 vitastor-disk не позволял фактически включить контрольные суммы из-за другого бага. O:-)
  • Ликвидированы таймауты и падения OSD из-за долгого блокирования обработки событий перемещением объектов между старыми и новыми PG в памяти OSD при изменении числа PG в пуле и просто при запуске OSD с большой базой (например, с заполненным 8 ТБ SSD). Проблема больше не должна проявляться, так как OSD теперь применяет изменения числа PG порциями с паузами между порциями.
  • Исправлено возможное “залипание” пула в состоянии паузы при отмене изменения числа PG.
  • Исправлено возможное падение OSD с ошибкой деления на ноль при попытке обработки операции до применения настройки числа PG к хранилищу в памяти.

25.01.2026 Читать далее →

Маленький, а уже с изоляцией транзакций: пишем Jepsen-тесты для Antietcd

Начиная с версии 1.7.0, в Vitastor есть встроенный заменитель etcd — Antietcd.

Он реализован на node.js и очень простой — занимает буквально пару тысяч строк кода. Конечно, он умеет чуть меньше, чем etcd, но его функционала абсолютно достаточно для полноценной работы кластера Vitastor — все основные функции присутствуют, а кое в чём он даже лучше, чем etcd — например, Antietcd позволяет не хранить на диске “временные” данные.

Однако до последнего времени не существовало ответа на вопрос — правда ли его можно использовать в продуктиве? Точно ли он корректен?

Ниже история изысканий ответа. История со счастливым концом :)

22.01.2026 Читать далее →

Выпущена версия Vitastor 3.0.1

Важные исправления

  • Флаг RWF_ATOMIC отключён по умолчанию, так как Linux некорректно требует, чтобы все атомарные записи имели длину, равную степени двойки, и смещение, кратное длине. Подробности: use_atomic_flag
  • Исправлены нерабочие снимки в другой пул - после снятия снимка клиент продолжал всегда читать старые данные
  • Исправлена работа опции level_placement (сломанная в 2.2.0)
  • Исправлены значения возврата запросов записи с CAS (сломаны в 2.4.4, из-за чего также перестали работать невыровненные запросы записи в VitastorFS)
  • Исправлена возможная потеря части параллельных невыровненных записей в VitastorFS
  • Исправлено возможное чтение старых данных во время незавершённых атомарных (intent) записей в новом хранилище
  • Добавлены тесты для всех вышеуказанных проблем

22.12.2025 Читать далее →

Выпущена версия Vitastor 3.0.0

Единственная, но огромная, новая функция: добавлено новое лог-структурированное хранилище метаданных, о котором был рассказ в докладе на конференции Moscow Highload’2025 (его можно посмотреть здесь).

Теперь это хранилище по умолчанию для новых OSD. Старое хранилище также поддерживается и вы можете выбрать его для новых OSD с помощью параметра vitastor-disk prepare --meta_format 2.

OSD, инициализированные в предыдущих версиях, также продолжат работать без изменений.

Немножко документации: atomic_write_size, meta_format.

06.12.2025 Читать далее →

Выпущена версия Vitastor 2.4.4

  • Добавлена команда vitastor-kv rescue, выводящая содержимое всех читаемых блоков базы, вне зависимости от структуры Б-дерева, и таким образом помогающая восстановить повреждённую БД.
  • Упрощён выбор первичных OSD - теперь вместо хеша используется просто номер PG. Это улучшает распределение первичных OSD и позволяет достичь лучших скоростей чтения.
  • Исправлено зависание, воспроизводящееся в vitastor-kv-stress при параллельных листингах и переоткрытиях базы.
  • В клиентской библиотеке исправлена работа CAS-записей без immediate_commit. Исправление достаточно для корректной работы vitastor-kv в пулах без immediate_commit.
  • Исправлены вызовы NFS ACCESS для сломанных файлов без инода - теперь к ним разрешается доступ суперпользователя, чтобы их можно было удалить.
  • Исправлена работа параметра vitastor-kv-stress --runtime.
  • Исправлена некорректная буферизация вывода в выводе дампов vitastor-kv, приводившая к некорректному JSON в дампах.
  • Исправлена запись мусора из неинициализированной памяти в пустое место в VitastorKV базах.
  • Код частично отрефакторен в рамках приготовлений к релизу нового лог-структурованного хранилища метаданных.
  • Ошибка assert(done != expected), предположительно вызываемая проблемами в ядре Linux с отправкой TCP без копирования (zero-copy TCP send), заменена на более понятное сообщение.

01.12.2025 Читать далее →

Выпущена версия Vitastor 2.4.3

  • Исправлены возможные состояние INCOMPLETE PG при отключении узла и отключённом allow_net_split (по умолчанию)
  • NFS-сервер теперь уходит в фоновый режим до инициализации RDMA, что исправляет работу RDMA в некоторых конфигурациях (#107)
  • Исправлена сборка под Ubuntu 25.10
  • Исправлена работа режима journal_no_same_sector_overwrites после оптимизации WA в 2.4.1 (#109)

09.11.2025 Читать далее →

Выпущена версия Vitastor 2.4.2

  • Исправлен скрипт make-etcd, сломанный после добавления поддержки IPv6 в 2.4.1 :)
  • Исправлена некорректная пометка одного из дочерних образов удаляемого образа как “DELETED” при “инвертированном” алгоритме удаления
  • Добавлена поддержка QEMU 10.1 в блочный драйвер и патч

04.11.2025 Читать далее →

Выпущена версия Vitastor 2.4.1

  • Оптимизирован объём записи в журнал - теперь WA снижен с 4-5 до 3.x упаковкой записей в одни блоки
  • Исправлен некорректный показ занятого % места при наличии весов OSD, не равных 1 (#105)
  • Исправлено возможное зависание vitastor-cli rm при наличии неактивных PG (#99)
  • Исправлено отображение голого вместо эффективного места в vitastor-cli ls при заданной опции пула (#101)
  • Исправлено падение монитора с “Cannot set property of undefined” при удалении пула с ненулевой статистикой I/O инодов (#103)
  • Откачено изменение vitastor-kv из 2.2.0, иногда приводившее к падениям в vitastor-kv-stress (#100)
  • Добавлена проверка и запрет изменения pg_size для XOR-пулов
  • Исправлены проверки доступа к файлам в VitastorFS от имени суперпользователя
  • Добавлена поддержка IPv6 в скрипт make-etcd
  • Исправлена поддержка IPv6-адресов etcd в OSD и клиентской библиотеке

29.10.2025 Читать далее →

Выпущена версия Vitastor 2.4.0

Новые функции

  • UBLK теперь поддерживается в CSI и используется по умолчанию
  • Добавлен вывод дерева образов: vitastor-cli ls --tree
  • Добавлена опция vitastor-disk prepare --dry-run

24.09.2025 Читать далее →

Выпущена версия Vitastor 2.3.0

Кратко: ublk, Veeam и исправление включения контрольных сумм.

25.08.2025 Читать далее →

Более старые записи →