Bcachefs je datotečni sustav za kopiranje na pisanje za operativne sustave temeljene na Linuxu.
Prije nekoliko dana Kent Overstreet je najavio izlazak Bcachefsa 1.33.0 , nove verzije datotečnog sustava koja uvodi duboke strukturne promjene u upravljanju podacima i arhitekturi njegovog izvornog koda.
Ovo ažuriranje se čini jednim od najznačajnijih u posljednje dvije godine, s fokusom na integritet metapodataka i modernizaciju C kodne baze.
"Usklađivanje": Novo doba za integritet podataka
Najznačajnija nova značajka, opisana kao najznačajnija promjena u posljednje dvije godine, jest uvođenje funkcije usklađivanja (rebalance_v2) . Ovaj novi mehanizam zamjenjuje stari sustav "rebalansiranja" i rješava jedno od njegovih glavnih ograničenja: sustav sada može upravljati i premještati ne samo korisničke podatke već i metapodatke datotečnog sustava.
Rebalance_v2 djeluje proaktivno i automatski. Ako se u polje doda novi disk ili se promijene opcije redundancije, Bcachefs će odmah početi replicirati i ispravljati sve oštećene podatke ili metapodatke, koristeći odvojene indekse za određivanje prioriteta kritičnih operacija. To osigurava održavanje integriteta sustava čak i tijekom intenzivnih operacija održavanja.
Čišćenje koda i priprema za hrđu
Ispod haube, verzija 1.33.0 donosi masovno restrukturiranje C koda kako bi bio sigurniji i kompatibilniji s budućom implementacijom u HrđaProgramer je izvršio dubinsko čišćenje, smanjujući broj izjava. goto s 2.500 na samo 600, što uvelike pojednostavljuje logički tok programa.
Osim toga, uvedeni su novi makroi kao što su DARRAY() y try()Oni su dizajnirani da oponašaju dinamičko ponašanje vektora i rukovanje greškama Rusta i C++-a. To ne samo da modernizira trenutni kod, već će i olakšati prenosivost i smanjiti površinu memorijskih grešaka u budućnosti.
Poboljšana dijagnostika i fleksibilnost pohrane
Imajući na umu administraciju sustava, ova verzija drastično poboljšava jasnoću poruka o pogreškama . Bcachefs sada može razlikovati i komunicirati je li kvar uzrokovan softverskom greškom ili fizičkim hardverskim problemom, čak i predlažući potrebne korake oporavka. To je ključno kako bi se izbjegle pogrešne dijagnoze gdje se datotečni sustav okrivljuje za kvar diska.
Ova transparentnost proteže se na nekoliko razina:
- Detaljne I/O pogreške: Kada blokovski sloj prijavi grešku, Bcachefs sada prenosi specifični kod (npr.
BLK_STS_IOERR), što pomaže u utvrđivanju je li fizički disk krivac. - Greške pri sastavljanju: Ako nedostaju uređaji za sastavljanje volumena, sustav sada točno pokazuje koja jedinica nedostaje, prikazujući njezino ime i model na temelju posljednjeg puta kada je viđena.
- Ograničenja stope pogrešaka: Granice za "meke" (softverske) i "hardverske" (hardverske) pogreške su odvojene, čime se osigurava da poplava manjih pogrešaka ne maskira kritični kvar diska.
Osim toga, naredba bcachefs fs top Poboljšano je. Interni brojači sada prikazuju brzine prijenosa podataka umjesto samo statičnih brojeva, što znatno olakšava povezivanje događaja (kao što su data_update_fail) s padom performansi u stvarnom vremenu.
Optimizacije u B-trees i nove opcije montiranja
Ispod haube, performanse pri velikim opterećenjima su poboljšane zahvaljujući promjenama u upravljanju B-stablom. Spajanje praznih čvorova sada se odvija asinkrono, čime se uklanjaju uska grla u međuspremniku za pisanje. Osim toga, dodan je i opcionalni prolaz za oporavak. merge_btree_nodes, za ručnu optimizaciju strukture stabla ako je potrebno.
Još jedna vrlo praktična dodatna značajka je mogućnost pokretanja datotečnog sustava s konfiguracijom replicas=2 na jednom diskuTo korisnicima omogućuje da započnu s jednim diskom znajući da sustav "mora" imati redundanciju; čim se spoji drugi disk, Bcachefs automatski replicira podatke bez potrebe za složenom ručnom intervencijom.
Konačno, vrijedi spomenuti da nova verzija, koja je već dostupna za distribucije poput Debiana, Fedore, Arch Linuxa i NixOS-a, zahtijeva Linux kernel 6.16 ili noviji te se distribuira u dva osnovna paketa: modul kernela (bcachefs-kernel-dkms) i korisnički alati (bcachefs-tools).