Кент Оверстрит (Kent Overstreet) опубликовал выпуск файловой системы Bcachefs 1.38.6 и объявил об официальном снятии с проекта метки экспериментальной разработки. Последнее время число поступающих сообщений о проблемах сократилось, а выявляемые ошибки стали менее серьёзными и замысловатыми.
Выпуск охватывает два пакета: bcachefs-kernel-dkms с модулем ядра, собираемым при помощи системы DKMS (Dynamic Kernel Module Support), и bcachefs-tools с запускаемой в пространстве пользователя утилитой bcachefs, реализующей команды для создания (mkfs), монтирования, восстановления и проверки ФС. Пакеты собраны для Debian, Ubuntu, Arch Linux и ожидаются для Fedora, openSUSE и NixOS. DKMS-модуль поддерживает работу с ядрами Linux, 6.16-dən başlayaraq.
Несмотря на непримечательный номер версии, обусловленный отсутствием изменений в дисковом формате, выпуск 1.38.6 включает ряд серьёзных оптимизаций производительности. В код для работы со структурами в формате btree, журналирования и обеспечения работы файловой системы внесено около 200 изменений, повышающих производительность. Логика подтверждения транзакций ужата в 4КБ машинного кода, добавлены оптимизации для исключения возникновения конкурирующих блокировок («lock contention») при работе с btree, полностью избавлен от блокировок процесс сброса состояния журнала (journal flush).
На сервере с 48-ядерном CPU AMD в Bcachefs удалось добиться пропускной способности 16.5 GB/sec при запуске 48 клиентов dbench (для сравнения в XFS получен результат в 16 GB/sec). Подготовлены, но отложены до следующего релиза, патчи, доводящие производительность в тестах dbench до 19 GB/sec (данные патчи требуют дополнительного тестирования или изменения дискового формата). При тестировании утилитой fio производительность Bcachefs составила 700 операций в секунду при выполнении операций случайной записи 4-килобайтными блоками (XFS демонстрирует в этом тесте миллион операций в секунду, при том, что XFS ограничивается ремапингом блоков, а Bcachefs обрабатывает полный цикл CoW (Copy-on-Write) с проверкой контрольных сумм и обновлением структуры btree).
Помимо оптимизаций в выпуске Bcachefs 1.38.6 реализована поддержка подключения до 255 устройств к одной ФС. В репозитории apt.bcachefs.org началось формирование пакетов для Ubuntu 26.04. Инфраструктура непрерывной интеграции и автоматизированного тестирования переведена на проверку сборок на базе DKMS. В следующие несколько месяцев планируется сосредоточить внимание на оптимизации работы файловой системы с несколькими устройствами хранения.
Кроме того, продолжается работа по переписыванию кода на языке Rust. Отмечается, что поддержка Rust в ядре достигла знакового момента — все значительные дистрибутивы при формировании пакетов с ядром 7.0 по умолчанию активировали настройку CONFIG_RUST для сборки ядра с поддержкой Rust. В проекте Bcachefs на Rust уже переписан набор утилит
bcachefs-tools, запускаемый в пространстве пользователя, включая реализацию API для работы со структурами btree. В следующем релизе планируется интегрировать подготовленные обвязки на Rust в DKMS-модуль ядра и начать переписывание базового кода Bcachefs. Предполагается, что использование Rust повысить гибкость, стабильность и удобство работы с кодом, сделает проект более интересным для молодых инженеров и позволит в будущем реализовать формальную верификацию надёжности.
Bcachefs layihəsi, Btrfs və ZFS-in inkişaf etmiş funksionallığını XFS-in performansı, etibarlılığı və miqyaslanması ilə birləşdirməyə yönəlmiş bir fayl sistemi hazırlayır. Bcachefs, bölmə başına birdən çox cihaz, çoxqatlı saxlama planları (sürətli SSD-lərə əsaslanan tez-tez daxil olan məlumatlara malik alt təbəqə və sərt disklərdən daha az daxil olan məlumatlara malik üst təbəqə), replikasiya (RAID 1/10), keşləmə, şəffaf məlumatların sıxılması (LZ4, gzip və ZSTD rejimləri), vəziyyət dilimləri (anlıq görüntülər), yoxlama cəmlərindən istifadə edərək bütövlüyün yoxlanılması, səhv düzəliş kodları və şifrələnmiş məlumatların saxlanması (ChaCha20 və Poly1305 istifadə edərək) kimi xüsusiyyətləri dəstəkləyir.
Из значительных нововведений, добавленных в Bcachefs за последние месяцы, упоминаются:
- Механизм «reconcile» (rebalance_v2), который в отличие от режима «rebalance» позволяет выполнить ребалансировку не только данных (например, реплицирование нескольких копий на разные накопители), но и метаданных в ФС (например, для переноса метаданных после добавления в пул дополнительного накопителя). Reconcile применим для всех операций ввода/вывода, а не только для операций фонового копирования и сжатия. В reconcile автоматически учитываются изменения настроек устройств и сразу перереплицируются деградировавшие данные и метаданные.
- Поддержка кодов коррекции ошибок, позволяющих восстанавливать повреждённые данные по аналогии с RAID 5/6. Реализация основана на кодировании Рида-Соломона, способном исправить до N ошибок в страйпе (stripe) при наличии N избыточных блоков. Обеспечено автоматическое восстановление деградировавших страйпов. Возможность применения кодов восстановления применима в конфигурациях с накопителями разного размера.
Mənbə: opennet.ru
