Кент Оверстрыт (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-ядзерным CPU AMD у Bcachefs атрымалася дамагчыся прапускной здольнасці 16/05 GB/sec пры запуску 48 кліентаў dbench (для параўнання ў XFS атрыманы вынік у 16 GB/sec). Падрыхтаваны, але адкладзены да наступнага рэлізу, патчы, якія даводзяць прадукцыйнасць у тэстах dbench да 19 GB/sec (дадзеныя патчы патрабуюць дадатковага тэставання ці змены дыскавага фармату). Пры тэставанні ўтылітай fio прадукцыйнасць Bcachefs склала 700 аперацый у секунду пры выкананні аперацый выпадковага запісу 4-кілабайтнымі блокамі (XFS дэманструе ў гэтым тэсце мільён аперацый у секунду, пры тым, што XFS абмяжоўваецца ремапингом блокаў, а Bcachefs апрацоўвае поўны цыкл Cow структуры 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), кэшаванне, празрыстае сцісненне зрэзы стану (снапшоты), верыфікацыя цэласнасці па кантрольных сумах, коды карэкцыі памылак, захоўванне інфармацыі ў зашыфраваным выглядзе (выкарыстоўваюцца ChaCha20 і Poly1305).
Са значных новаўвядзенняў, дададзеных у Bcachefs за апошнія месяцы, згадваюцца:
- Механізм "reconcile" (rebalance_v2), які ў адрозненне ад рэжыму "rebalance" дазваляе выканаць рэбалансаванне не толькі дадзеных (напрыклад, рэпліцыраванне некалькіх дзід на розныя назапашвальнікі), але і метададзеных у ФС (напрыклад, для пераносу метададзеных пасля дадання ў пул дадатковага назапашвальніка). Reconcile дастасоўны для ўсіх аперацый уводу/высновы, а не толькі для аперацый фонавага капіявання і сціску. У reconcile аўтаматычна ўлічваюцца змены налад прылад і адразу перарэпліцыруюцца якія дэградавалі дадзеныя і метададзеныя.
- Падтрымка кодаў карэкцыі памылак, якія дазваляюць аднаўляць пашкоджаныя дадзеныя па аналогіі з RAID 5/6. Рэалізацыя заснавана на кадаванні Рыда-Саламона, здольным выправіць да N памылак у страйпе (stripe) пры наяўнасці N залішніх блокаў. Забяспечана аўтаматычнае аднаўленне страйпаў, якія дэградавалі. Магчымасць ужывання кодаў узнаўлення дастасавальная ў канфігурацыях з назапашвальнікамі рознага памеру.
Крыніца: opennet.ru
