I-Bcachefs iwuhlelo lwefayela lokukopisha-phezu kokubhala lwezinhlelo zokusebenza ezisekelwe ku-Linux.
Ezinsukwini ezimbalwa ezedlule iKent Overstreet imemezele ukukhishwa kwe-Bcachefs 1.33.0 , inguqulo entsha yesistimu yamafayela eyethula izinguquko ezinkulu zesakhiwo ekuphathweni kwedatha kanye nokwakhiwa kwekhodi yayo yomthombo.
Lesi sibuyekezo sibonakala singesinye sezibaluleke kakhulu eminyakeni emibili edlule, sigxile ekuthembekeni kwe-metadata kanye nokwenza i-C codebase ibe yesimanje.
"Ukubuyisana": Inkathi entsha yobuqotho bedatha
Isici esisha esiphawuleka kakhulu, esichazwa njengoshintsho olubaluleke kakhulu eminyakeni emibili edlule, ukwethulwa komsebenzi we -Reconciliation (rebalance_v2) . Le ndlela entsha ithatha indawo yesistimu endala "yokulinganisela kabusha" futhi ibhekana nenye yemikhawulo yayo emikhulu: uhlelo manje selungaphatha futhi luhambise hhayi idatha yomsebenzisi kuphela kodwa futhi lufake ne-metadata yesistimu.
I-Rebalance_v2 isebenza ngendlela ezenzakalelayo futhi ezenzakalelayo. Uma idiski entsha ingezwa ku-array noma izinketho zokuphindaphinda zishintshwa, ama-Bcachefs azoqala ngokushesha ukuphinda futhi alungise noma iyiphi idatha noma imethadatha eyonakele, esebenzisa ama-index ahlukene ukuze abeke phambili imisebenzi ebalulekile. Lokhu kuqinisekisa ukuthi ubuqotho besistimu buyagcinwa ngisho nangesikhathi semisebenzi yokulungisa ejulile.
Ukuhlanzwa kwekhodi kanye nokulungiswa kokugqwala
Ngaphansi kwe-hood, inguqulo 1.33.0 iletha ukuhlelwa kabusha okukhulu kwekhodi ye-C ukuze ivikeleke kakhulu futhi ihambisane nokusetshenziswa kwesikhathi esizayo ku RustUnjiniyela wenze ukuhlanza okujulile, enciphisa inani lezitatimende. goto kusukela ku-2.500 kuya ku-600 kuphela, okwenza kube lula kakhulu ukugeleza okunengqondo kohlelo.
Ngaphezu kwalokho, kuye kwethulwa ama-macro amasha anjenge- DARRAY() y try()Lokhu kuklanyelwe ukulingisa ukuziphatha kwe-vector okuguquguqukayo kanye nokuphathwa kwamaphutha kwe-Rust kanye ne-C++. Lokhu akugcini nje ngokuthuthukisa ikhodi yamanje kodwa futhi kuzokwenza kube lula ukuphatheka futhi kunciphise ubuso bephutha lememori esikhathini esizayo.
Ukuxilongwa okuthuthukisiwe kanye nokuguquguquka kwesitoreji
Njengoba kucatshangwa ngokuphathwa kohlelo, le nguqulo ithuthukisa kakhulu ukucaca kwemiyalezo yamaphutha . Ama-Bcachefs manje angakwazi ukuhlukanisa nokuxhumana ukuthi ukwehluleka kungenxa yephutha lesofthiwe noma inkinga yehadiwe ebonakalayo, aze aphakamise nezinyathelo zokutakula ezidingekayo. Lokhu kubalulekile ukugwema ukuhlonza okungalungile lapho uhlelo lwefayela lusolwa khona ngediski ehlulekayo.
Lokhu kucaca kufinyelela emazingeni amaningana:
- Amaphutha e-I/O anemininingwane: Uma ungqimba lwebhulokhi lubika ukwehluleka, i-Bcachefs manje idlulisela ikhodi ethile (njenge
BLK_STS_IOERR), okusiza ekuboneni ukuthi idiski ebonakalayo iyona yini imbangela. - Amaphutha okuhlanganisa: Uma amadivayisi engekho ukuze ahlanganise ivolumu, uhlelo manje lukhombisa ngqo ukuthi iyiphi iyunithi engekho, okubonisa igama layo kanye nomodeli ngokusekelwe esikhathini sokugcina ebonwe ngaso.
- Imikhawulo yesilinganiso samaphutha: Imingcele yamaphutha "athambile" (isofthiwe) kanye "naqinile" (ihadiwe) ihlukanisiwe, okuqinisekisa ukuthi ukugcwala kwamaphutha amancane akufihli ukwehluleka kwediski okubalulekile.
Ngaphezu kwalokho, umyalo bcachefs fs top Kuthuthukile. Ama-counter angaphakathi manje abonisa isivinini sokudlulisa idatha esikhundleni sezinombolo ezimile, okwenza kube lula kakhulu ukuhlanganisa imicimbi (njenge data_update_fail) ngokwehla kokusebenza kwesikhathi sangempela.
Ukuthuthukiswa ku-Btrees kanye nezinketho ezintsha zokufaka
Ngaphansi kwe-hood, ukusebenza kwemithwalo esindayo kuyathuthuka ngenxa yezinguquko ekuphathweni kwe-B-tree. Ukuhlanganisa ama-node angenalutho manje kwenzeka ngendlela ehambisanayo, kususa izithiyo zokubhala. Ngaphezu kwalokho, kufakwe i-recovery pass yokuzikhethela. merge_btree_nodes, ukuze kwenziwe ngcono isakhiwo sesihlahla ngesandla uma kudingeka.
Esinye isici esiwusizo kakhulu esingeziwe yikhono lokuqalisa uhlelo lwefayela ngokucushwa replicas=2 kudiski eyodwaLokhu kuvumela abasebenzisi ukuthi baqale ngedrayivu eyodwa bazi ukuthi uhlelo "kumele" lube nokuphindaphindeka; ngokushesha nje lapho idrayivu yesibili ixhunyiwe, i-Bcachefs iphinda idatha ngokuzenzakalelayo ngaphandle kokudinga ukungenelela okuyinkimbinkimbi ngesandla.
Okokugcina, kufanelekile ukusho ukuthi inguqulo entsha, esevele itholakala ekusakazweni njengeDebian, Fedora, Arch Linux kanye neNixOS, idinga i-Linux kernel engu-6.16 noma ngaphezulu futhi isatshalaliswa ngamaphakheji amabili ayisisekelo: i-kernel module (bcachefs-kernel-dkms) kanye namathuluzi omsebenzisi (bcachefs-tools).