Файловата система Bcachefs официално преста да бъде експериментална

Кент Оверстрит (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 нагоре.

Въпреки непримечателния номер на версията, обусловен от липсата на промени във файловия формат, версия 1.38.6 включва редица сериозни оптимизации на производителността. В кода за работа с структури форматирани в btree, логиране и осигуряване на работата на файловата система са направени около 200 промени, повишаващи производителността. Логиката на потвърждаването на транзакции е съкратена до 4КБ машинен код, добавени са оптимизации за избягване на състезателни блокировки (lock contention) при работа с btree, а процесът на изчистване на журнала (journal flush) е напълно премахнат от блокировки.

На сървър С 48-ядрен процесор AMD в Bcachefs успяхме да постигнем пропускна способност от 16.5 GB/сек при стартиране на 48 клиента dbench (за сравнение, XFS е постигнал резултат от 16 GB/сек). Подготвени, но отложени до следващото издание, са пачове, които довеждат производителността в тестовете dbench до 19 GB/сек (тези пачове изискват допълнително тестване или промяна на дисковия формат). При тестване с утилитата 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 поддържа възможности като включване на няколко устройства в един дял, многослойни разположения на носители (долният слой с често използвани данни на базата на бързи SSD, а горният слой с по-малко търсени данни от твърди дискове), репликация (RAID 1/10), кеширане, прозрачно компресиране на данни (режими LZ4, gzip и ZSTD), моментни снимки (снапшоти), проверка на целостта с контролни суми, кодове за корекция на грешки, съхранение на информация в криптиран вид (използват се ChaCha20 и Poly1305).

Сред значителните нововъведения, добавени в Bcachefs през последните месеци, се споменават:

  • Механизмът "reconcile" (rebalance_v2), който в отличие от режима "rebalance" позволява извършването на ребалансировка не само на данни (например, репликиране на няколко копия на различни устройства), но и на метаданни в ФС (например, за преместване на метаданни след добавяне на допълнително устройство в пула). Reconcile е приложим за всички операции на вход/изход, а не само за операции на фоново копиране и компресия. В reconcile автоматично се отчитат промените в настройките на устройствата и веднага се репликират деградиралите данни и метаданни.
  • Поддръжка на кодове за корекция на грешки, позволяващи възстановяване на повредени данни, подобно на RAID 5/6. Реализацията е основана на кодиране на Рийд-Соломон, който може да поправи до N грешки в стрипта (stripe) при наличие на N излишни блокове. Осигурено е автоматично възстановяване на деградирали стрипове. Възможността за прилагане на кодове за възстановяване е приложима в конфигурации с устройства с различен размер.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster