Bcachefs er et kopi-på-skriv-filsystem for Linux-baserte operativsystemer.
For noen dager siden annonserte Kent Overstreet utgivelsen av Bcachefs 1.33.0 , en ny versjon av filsystemet som introduserer dyptgripende strukturelle endringer i datahåndtering og arkitekturen til kildekoden.
Denne oppdateringen ser ut til å bli en av de viktigste de siste to årene, med fokus på metadataintegritet og modernisering av C-kodebasen.
«Avstemming»: En ny æra for dataintegritet
Den mest bemerkelsesverdige nye funksjonen, beskrevet som den viktigste endringen de siste to årene, er introduksjonen av avstemmingsfunksjonen (rebalance_v2) . Denne nye mekanismen erstatter det gamle "rebalanserings"-systemet og adresserer en av dets største begrensninger: systemet kan nå administrere og flytte ikke bare brukerdata, men også metadata for filsystemet.
Rebalance_v2 fungerer proaktivt og automatisk. Hvis en ny disk legges til i en array eller redundansalternativer endres, vil Bcachefs umiddelbart begynne å replikere og korrigere eventuelle degraderte data eller metadata, ved å bruke separate indekser for å prioritere kritiske operasjoner. Dette sikrer at systemintegriteten opprettholdes selv under intensive vedlikeholdsoperasjoner.
Kodeopprydding og rustforberedelse
Under panseret bringer versjon 1.33.0 en massiv omstrukturering av C-koden for å gjøre den sikrere og mer kompatibel med en fremtidig implementering i RustUtvikleren har utført en grundig opprydding, noe som reduserer antallet setninger. goto fra 2.500 til bare 600, noe som forenkler den logiske flyten i programmet betraktelig.
I tillegg er det introdusert nye makroer, som f.eks. DARRAY() y try()Disse er utformet for å etterligne den dynamiske vektoroppførselen og feilhåndteringen til Rust og C++. Dette moderniserer ikke bare den nåværende koden, men vil også legge til rette for portabilitet og redusere minnefeiloverflaten i fremtiden.
Forbedret diagnostikk og lagringsfleksibilitet
Med tanke på systemadministrasjon forbedrer denne versjonen tydeligheten i feilmeldinger drastisk . Bcachefs kan nå skille mellom og kommunisere om en feil skyldes en programvarefeil eller et fysisk maskinvareproblem, og til og med foreslå nødvendige gjenopprettingstrinn. Dette er viktig for å unngå feildiagnoser der filsystemet får skylden for en sviktende disk.
Denne åpenheten strekker seg over flere nivåer:
- Detaljerte I/O-feil: Når blokklaget rapporterer en feil, overfører Bcachefs nå den spesifikke koden (for eksempel
BLK_STS_IOERR), som hjelper med å identifisere om den fysiske disken er synderen. - Monteringsfeil: Hvis det mangler enheter for å sette sammen et volum, indikerer systemet nå nøyaktig hvilken enhet som mangler, og viser navn og modell basert på sist gang den ble sett.
- Feilfrekvensgrenser: Grensene for «myke» (programvare) og «harde» (maskinvare) feil er skilt, noe som sikrer at en flom av mindre feil ikke maskerer en kritisk diskfeil.
I tillegg kommandoen bcachefs fs top Det har blitt bedre. De interne tellerne viser nå dataoverføringshastigheter i stedet for bare statiske tall, noe som gjør det mye enklere å korrelere hendelser (som for eksempel data_update_fail) med ytelsesfall i sanntid.
Optimaliseringer i Btrees og nye monteringsalternativer
Under panseret er ytelsen ved tung belastning forbedret takket være endringer i B-tree-administrasjonen. Sammenslåing av tomme noder skjer nå asynkront, noe som eliminerer flaskehalser i skrivebufferen. I tillegg er et valgfritt gjenopprettingspass lagt til. merge_btree_nodes, for å manuelt optimalisere trestrukturen om nødvendig.
En annen veldig praktisk tilleggsfunksjon er muligheten til å starte opp et filsystem med konfigurasjonen replicas=2 på en enkelt plateDette lar brukere starte med én enkelt disk, vel vitende om at systemet «må» ha redundans. Så snart en annen disk er koblet til, replikerer Bcachefs automatisk dataene uten at det kreves kompleks manuell inngripen.
Til slutt er det verdt å nevne at den nye versjonen, som allerede er tilgjengelig for distribusjoner som Debian, Fedora, Arch Linux og NixOS, krever en Linux-kjerne 6.16 eller høyere og distribueres i to grunnleggende pakker: kjernemodulen (bcachefs-kernel-dkms) og brukerverktøyene (bcachefs-tools).