Bcachefs 1.33: Napredna diagnostika, metrike v realnem času in optimizacija Btree

Ključne točke:
  • Podrobna sporočila o napakah: pojasnite vzrok, vrsto (trda/mehka) in rešitev.
  • bcachefs fs top zdaj prikazuje hitrosti prenosa v realnem času.
  • Asinhrono združevanje vozlišč Btree za izboljšanje delovanja pod obremenitvijo
  • Novi možnosti mount_trusts_udev in writeback_timeout.
  • Obsežno zmanjšanje števila ukazov goto v kodi (z 2500 na 600) v pripravah na prihod Rusta.
bcachefs

Bcachefs je datotečni sistem za kopiranje in pisanje za operacijske sisteme, ki temeljijo na Linuxu.

Pred nekaj dnevi je Kent Overstreet napovedal izdajo Bcachefs 1.33.0 , nove različice datotečnega sistema, ki uvaja korenite strukturne spremembe v upravljanju podatkov in arhitekturi njegove izvorne kode.

Ta posodobitev se obeta kot ena najpomembnejših v zadnjih dveh letih, saj se osredotoča na integriteto metapodatkov in posodobitev kodne baze C.

"Uskladitev": Nova doba za integriteto podatkov

Najpomembnejša nova funkcija, opisana kot najpomembnejša sprememba v zadnjih dveh letih, je uvedba funkcije usklajevanja (rebalance_v2) . Ta novi mehanizem nadomešča stari sistem "ponovnega uravnoteženja" in odpravlja eno od njegovih glavnih omejitev: sistem lahko zdaj upravlja in premika ne le uporabniške podatke, temveč tudi metapodatke datotečnega sistema.

Rebalance_v2 deluje proaktivno in samodejno. Če se v polje doda nov disk ali se spremenijo možnosti redundance, bo Bcachefs takoj začel replicirati in popravljati morebitne poškodovane podatke ali metapodatke, pri čemer bo uporabil ločene indekse za določanje prioritet kritičnih operacij. To zagotavlja, da se integriteta sistema ohrani tudi med intenzivnimi vzdrževalnimi operacijami.

Čiščenje kode in priprava na rjo

Različica 1.33.0 v osnovi prinaša obsežno prestrukturiranje kode C, da bi bila varnejša in združljivejša s prihodnjo implementacijo v RustRazvijalec je opravil temeljito čiščenje in zmanjšal število izjav. goto z 2.500 na samo 600, kar močno poenostavi logični potek programa.

Poleg tega so bili uvedeni novi makri, kot npr. DARRAY() y try()Zasnovani so tako, da posnemajo dinamično vedenje vektorjev in obravnavo napak v Rustu in C++. To ne le posodablja trenutno kodo, temveč bo tudi olajšalo prenosljivost in zmanjšalo površino za napake pomnilnika v prihodnosti.

Izboljšana diagnostika in prilagodljivost shranjevanja

Z mislijo na sistemsko administracijo ta različica drastično izboljša jasnost sporočil o napakah . Bcachefs lahko zdaj razloči in sporoči, ali je napaka posledica programske napake ali fizične težave s strojno opremo, ter celo predlaga potrebne korake za obnovitev. To je ključnega pomena za preprečevanje napačnih diagnoz, pri katerih je za okvarjen disk kriv datotečni sistem.

Ta preglednost se razteza na več ravneh:

  • Podrobne napake V/I: Ko blokovna plast sporoči napako, Bcachefs zdaj pošlje specifično kodo (kot je BLK_STS_IOERR), kar pomaga ugotoviti, ali je krivec fizični disk.
  • Napake pri sestavljanju: Če za sestavljanje nosilca manjkajo naprave, sistem zdaj natančno navede, katera enota manjka, in prikaže njeno ime in model glede na to, kdaj je bila nazadnje vidna.
  • Omejitve stopnje napak: Meje med "mehkimi" (programskimi) in "trdimi" (strojnimi) napakami so bile ločene, kar zagotavlja, da poplava manjših napak ne prikrije kritične okvare diska.

Poleg tega ukaz bcachefs fs top Izboljšano je. Notranji števci zdaj prikazujejo hitrosti prenosa podatkov namesto le statičnih številk, kar precej olajša povezovanje dogodkov (kot so data_update_fail) z upadom zmogljivosti v realnem času.

Optimizacije v Btrees in nove možnosti montaže

V osnovi je izboljšana zmogljivost pri velikih obremenitvah zaradi sprememb v upravljanju B-dreves. Združevanje praznih vozlišč zdaj poteka asinhrono, kar odpravlja ozka grla v medpomnilniku za pisanje. Poleg tega je bil dodan izbirni prehod za obnovitev. merge_btree_nodes, da po potrebi ročno optimizirate drevesno strukturo.

Druga zelo praktična dodana funkcija je možnost zagona datotečnega sistema s konfiguracijo replicas=2 na enem samem diskuTo uporabnikom omogoča, da začnejo z enim samim diskom, saj vedo, da mora imeti sistem redundanco; takoj ko je priključen drugi disk, Bcachefs samodejno replicira podatke brez zapletenega ročnega posredovanja.

Na koncu velja omeniti, da nova različica, ki je že na voljo za distribucije, kot so Debian, Fedora, Arch Linux in NixOS, zahteva jedro Linuxa 6.16 ali novejše in je distribuirana v dveh osnovnih paketih: modul jedra (bcachefs-kernel-dkms) in uporabniška orodja (bcachefs-tools).


Dodaj kot prednostni vir v Googlu