Kent Overstreet, autor systému vyrovnávacej pamäti blokových zariadení na SSD-čipsoch BCache, vo svojom vystúpení na konferencii LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) zhrnul výsledky práce na presadení súborového systému Bcachefs do hlavného jadra Linuxu a porozprával o plánoch na ďalší rozvoj tohto FS. V máji bol na recenzovanie a zaradenie do hlavného jadra Linuxu navrhnutý aktualizovaný súbor patchov s realizáciou FS Bcachefs. FS Bcachefs sa vyvíja už približne 10 rokov. O pripravenosti na recenzovanie realizácie Bcachefs pred zaradením do jadra bolo oznámené už koncom roku 2020 a v aktuálnom variantu patchov sú zapracované pripomienky a nedostatky z predchádzajúceho recenzovania.
Cieľom vývoja Bcachefs je dosiahnuť úroveň XFS z hľadiska výkonu, spoľahlivosti a škálovateľnosti, pričom poskytuje dodatočné funkcie charakteristické pre Btrfs a ZFS, ako je zahrnutie viacerých zariadení do jedného oddielu, viacúrovňové rozloženie zásobníkov, replikácia (RAID 1/10), vyrovnávanie, priehľadná kompresia dát (režimy LZ4, gzip a ZSTD), okamžité snímanie stavu (snapshoty), overovanie integrity pomocou kontrolných súčtov, možnosť uchovávania kódov korekcie chýb Ráida—Solomona (RAID 5/6) a uchovávanie informácií v zašifrovanej podobe (používajú sa ChaCha20 a Poly1305). Z hľadiska výkonu Bcachefs predčí Btrfs a iné FS založené na mechanizme Copy-on-Write a dosahuje rýchlosť blízku Ext4 a XFS.
Medzi poslednými úspechmi vo vývoji Bcachefs sa zaznamenáva stabilizácia realizácie snapshotov, ktoré sú dostupné na zápis. V porovnaní s Btrfs sú snapshoty v Bcachefs teraz oveľa lepšie škálovateľné a zbavené problémov, ktoré trápi Btrfs. V praxi bola funkcia snapshotov vyskúšaná pri organizácii zálohovania MySQL. V Bcachefs bola tiež vykonaná rozsiahla práca na zlepšení škálovateľnosti — súborový systém preukázal dobré vlastnosti pri testovaní vo skladiskách s veľkosťou 100 TB a v blízkej dobe sa očakáva zavedenie Bcachefs do skladiska s veľkosťou 1 PB. Bol pridaný nový režim nocow na vypnutie mechanizmu „copy-on-write“ (nocow). Počas leta sa plánuje doladiť implementáciu kódov pre opravu chýb a RAIDZ do stabilného stavu, ako aj vyriešiť problémy s vysokou spotrebou pamäte pri obnove a kontrole FS pomocou nástroja fsck.
Medzi plány do budúcnosti patrí želanie využiť pri vývoji Bcachefs jazyk Rust. Podľa autora Bcachefs, má rád programovanie a nie ladenie kódu, a teraz mu príde absurdné písať kód v jazyku C, keď existuje lepšia alternatíva. Rust už je implementovaný v Bcachefs pri realizácii niektorých nástrojov bežiacich v užívateľskom priestore. Navyše sa zvažuje myšlienka postupne úplne prepisovať Bcachefs na Rust, pretože použitie tohto jazyka významne šetrí čas na ladenie.
Pokiaľ ide o presadenie Bcachefs do hlavnej línie jadra Linux, tento proces prijímania sa môže zdržovať kvôli významnej veľkosti zmien (2500 patchov a približne 90 tisíc riadkov kódu), ktoré je ťažké recenzovať. Pre urýchlenie recenzovania niektorí vývojári navrhli rozdeliť sériu patchov na menšie a logicky odlíšené časti. Počas diskusie, niektorí účastníci tiež upozornili na to, že projekt rozvíja len jeden vývojár a obavy z toho, že kód môže zostávať bez podpory, ak sa niečo stane s jeho vývojárom (o projekt sa zaujímajú dvaja zamestnanci Red Hat, ale ich práca je zatiaľ obmedzená na opravu chýb).
Bcachefs sa vyvíja s použitím technológií už osvedčených pri vývoji blokového zariadenia Bcache, určeného na vyrovnávanie prístupu k pomalým pevným diskom na rýchlych SSD úložiskách (je súčasťou jadra od verzie 3.10). V Bcachefs sa používa mechanizmus Copy-on-Write (COW), pri ktorom zmeny nevedú k prepisovaniu dát — nový stav sa zapisuje na nové miesto, po čom sa mení ukazovateľ aktuálneho stavu.
Jednou z charakteristík Bcachefs je podpora viacúrovňového pripojenia úložných zariadení, pri ktorom je úložisko zložené z viacerých vrstiev — k spodnej vrstve sú pripojené najrýchlejšie úložiská (SSD), ktoré sa používajú na vyrovnávanie často používaných dát, a hornú vrstvu tvoria objemnejšie a lacnejšie disky, ktoré zabezpečujú ukladanie menej požadovaných dát. Medzi vrstvami sa môže aplikovať vyrovnávanie v režime odloženej zápisu (writeback). Úložiská je možné dynamicky pridávať a odpojovať od oddielu bez zastavenia používania súborového systému (dáta migrujú automaticky).
Zdroj: opennet.ru
