Promovimi i Bcachefs në kernel Linux

Kent Overstreet, autori i sistemit të ruajtjes së pajisjes së bllokut BCache SSD, i cili është pjesë e kernelit Linux, në fjalimin e tij në konferencën LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) përmblodhi rezultatet e punës për promovimin sistemin e skedarëve Bcachefs në përbërjen kryesore të kernelit Linux dhe foli për planet për zhvillimin e mëtejshëm të këtij sistemi skedarësh. Në maj, një grup i përditësuar arnimesh me zbatimin e Bcachefs FS u propozua për rishikim dhe përfshirje në përbërjen kryesore të kernelit Linux. FS Bcachefs është zhvilluar për rreth 10 vjet. Gatishmëria për rishikimin e zbatimit të Bcachefs përpara përfshirjes në bërthamë u njoftua në fund të vitit 2020, dhe versioni aktual i arnimeve merr parasysh komentet dhe mangësitë e identifikuara gjatë rishikimit të mëparshëm.

Qëllimi i zhvillimit të Bcachefs është arritja e nivelit XFS në performancë, besueshmëri dhe shkallëzim, ndërkohë që ofron veçori shtesë të qenësishme në Btrfs dhe ZFS, si p.sh. përfshirja e pajisjeve të shumta në një ndarje, paraqitjet e ruajtjes me shumë shtresa, përsëritja (RAID 1/10), caching, kompresim transparent të të dhënave (modalitetet LZ4, gzip dhe ZSTD), pjesët e gjendjes (fotografitë), verifikimi i integritetit me kontrolle, aftësia për të ruajtur kodet e korrigjimit të gabimit Reed-Solomon (RAID 5/6), ruajtja e koduar e informacionit (ChaCha20 dhe Poly1305 përdoren). Për sa i përket performancës, Bcachefs është përpara Btrfs dhe sistemeve të tjera të skedarëve të bazuar në mekanizmin Copy-on-Write dhe demonstron performancë afër Ext4 dhe XFS.

Nga arritjet më të fundit në zhvillimin e Bcachefs, vihet re stabilizimi i zbatimit të fotografive të disponueshme për shkrim. Krahasuar me Btrfs, fotografitë në Bcachef tani janë shumë më mirë të shkallëzueshme dhe të lira nga problemet e qenësishme të Btrfs. Në praktikë, puna e fotografive u testua gjatë organizimit të kopjeve rezervë të MySQL. Bcachefs ka bërë gjithashtu shumë punë për të përmirësuar shkallëzueshmërinë - sistemi i skedarëve ka performuar mirë në testimin e magazinimit 100 TB dhe Bcachefs pritet të zbatohet në ruajtje 1 PB në të ardhmen e afërt. Një modalitet i ri nocow është shtuar për të çaktivizuar mekanizmin "kopjimi në shkrim" (nocow). Gjatë verës, ata planifikojnë të sjellin zbatimin e kodeve të korrigjimit të gabimeve dhe RAIDZ në një gjendje të qëndrueshme, si dhe të zgjidhin problemet me konsumin e lartë të memories gjatë rivendosjes dhe kontrollit të sistemeve të skedarëve me mjetin fsck.

Nga planet për të ardhmen përmendet dëshira për të përdorur gjuhën Rust në zhvillimin e Bcachefs. Sipas autorit të Bcachefs, atij i pëlqen të kodojë, jo të korrigjojë kodin, dhe tani është çmenduri të shkruaj kodin në C kur ka një opsion më të mirë. Rust është përfshirë tashmë në Bcachefs në zbatimin e disa prej shërbimeve të hapësirës së përdoruesit. Për më tepër, ideja po krijohet për të rishkruar gradualisht Bcachefs në Rust, pasi përdorimi i kësaj gjuhe kursen ndjeshëm kohën e korrigjimit.

Sa i përket zhvendosjes së Bcachef-ve në rrjedhën kryesore të kernelit Linux, procesi i miratimit mund të vonohet për shkak të madhësisë së madhe të ndryshimeve (2500 arna dhe rreth 90 mijë rreshta kodi), gjë që është e vështirë të rishikohet. Për të përshpejtuar rishikimin, disa zhvillues kanë sugjeruar ndarjen e serisë së patch-it në pjesë më të vogla dhe më të ndara logjikisht. Gjatë diskutimit, disa pjesëmarrës gjithashtu tërhoqën vëmendjen për zhvillimin e projektit nga një zhvillues dhe rrezikun që kodi mund të lihet i pambajtur nëse diçka do t'i ndodhte zhvilluesit të tij (dy punonjës të Red Hat janë të interesuar për projektin, por puna e tyre është ende rregullime të kufizuara të gabimeve).

Bcachefs është zhvilluar duke përdorur teknologji tashmë të testuara në zhvillimin e pajisjes së bllokut Bcache, e krijuar për të memorizuar aksesin në hard disqet e ngadaltë në disqet e shpejtë SSD (të përfshira në kernel që nga lëshimi 3.10). Bcachefs përdor mekanizmin Copy-on-Write (COW), në të cilin ndryshimet nuk çojnë në mbishkrimin e të dhënave - gjendja e re shkruhet në një vendndodhje të re, pas së cilës treguesi i gjendjes aktuale ndryshon.

Një veçori e Bcachefs është mbështetja për lidhje me shumë shtresa të disqeve, në të cilat ruajtja përbëhet nga disa shtresa - disqet më të shpejtë (SSD) janë të lidhura me shtresën e poshtme, të cilat përdoren për të ruajtur në memorien e të dhënave të përdorura shpesh, dhe formohet shtresa e sipërme. disqe më të gjerë dhe më të lirë që ruajnë të dhëna më pak të kërkuara. Memoria e memories së shkrimit mund të përdoret midis shtresave. Disqet mund të shtohen në mënyrë dinamike dhe të shkëputen nga një ndarje pa ndërprerë përdorimin e sistemit të skedarëve (të dhënat migrojnë automatikisht).

Burimi: opennet.ru

Shto një koment