Кент Оверстрит (Kent Overstreet) опубликовал выпуск файловой системы Bcachefs 1.38.6 и объявил об официальном снятии с проекта метки экспериментальной разработки. Последнее время число поступающих сообщений о проблемах сократилось, а выявляемые ошибки стали менее серьёзными и замысловатыми.
Выпуск охватывает два пакета: bcachefs-kernel-dkms с модулем ядра, собираемым при помощи системы DKMS (Dynamic Kernel Module Support), и bcachefs-tools с запускаемой в пространстве пользователя утилитой bcachefs, реализующей команды для создания (mkfs), монтирования, восстановления и проверки ФС. Пакеты собраны для Debian, Ubuntu, Vòm Linux и ожидаются для Fedora, openSUSE и NixOS. DKMS-модуль поддерживает работу с ядрами Linux, bắt đầu từ ngày 16 tháng 6.
Несмотря на непримечательный номер версии, обусловленный отсутствием изменений в дисковом формате, выпуск 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 повысить гибкость, стабильность и удобство работы с кодом, сделает проект более интересным для молодых инженеров и позволит в будущем реализовать формальную верификацию надёжности.
Dự án Bcachefs đang phát triển một hệ thống tệp nhằm kết hợp chức năng tiên tiến của Btrfs và ZFS với hiệu năng, độ tin cậy và khả năng mở rộng của XFS. Bcachefs hỗ trợ các tính năng như nhiều thiết bị trên mỗi phân vùng, bố cục lưu trữ nhiều lớp (lớp dưới cùng chứa dữ liệu được truy cập thường xuyên dựa trên SSD tốc độ cao và lớp trên cùng chứa dữ liệu được truy cập ít thường xuyên hơn từ ổ cứng), sao chép dữ liệu (RAID 1/10), bộ nhớ đệm, nén dữ liệu minh bạch (các chế độ LZ4, gzip và ZSTD), phân vùng trạng thái (ảnh chụp nhanh), xác minh tính toàn vẹn bằng cách sử dụng tổng kiểm tra, mã sửa lỗi và lưu trữ dữ liệu được mã hóa (sử dụng ChaCha20 và Poly1305).
Из значительных нововведений, добавленных в Bcachefs за последние месяцы, упоминаются:
- Механизм «reconcile» (rebalance_v2), который в отличие от режима «rebalance» позволяет выполнить ребалансировку не только данных (например, реплицирование нескольких копий на разные накопители), но и метаданных в ФС (например, для переноса метаданных после добавления в пул дополнительного накопителя). Reconcile применим для всех операций ввода/вывода, а не только для операций фонового копирования и сжатия. В reconcile автоматически учитываются изменения настроек устройств и сразу перереплицируются деградировавшие данные и метаданные.
- Поддержка кодов коррекции ошибок, позволяющих восстанавливать повреждённые данные по аналогии с RAID 5/6. Реализация основана на кодировании Рида-Соломона, способном исправить до N ошибок в страйпе (stripe) при наличии N избыточных блоков. Обеспечено автоматическое восстановление деградировавших страйпов. Возможность применения кодов восстановления применима в конфигурациях с накопителями разного размера.
Nguồn: opennet.ru
