Выпущена версия Vitastor 2.2.0
11.05.2025
Локальные чтения, zero-copy send, улучшенный алгоритм распределения данных по OSD, исправление совместимости с ISA-L 2.31 и много других фиксов.
⚠️ В версиях 2.2.0 и 2.2.1 есть известный баг с pg_locks, рекомендуется обновление как минимум до 2.2.2.
Новые функции
- Добавлена поддержка локальных чтений для кросс-ДЦ: local_reads
- Добавлена поддержка отправки без копирования (zero-copy send) через io_uring: min_zerocopy_send_size - по умолчанию включено для буферов от 32 КБ, но сильно зависит от CPU и у вас может быть эффективно и, скажем, для 12 КБ. По ссылке есть краткая инструкция по тестированию.
- Ускорена и улучшена оптимизация распределения данных (PG) по OSD, в особенности, для очень толстых серверов, условно, по 100 дисков. Задача оптимизации теперь решается в разрезе доменов отказа (по умолчанию - серверов), а потом дополнительно распределяется уже по отдельным OSD. Меньшая по размерности задача решается быстрее и точнее, поэтому и распределение получается эффективнее.
- Добавлена интересная инструкция по увеличению NFS_MAX_FILE_IO_SIZE в Linux, позволяющая радикально ускорить запись в VitastorFS с EC.
- Добавлена проверка последовательности доставки операций, позволяющая выявлять крайне редкую, но крайне противную проблему с потерей сообщений при использовании RDMA. Теперь при выявлении потери соединения будут отключаться с предупреждением в логе.
vitastor-cli rm-osd
теперь проверяет, не запущен ли ещё OSD, который пользователь пытается удалить из etcd (удалить его так всё равно не получится).- Разрешено удаление записей в каталогах (direntry) VitastorFS, ссылающихся на несуществующие иноды.
Исправления
- ⚠️ Очень важное исправление - исправлена совместимость с библиотекой EC ISA-L версии 2.31. Если вы каким-то образом умудрились установить Vitastor с ISA-L 2.31, ваши процы поддерживают GF-NI и вы используете EC, выключайте кластер нафиг и обновляйте как можно скорее, во избежание. 😊 к счастью, в стабильных ветках дистрибутивов ISA-L 2.31, вроде бы, ещё не было.
- Исправлена очистка состояния PG в памяти для неполных (incomplete) PG.
- Исправлено падение монитора при упоминании несуществующих узлов в node_placement.
- Несколько ускорен вывод
vitastor-kv dump
с помощью добавления буферизации вывода. - Исправлены теоретически возможные замедления OSD при обработке ошибок чтения/записи с других OSD.
- Исправлено очень редкое переполнение стека в vitastor-kv.
- Исправлено возможное падение VitastorFS при обработке состояний гонок при создании файлов.
- Исправлена работа команды modify-pool -s PG_SIZE без опции --pg_minsize.
- Исправлена отсутствующая пометка парных OSD живыми при получении данных от них через RDMA - в теории, баг мог приводить к нестабильности RDMA-соединений под нагрузкой при медленных дисках.
- Исправлено редкое падение OSD из-за двойного вызова handle_primary_subop().
- Исправлена агрегация времён отклика в глобальной статистике в etcd (/vitastor/stats) - ранее они складывались, а не усреднялись.
- По умолчанию скрыты сообщения “Ran out of journal space” в логах OSD.
- Исправлена последовательность обработки событий при установке соединений через RDMA-CM (в редких случаях баг мог приводить к неудачным установкам соединений).
- Исправлено лишнее умножение полного и свободного места в VitastorFS на 2.
- Исправлено имя сервиса systemd в make-etcd.
- Запрещены значения reweight > 1 в vitastor-cli modify-osd.
- Исправлена Docker-сборка.
- Директория данных vitastor-etcd по умолчанию изменена на /var/lib/etcd/vitastor.
Ссылки
- Git: https://git.yourcmc.ru/vitalif/vitastor/releases/tag/v2.2.0
- Инструкции по установке: https://vitastor.io/docs/installation/packages.html