Kent Overstreet, forfattar av kjernekomponenten i Linux-systemet for caching av blokk-enheter på SSD-lagringsenheter kalt BCache, oppsummerte resultata frå arbeidet med å fremje filsystemet Bcachefs til kjernen under sitt innlegg på LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit). I mai vart eit oppdatert sett med patchar for vurdering og inkludering i kjernen til Linux foreslått, som implementerer Bcachefs-filsystemet. Bcachefs har vore under utvikling i omtrent 10 år. Klargjeringa for vurdering av implementasjonen av Bcachefs før inkludering i kjernen vart kunngjort allereie i slutten av 2020, og dei noverande patchane tek hensyn til kommentarar og manglar som vart avdekket under tidlegare vurderingar.
Målet med utviklinga av Bcachefs er å oppnå nivået til XFS i ytelse, pålitelighet og skalerbarhet, samtidig som det tilbyr ekstra funksjonalitetar som er særskilte for Btrfs og ZFS, inkludert muligheten for å inkludere fleire lagringsenheter i eit volum, lagdeling av lagringsenheter, replisering (RAID 1/10), caching, transparent datakompresjon (LZ4, gzip og ZSTD-modusar), tilstandsøkter (snapshots), integritets-verifisering gjennom sjekksum, lagring av Reed-Solomon-feilkorrigeringskoder (RAID 5/6), og lagring av data i kryptert form (brukar ChaCha20 og Poly1305). Når det gjeld ytelse, overgår Bcachefs Btrfs og andre filsystemer basert på Copy-on-Write-mekanismen, og viser hastigheiter som er nær Ext4 og XFS.
Blant de nyeste prestasjonene innen utviklingen av Bcachefs er stabiliseringen av implementeringen av skrivbare øyeblikksbilder. Sammenlignet med Btrfs skalerer øyeblikksbilder i Bcachefs nå betydelig bedre og er fri for de problemene som Btrfs har. I praksis har bruken av øyeblikksbilder blitt testet for organisering av MySQL-sikkerhetskopiering. Bcachefs har også gjennomgått omfattende forbedringer for skalering — filsystemet har vist seg å fungere godt i testing med lagringssystemer på 100 TB, og i nær fremtid forventes Bcachefs implementert i et lagringssystem på 1 PB. En ny nocow-modus er lagt til for å deaktivere copy-on-write-mekanismen (nocow). I løpet av sommeren planlegger de å stabilisere implementeringen av feilkorrigeringskoder og RAIDZ, samt løse problemer med høyt minneforbruk ved gjenoppretting og verifisering av filsystemet med verktøyet fsck.
Når det kommer til fremtidige planer, nevnes ønsket om å bruke Rust-språket i utviklingen av Bcachefs. Ifølge forfatteren av Bcachefs elsker han å programmere, snarere enn å feilsøke koden, og nå er det meningsløst å skrive kode i C når det finnes et bedre alternativ. Rust er allerede tatt i bruk i Bcachefs for implementeringen av enkelte verktøy som kjøres i brukermodus. Dessuten utvikles ideen om gradvis å skrive om Bcachefs helt på Rust, ettersom bruken av dette språket betydelig reduserer tiden brukt på feilsøking.
Når det gjelder promoteringen av Bcachefs til hovedkjernen i Linux, kan godkjenningsprosessen ta tid på grunn av det ganske store omfanget av endringene (2500 patcher og omtrent 90 000 linjer med kode) som er vanskelige å vurdere. For å fremskynde vurderingen har noen utviklere foreslått å dele opp patch-serien i mindre og mer logisk atskilte deler. Under diskusjonen har noen deltakere også påpekt utviklingen av prosjektet av én utvikler og faren for at koden kan bli uten vedlikehold hvis det skjer noe med utvikleren. To ansatte hos Red Hat viser interesse for prosjektet, men deres arbeid er foreløpig begrenset til å rette feil.
Bcachefs utvikles ved hjelp av teknologier allerede testet i utviklingen av blokkenhet Bcache, som er designet for å cache tilgang til langsomme harddisker på raske SSD-er (inkludert i kjernen siden utgivelsen 3.10). I Bcachefs brukes Copy-on-Write (COW) mekanismen, hvor endringer ikke fører til overskrivning av data — den nye tilstanden skrives til et nytt sted, hvoretter peker til den aktuelle tilstanden endres.
En av de unike funksjonene ved Bcachefs er støtten for lagdelt tilkobling av lagringsenheter, der lagringssystemet er sammensatt av flere lag — laget nederst kobles til de raskeste lagringsenhetene (SSD), som brukes til å cache ofte brukte data, mens det øverste laget består av større og billigere disker som lagrer mindre etterspurte data. Mellom lagene kan det brukes caching i skrivebekreftelsestilstand (writeback). Lagringsenheter kan dynamisk legges til og frakobles fra partisjonen uten å stoppe bruken av filsystemet (data migrerer automatisk).
Kilde: opennet.ru
