Прасоўванне Bcachefs у склад ядра Linux

Кент Оверстрыт (Kent Overstreet), аўтар уваходнай у склад ядра Linux сістэмы кэшавання блокавых прылад на SSD-назапашвальніках BCache, у сваім выступе на канферэнцыі LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) абагульніў вынікі працы па пасоўванні файлавай сістэмы у асноўны склад ядра Linux і распавёў аб планах па далейшым развіцці дадзенай ФС. У траўні для рэцэнзавання і ўключэнні ў асноўны склад ядра Linux быў прапанаваны абноўлены набор патчаў з рэалізацыяй ФС Bcachefs. ФС Bcachefs развіваецца ўжо каля 10 гадоў. Аб гатоўнасці рэцэнзавання рэалізацыі Bcachefs перад уключэннем у склад ядра было абвешчана яшчэ ў канцы 2020 гады і ў бягучым варыянце патчаў улічаныя выяўленыя пры мінулым рэцэнзаванні заўвагі і недапрацоўкі.

Мэтай распрацоўкі Bcachefs з'яўляецца дасягненне ўзроўня XFS у прадукцыйнасці, надзейнасці і маштабаванасці, падаючы пры гэтым дадатковыя магчымасці, уласцівыя Btrfs і ZFS, такія як уключэнне ў падзел некалькіх прылад, шматслаёвыя раскладкі назапашвальнікаў, рэплікацыя (RAID 1/10), кэшаванне, празрыстае сціску (рэжымы LZ4, gzip і ZSTD), зрэзы стану (снапшоты), верыфікацыя цэласнасці па кантрольных сумах, магчымасць захоўвання кодаў карэкцыі памылак Рыда-Саламона (RAID 5/6), захоўванне інфармацыі ў зашыфраваным выглядзе (выкарыстоўваюцца ChaCha20 і Poly1305). Па прадукцыйнасці Bcachefs апярэджвае Btrfs і іншыя ФС на базе механізму Copy-on-Write, і дэманструе хуткасць працы, блізкую да Ext4 і XFS.

З апошніх дасягненняў у распрацоўцы Bcachefs адзначаецца стабілізацыя рэалізацыі снапшотаў, даступных на запіс. У параўнанні з Btrfs снапшоты ў Bcachefs зараз значна лепш маштабуюцца і пазбаўленыя праблем, уласцівых Btrfs. На практыцы праца снапшотаў апрабаваная пры арганізацыі рэзервовага капіявання MySQL. У Bcachefs таксама праведзена вялікая праца па паляпшэнні маштабаванасці – файлавая сістэма добра зарэкамендавала сябе пры тэставанні ў сховішчах, памерам 100 ТБ, і хуткім часам чакаецца ўкараненне Bcachefs у сховішча памерам 1 ПБ. Дададзены новы рэжым nocow для адключэння механізму "copy-on-write" (nocow). На працягу лета плануюць давесці да стабільнага стану рэалізацыю кодаў карэкцыі памылак і RAIDZ, а таксама вырашыць праблемы з высокім спажываннем памяці пры аднаўленні і праверцы ФС утылітай fsck.

З планаў на будучыню згадваецца жаданне выкарыстоўваць пры распрацоўцы Bcachefs мову Rust. Па меркаванні аўтара Bcachefs, ён кахае праграмаваць, а не адладжваць код, і зараз вар'яцка пісаць код на мове Сі, калі з'явіўся лепшы варыянт. Rust ужо задзейнічаны ў Bcachefs у рэалізацыі некаторых утыліт, якія запускаюцца ў прасторы карыстача. Больш за тое, выношваецца ідэя паступова поўнасцю перапісаць Bcachefs на Rust, бо выкарыстанне гэтай мовы істотна эканоміць час на адладку.

Што да прасоўванні Bcachefs у асноўны склад ядра Linux, то працэс прыняцця можа зацягнуцца з-за дастатковай вялікага памеру змен (2500 патчаў і каля 90 тысяч радкоў кода), які цяжка рэцэнзаваць. Для паскарэння рэцэнзавання некаторыя распрацоўшчыкі прапанавалі разбіць серыю патчаў на больш дробныя і лагічна падзеленыя часткі. У працэсе абмеркавання, некаторыя ўдзельнікі таксама звярнулі ўвагу на развіццё праекта адным распрацоўшчыкам і небяспека таго, што код можа застацца без суправаджэння, у выпадку, калі з яго распрацоўшчыкам нешта здарыцца (да праекту праяўляюць цікавасць два супрацоўнікі Red Hat, але іх праца пакуль абмяжоўваецца. выпраўленнем памылак).

Bcachefs развіваецца з выкарыстаннем тэхналогій ужо апрабаваных пры распрацоўцы блокавай прылады Bcache, прызначанага для кэшавання доступу да павольных цвёрдых кружэлак на хуткіх SSD-назапашвальніках (уваходзіць у ядро, пачынальна з выпуску 3.10). У Bcachefs выкарыстоўваецца механізм Copy-on-Write (COW), пры якім змены не прыводзяць да перазапісу дадзеных - новы стан запісваецца ў новае месца, пасля чаго мяняецца паказальнік актуальнага стану.

Асаблівасцю Bcachefs з'яўляецца падтрымка шматслаёвага падлучэння назапашвальнікаў, пры якім сховішча кампануецца з некалькіх пластоў - да ніжняга пласта падлучаюцца найболей хуткія назапашвальнікі (SSD), якія выкарыстоўваюцца для кэшавання часта выкарыстоўваных дадзеных, а верхні пласт утвораць больш ёмістыя і танныя кружэлкі, якія забяспечваюць захоўванне . Паміж пластамі можа ўжывацца кэшаванне ў рэжыме адкладзенага запісу (writeback). Назапашвальнікі можна дынамічна дадаваць і адлучаць ад часткі без прыпынку выкарыстання файлавай сістэмы (дадзеныя мігруюць аўтаматычна).

Крыніца: opennet.ru

Дадаць каментар