Kent Overstreet, forfatter af den SSD-baserede bloklagrings cachesystem BCache, opsummerede i sit oplæg på LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) resultaterne af arbejdet med at fremme filsystemet Bcachefs til den primære Linux-kernel og fortalte om planer for videre udvikling af dette FS. En opdateret pakke med patches til anmeldelse og inkludering i den primære Linux-kernel blev fremlagt i maj. Filsystemet Bcachefs har været under udvikling i næsten 10 år. Anmeldelsen af implementeringen af Bcachefs før inkludering i kernen blev annonceret allerede i slutningen af 2020, og den nuværende pakke med patches tager højde for bemærkninger og mangler, der blev identificeret ved den tidligere anmeldelse.
Målet med udviklingen af Bcachefs er at nå et YFS-niveau i ydeevne, pålidelighed og skalerbarhed, samtidig med at der tilbydes ekstra funktioner, som er karakteristiske for Btrfs og ZFS, såsom inclusion af flere enheder i en partition, lagdelte lagringsløsninger, replikation (RAID 1/10), caching, gennemsigtig datakomprimering (tilstande LZ4, gzip og ZSTD), tilstands snapshots, integritetsverifikation via kontrolsummer, mulighed for at opbevare Reed-Solomons fejlkorrigeringskoder (RAID 5/6), og opbevaring af data i krypteret form (benytter ChaCha20 og Poly1305). I ydeevne overgår Bcachefs Btrfs og andre FS, der benytter Copy-on-Write mekanisme, og opnår hastigheder tæt på Ext4 og XFS.
Af de seneste fremskridt i udviklingen af Bcachefs kan nævnes stabilisering af implementeringen af snapshots, der er writable. I forhold til Btrfs skalerer snapshots i Bcachefs nu betydeligt bedre og er fri for de problemer, der er forbundet med Btrfs. I praksis er brugen af snapshots testet i forbindelse med MySQL backup. Der er også blevet udført betydeligt arbejde for at forbedre skalerbarheden – filsystemet har vist sig at fungere godt ved test i opbevaringsløsninger på 100 TB, og Bcachefs forventes snart at blive implementeret i en opbevaringslösung på 1 PB. En ny nocow-tilstand er blevet tilføjet for at deaktivere 'copy-on-write'-mekanismen (nocow). I løbet af sommeren planlægger man at stabilisere implementeringen af fejlkorrigeringskoder og RAIDZ samt løse problemer med højt hukommelsesforbrug under genopretning og kontrol af FS ved hjælp af værktøjet fsck.
Blandt fremtidige planer nævnes ønsket om at bruge Rust-programmeringssproget til udviklingen af Bcachefs. Ifølge skaberen af Bcachefs kan han lide at programmere snarere end at debugge koden, og nu virker det absurd at skrive kode i C, når der er et bedre alternativ. Rust er allerede blevet brugt i Bcachefs til implementeringen af nogle værktøjer, der kører i brugerrummet. Desuden overvejes det at omskrive Bcachefs helt i Rust over tid, da brugen af dette sprog betydeligt sparer tid på debugging.
Hvad angår fremme af Bcachefs til den officielle Linux-kernel, kan godkendelsesprocessen tage tid på grund af den betydelige mængde ændringer (2500 patches og cirka 90.000 linjer kode), som er svære at gennemgå. For at fremskynde gennemgangen har nogle udviklere foreslået at opdele patch-serien i mindre og mere logisk adskilte dele. Under diskussionen påpegede nogle deltagere også udviklingen af projektet af én udvikler og faren for, at koden kan blive uden vedligeholdelse, hvis der sker noget med udvikleren (to medarbejdere fra Red Hat viser interesse for projektet, men deres arbejde er i øjeblikket begrænset til fejlrettelse).
Bcachefs udvikles ved hjælp af teknologier, der allerede er blevet afprøvet ved udviklingen af blokenheden Bcache, der er designet til at cache adgang til langsomme harddiske på hurtige SSD-drev (indgår i kernen fra version 3.10). I Bcachefs anvendes en Copy-on-Write (COW) mekanisme, hvor ændringer ikke fører til overskrivning af data — den nye tilstand skrives til et nyt sted, hvorefter pegeren til den aktuelle tilstand ændres.
En funktion ved Bcachefs er understøttelsen af lagdelt tilslutning af lagringsenheder, hvor lageret sammensættes af flere lag - de hurtigste enheder (SSD) tilsluttes til det nederste lag, og bruges til caching af ofte anvendte data, mens det øverste lag består af mere rummelige og billigere drev, som sikrer opbevaring af mindre efterspurgte oplysninger. Mellem lagene kan der anvendes caching i en forsinket skrivning (writeback) tilstand. Lagringsenheder kan dynamisk tilføjes og frakobles fra partitionen uden at stoppe brugen af filsystemet (data migrerer automatisk).
Kilde: opennet.ru
