Ang Bcachefs ay isang copy-on-write file system para sa Linux-based na mga operating system.
Ilang araw na ang nakalipas, inanunsyo ng Kent Overstreet ang paglabas ng Bcachefs 1.33.0 , isang bagong bersyon ng file system na nagpapakilala ng malalalim na pagbabago sa istruktura sa pamamahala ng datos at sa arkitektura ng source code nito.
Ang update na ito ay inaasahang magiging isa sa pinakamahalaga sa nakalipas na dalawang taon, na nakatuon sa integridad ng metadata at pagmodernize ng C codebase.
"Pagkasundo": Isang bagong panahon para sa integridad ng datos
Ang pinakakapansin-pansing bagong tampok, na inilarawan bilang pinakamahalagang pagbabago sa nakalipas na dalawang taon, ay ang pagpapakilala ng tungkuling Reconciliation (rebalance_v2) . Ang bagong mekanismong ito ay pumapalit sa lumang sistemang "rebalancing" at tinutugunan ang isa sa mga pangunahing limitasyon nito: maaari na ngayong pamahalaan at ilipat ng sistema hindi lamang ang data ng gumagamit kundi pati na rin ang metadata ng file system.
Ang Rebalance_v2 ay kumikilos nang maagap at awtomatiko. Kung ang isang bagong disk ay idinagdag sa isang array o ang mga opsyon sa redundancy ay binago, ang Bcachefs ay agad na magsisimulang kopyahin at itama ang anumang nasirang data o metadata, gamit ang magkakahiwalay na index upang unahin ang mga kritikal na operasyon. Tinitiyak nito na ang integridad ng sistema ay mapapanatili kahit na sa panahon ng masinsinang operasyon ng pagpapanatili.
Paglilinis ng code at paghahanda ng kalawang
Sa ilalim ng hood, ang bersyon 1.33.0 ay nagdadala ng isang malawakang muling pagbubuo ng C code upang gawin itong mas ligtas at tugma sa isang implementasyon sa hinaharap. KalawangNagsagawa ang developer ng malalimang paglilinis, kaya nabawasan ang bilang ng mga pahayag. goto mula 2.500 hanggang 600 na lamang, na lubos na nagpapadali sa lohikal na daloy ng programa.
Bukod pa rito, ipinakilala ang mga bagong macro tulad ng DARRAY() y try()Ang mga ito ay dinisenyo upang gayahin ang dynamic vector behavior at error handling ng Rust at C++. Hindi lamang nito pinapabago ang kasalukuyang code kundi mapapadali rin nito ang portability at mababawasan ang memory fault surface sa hinaharap.
Pinahusay na mga diagnostic at kakayahang umangkop sa imbakan
Dahil isinasaalang-alang ang administrasyon ng sistema, lubos na pinapabuti ng bersyong ito ang kalinawan ng mga mensahe ng error . Maaari na ngayong matukoy at maipabatid ng Bcachefs kung ang isang pagkabigo ay dahil sa isang bug sa software o isang pisikal na problema sa hardware, at maaari pa ngang magmungkahi ng mga kinakailangang hakbang sa pagbawi. Mahalaga ito upang maiwasan ang mga maling pag-diagnose kung saan sinisisi ang file system sa isang nasirang disk.
Ang transparency na ito ay umaabot sa ilang antas:
- Mga detalyadong error sa I/O: Kapag nag-ulat ang block layer ng isang pagkabigo, ipinapadala na ngayon ng Bcachefs ang partikular na code (tulad ng
BLK_STS_IOERR), na tumutulong upang matukoy kung ang pisikal na disk ang salarin. - Mga error sa pag-assemble: Kung may mga nawawalang device para mag-assemble ng volume, eksaktong ipapakita na ngayon ng system kung aling unit ang nawawala, na ipinapakita ang pangalan at modelo nito batay sa huling beses na nakita ito.
- Mga limitasyon sa rate ng error: Pinaghiwalay ang mga hangganan para sa mga error na "malambot" (software) at "matigas" (hardware), na tinitiyak na ang pagbaha ng maliliit na error ay hindi nagtatakip sa isang kritikal na pagkabigo ng disk.
Bukod pa rito, ang utos bcachefs fs top Bumuti na ito. Ipinapakita na ngayon ng mga internal counter ang bilis ng paglilipat ng datos sa halip na mga static na numero lamang, na ginagawang mas madali ang pag-ugnay ng mga kaganapan (tulad ng data_update_fail) na may mga pagbaba ng performance sa real-time.
Mga pag-optimize sa Btrees at mga bagong opsyon sa pag-mount
Sa ilalim ng hood, ang pagganap ng mabibigat na karga ay pinabuti salamat sa mga pagbabago sa pamamahala ng B-tree. Ang pagsasama ng mga walang laman na node ay nangyayari na ngayon nang asynchronous, na nag-aalis ng mga bottleneck sa write buffer. Bukod pa rito, isang opsyonal na recovery pass ang naidagdag. merge_btree_nodes, para manu-manong i-optimize ang istruktura ng puno kung kinakailangan.
Isa pang praktikal na idinagdag na tampok ay ang kakayahang mag-boot ng isang file system gamit ang configuration replicas=2 sa isang discNagbibigay-daan ito sa mga user na magsimula sa iisang drive kahit alam nilang "dapat" may redundancy ang system; sa sandaling maikonekta ang pangalawang drive, awtomatikong kinokopya ng Bcachefs ang data nang hindi nangangailangan ng kumplikadong manu-manong interbensyon.
Panghuli, mahalagang banggitin na ang bagong bersyon, na magagamit na para sa mga distribusyon tulad ng Debian, Fedora, Arch Linux at NixOS, ay nangangailangan ng Linux kernel 6.16 o mas mataas pa at ipinamamahagi sa dalawang pangunahing pakete: ang kernel module (bcachefs-kernel-dkms) at ang mga tool ng gumagamit (bcachefs-tools).