Bcachefs është një sistem skedari kopjimi në shkrim për sistemet operative të bazuara në Linux.
Disa ditë më parë, Kent Overstreet njoftoi publikimin e Bcachefs 1.33.0 , një version i ri i sistemit të skedarëve që sjell ndryshime të thella strukturore në menaxhimin e të dhënave dhe arkitekturën e kodit të tij burimor.
Ky përditësim po duket si një nga më të rëndësishmit në dy vitet e fundit, duke u përqendruar në integritetin e meta të dhënave dhe modernizimin e bazës së kodit C.
"Pajtim": Një epokë e re për integritetin e të dhënave
Karakteristika e re më e dukshme, e përshkruar si ndryshimi më domethënës në dy vitet e fundit, është futja e funksionit të Pajtimit (rebalance_v2) . Ky mekanizëm i ri zëvendëson sistemin e vjetër të "ribalancimit" dhe adreson një nga kufizimet e tij kryesore: sistemi tani mund të menaxhojë dhe lëvizë jo vetëm të dhënat e përdoruesit, por edhe metadatat e sistemit të skedarëve.
Rebalance_v2 vepron në mënyrë proaktive dhe automatike. Nëse një disk i ri shtohet në një varg ose ndryshohen opsionet e redundancës, Bcachefs do të fillojë menjëherë të replikojë dhe korrigjojë çdo të dhënë ose meta të dhëna të degraduara, duke përdorur indekse të veçanta për të përcaktuar përparësitë e operacioneve kritike. Kjo siguron që integriteti i sistemit të ruhet edhe gjatë operacioneve intensive të mirëmbajtjes.
Pastrimi i kodit dhe përgatitja kundër ndryshkut
Në brendësi, versioni 1.33.0 sjell një ristrukturim masiv të kodit C për ta bërë atë më të sigurt dhe të pajtueshëm me një implementim të ardhshëm në NdryshkZhvilluesi ka kryer një pastrim të thellë, duke zvogëluar numrin e deklaratave. goto nga 2.500 në vetëm 600, gjë që e thjeshton shumë rrjedhën logjike të programit.
Përveç kësaj, janë prezantuar makro të reja, të tilla si DARRAY() y try()Këto janë projektuar për të imituar sjelljen vektoriale dinamike dhe trajtimin e gabimeve të Rust dhe C++. Kjo jo vetëm që modernizon kodin aktual, por gjithashtu do të lehtësojë transportueshmërinë dhe do të zvogëlojë sipërfaqen e defekteve të memories në të ardhmen.
Fleksibilitet i përmirësuar i diagnostikimit dhe ruajtjes
Duke pasur parasysh administrimin e sistemit, ky version përmirëson në mënyrë drastike qartësinë e mesazheve të gabimit . Bcachefs tani mund të dallojë dhe të komunikojë nëse një dështim është për shkak të një defekti të softuerit apo një problemi fizik të harduerit, madje duke sugjeruar hapat e nevojshëm të rikuperimit. Kjo është jetike për të shmangur diagnozat e gabuara ku sistemi i skedarëve fajësohet për një disk të dëmtuar.
Kjo transparencë shtrihet në disa nivele:
- Gabime të detajuara të I/O: Kur shtresa e bllokut raporton një dështim, Bcachefs tani transmeton kodin specifik (si p.sh.
BLK_STS_IOERR), duke ndihmuar në identifikimin nëse disku fizik është fajtori. - Gabime gjatë montimit: Nëse mungojnë pajisje për të montuar një vëllim, sistemi tani tregon saktësisht se cila njësi mungon, duke treguar emrin dhe modelin e saj bazuar në herën e fundit kur është parë.
- Limitet e shkallës së gabimeve: Kufijtë për gabimet "e buta" (software) dhe "të forta" (hardware) janë ndarë, duke siguruar që një përmbytje gabimesh të vogla të mos maskojë një dështim kritik të diskut.
Për më tepër, komanda bcachefs fs top Është përmirësuar. Numëruesit e brendshëm tani shfaqin shpejtësinë e transferimit të të dhënave në vend të vetëm numrave statikë, duke e bërë shumë më të lehtë lidhjen e ngjarjeve (si p.sh. data_update_fail) me rënie të performancës në kohë reale.
Optimizime në Btrees dhe opsione të reja montimi
Në brendësi, performanca me ngarkesë të lartë përmirësohet falë ndryshimeve në menaxhimin e pemës B. Bashkimi i nyjeve boshe tani ndodh në mënyrë asinkrone, duke eliminuar pengesat e bufferit të shkrimit. Përveç kësaj, është shtuar një kalim opsional rikuperimi. merge_btree_nodes, për të optimizuar manualisht strukturën e pemës nëse është e nevojshme.
Një tjetër veçori shumë praktike e shtuar është aftësia për të nisur një sistem skedarësh me konfigurimin replicas=2 në një disk të vetëmKjo u lejon përdoruesve të fillojnë me një disk të vetëm duke e ditur se sistemi "duhet" të ketë redundancë; sapo të lidhet një disk i dytë, Bcachefs i replikon automatikisht të dhënat pa kërkuar ndërhyrje manuale komplekse.
Së fundmi, vlen të përmendet se versioni i ri, i cili është tashmë i disponueshëm për shpërndarje të tilla si Debian, Fedora, Arch Linux dhe NixOS, kërkon një kernel Linux 6.16 ose më të lartë dhe shpërndahet në dy paketa themelore: moduli i kernelit (bcachefs-kernel-dkms) dhe mjetet e përdoruesit (bcachefs-tools).