Кент Оверстрит (Kent Overstreet) опубликовал выпуск файловой системы Bcachefs 1.38.6 и объявил об официальном снятии с проекта метки экспериментальной разработки. Последнее время число поступающих сообщений о проблемах сократилось, а выявляемые ошибки стали менее серьёзными и замысловатыми.
Выпуск охватывает два пакета: bcachefs-kernel-dkms с модулем ядра, собираемым при помощи системы DKMS (Dynamic Kernel Module Support), и bcachefs-tools с запускаемой в пространстве пользователя утилитой bcachefs, реализующей команды для создания (mkfs), монтирования, восстановления и проверки ФС. Пакеты собраны для Debian, Ubuntu، آرچ Linux и ожидаются для Fedora, openSUSE и NixOS. DKMS-модуль поддерживает работу с ядрами Linux، د 6.16 څخه پیل کیږي.
Несмотря на непримечательный номер версии, обусловленный отсутствием изменений в дисковом формате, выпуск 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 پروژه د فایل سیسټم رامینځته کوي چې هدف یې د Btrfs او ZFS پرمختللي فعالیت د XFS فعالیت، اعتبار او پیمانه کولو سره یوځای کول دي. Bcachefs د هر پارشن ډیری وسایلو، څو پرتونو ذخیره کولو ترتیبونو (یو ښکته طبقه چې د ګړندي SSDs پراساس ډیری ځله لاسرسی شوي ډیټا سره، او یو پورتنۍ طبقه چې د هارډ ډرایو څخه لږ ځله لاسرسی شوي ډیټا سره)، نقل (RAID 1/10)، کیچ کول، شفاف ډیټا کمپریشن (LZ4، gzip، او ZSTD حالتونه)، د حالت ټوټې (سنیپ شاټونه)، د چیکسمونو په کارولو سره د بشپړتیا تصدیق، د غلطۍ اصلاح کوډونه، او کوډ شوي ډیټا ذخیره (د ChaCha20 او Poly1305 په کارولو سره) ملاتړ کوي.
Из значительных нововведений, добавленных в Bcachefs за последние месяцы, упоминаются:
- Механизм «reconcile» (rebalance_v2), который в отличие от режима «rebalance» позволяет выполнить ребалансировку не только данных (например, реплицирование нескольких копий на разные накопители), но и метаданных в ФС (например, для переноса метаданных после добавления в пул дополнительного накопителя). Reconcile применим для всех операций ввода/вывода, а не только для операций фонового копирования и сжатия. В reconcile автоматически учитываются изменения настроек устройств и сразу перереплицируются деградировавшие данные и метаданные.
- Поддержка кодов коррекции ошибок, позволяющих восстанавливать повреждённые данные по аналогии с RAID 5/6. Реализация основана на кодировании Рида-Соломона, способном исправить до N ошибок в страйпе (stripe) при наличии N избыточных блоков. Обеспечено автоматическое восстановление деградировавших страйпов. Возможность применения кодов восстановления применима в конфигурациях с накопителями разного размера.
سرچینه: opennet.ru
