Propagácia Bcachefov na linuxové jadro

Kent Overstreet, autor cachovacieho systému blokového zariadenia BCache na SSD diskoch zahrnutých v linuxovom jadre, vo svojom prejave na konferencii LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) zhrnul výsledky práce na propagácii Bcachefov. súborový systém do hlavného zloženia linuxového jadra a hovoril o plánoch ďalšieho vývoja tohto FS. V máji bola navrhnutá aktualizovaná sada opráv s implementáciou Bcachefs FS na preskúmanie a zahrnutie do hlavného linuxového jadra. FS Bcachefs sa vyvíja približne 10 rokov. Pripravenosť na preskúmanie implementácie Bcachefs pred zaradením do jadra bola oznámená koncom roka 2020 a aktuálna verzia záplat zohľadňuje pripomienky a nedostatky zistené počas predchádzajúcej kontroly.

Cieľom Bcachefs je dosiahnuť úroveň výkonu, spoľahlivosti a škálovateľnosti XFS pri poskytovaní ďalších funkcií Btrfs a ZFS, ako je rozdelenie na viaceré zariadenia, rozloženie viacvrstvových diskov, replikácia (RAID 1/10), ukladanie do vyrovnávacej pamäte, transparentné údaje. kompresia (režimy LZ4, gzip a ZSTD), stavové rezy (snapshoty), overenie integrity pomocou kontrolných súčtov, možnosť ukladať kódy opravy chýb Reed-Solomon (RAID 5/6), ukladanie informácií v zašifrovanej forme (používajú sa ChaCha20 a Poly1305) . Pokiaľ ide o výkon, Bcachefs je pred Btrfs a inými súborovými systémami založenými na mechanizme Copy-on-Write a demonštruje prevádzkovú rýchlosť blízku Ext4 a XFS.

Medzi najnovšie úspechy vo vývoji Bcachefov patrí stabilizácia implementácie zapisovateľných snapshotov. V porovnaní s Btrfs sa snímky v Bcachefoch teraz škálujú oveľa lepšie a neobsahujú problémy vlastné Btrfs. V praxi bola testovaná práca snapshotov pri organizácii záloh MySQL. Bcachefs tiež urobil veľa práce na zlepšení škálovateľnosti – súborový systém fungoval dobre pri testovaní na 100 TB úložiskách a očakáva sa, že Bcachefs bude implementovaný v 1 PB úložiskách v blízkej budúcnosti. Pridaný nový režim nocow na zakázanie mechanizmu kopírovania pri zápise (nocow). Počas leta plánujú uviesť implementáciu kódov na 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 utility fsck.

Plány do budúcnosti zahŕňajú túžbu používať jazyk Rust pri vývoji Bcachefov. Podľa slov autora Bcachefs miluje programovanie, nie ladenie kódu a je šialené písať C kód teraz, keď sa objavila lepšia možnosť. Rust je už zapojený do Bcachefs pri implementácii niektorých utilít, ktoré bežia v užívateľskom priestore. Navyše sa rodí myšlienka postupne úplne prepísať Bcachefs v Ruste, keďže používanie tohto jazyka výrazne šetrí čas na ladenie.

Čo sa týka povýšenia Bcachefov na hlavnú časť linuxového jadra, proces prijatia sa môže oneskoriť z dôvodu pomerne veľkého rozsahu zmien (2500 záplat a asi 90 tisíc riadkov kódu), čo je ťažké posúdiť. Na urýchlenie kontroly niektorí vývojári navrhli rozdeliť sériu opráv na menšie a logicky oddelené časti. Niektorí účastníci počas diskusie upozornili aj na vývoj projektu jedným vývojárom a nebezpečenstvo, že kód môže zostať neudržiavaný, ak sa niečo stane jeho vývojárovi (o projekt majú záujem dvaja zamestnanci Red Hatu, no ich práca je stále obmedzená oprava chyby).

Bcachefs sa vyvíja pomocou technológií, ktoré už boli testované pri vývoji blokového zariadenia Bcache, určeného na vyrovnávanie prístupu k pomalým pevným diskom na rýchlych jednotkách SSD (sú súčasťou jadra od vydania 3.10). Bcachefs využíva mechanizmus Copy-on-Write (COW), v ktorom zmeny nevedú k prepisu dát – nový stav sa zapíše na nové miesto, po ktorom sa zmení ukazovateľ na aktuálny stav.

Zvláštnosťou Bcachefs je podpora viacvrstvových pripojení diskov, pri ktorých je úložisko zložené z niekoľkých vrstiev – k spodnej vrstve sú pripojené najrýchlejšie disky (SSD), ktoré slúžia na cacheovanie často používaných dát a vrchná vrstva vrstvu tvoria priestrannejšie a lacnejšie disky, ktoré poskytujú úložisko pre menej používané dáta. Ukladanie do vyrovnávacej pamäte je možné použiť medzi vrstvami v režime spätného zápisu. Jednotky je možné dynamicky pridávať a odpájať z oblasti bez zastavenia používania systému súborov (údaje sa migrujú automaticky).

Zdroj: opennet.ru

Pridať komentár