Spodbujanje Bcachefov v jedro Linuxa

Kent Overstreet, avtor sistema za predpomnjenje blokovnih naprav BCache SSD, ki je del jedra Linuxa, je v svojem govoru na konferenci LSFMM 2023 (Linux Storage, Filesystem, Memory Management) povzel rezultate dela na promociji datotečnega sistema Bcachefs. & BPF Summit). v glavno sestavo jedra Linuxa in spregovoril o načrtih za nadaljnji razvoj tega FS. Maja je bil za pregled in vključitev v glavno sestavo jedra Linuxa predlagan posodobljen niz popravkov z implementacijo Bcachefs FS. FS Bcachefs se razvija približno 10 let. Pripravljenost za pregled implementacije Bcachefov pred vključitvijo v jedro je bila objavljena konec leta 2020, trenutna različica popravkov pa upošteva pripombe in pomanjkljivosti, ugotovljene med prejšnjim pregledom.

Razvojni cilj Bcachefs je doseči raven XFS v zmogljivosti, zanesljivosti in razširljivosti, hkrati pa zagotoviti dodatne funkcije, ki so neločljivo povezane z Btrfs in ZFS, kot so vključitev več naprav v particijo, večplastne postavitve pomnilnika, replikacija (RAID 1/10), predpomnjenje, pregledno stiskanje podatkov (načini LZ4, gzip in ZSTD), rezine stanja (posnetki), preverjanje celovitosti s kontrolnimi vsotami, možnost shranjevanja Reed-Solomonovih kod za popravljanje napak (RAID 5/6), šifrirano shranjevanje informacij (ChaCha20 in Poly1305) so uporabljeni). Kar zadeva zmogljivost, je Bcachefs pred Btrfs in drugimi datotečnimi sistemi, ki temeljijo na mehanizmu Copy-on-Write, in prikazuje zmogljivost, ki je blizu Ext4 in XFS.

Od zadnjih dosežkov pri razvoju Bcachefov je treba opozoriti na stabilizacijo izvajanja posnetkov, ki so na voljo za pisanje. V primerjavi z Btrfs so posnetki v Bcachefs zdaj veliko bolje razširljivi in ​​brez težav, ki so značilne za Btrfs. V praksi je bilo delo posnetkov preizkušeno pri organiziranju varnostnih kopij MySQL. Bcachefs je opravil tudi veliko dela za izboljšanje razširljivosti – datotečni sistem se je dobro izkazal pri testiranju v 100 TB pomnilniku, Bcachefs pa naj bi bil v bližnji prihodnosti implementiran v 1 PB pomnilniku. Dodan je bil nov način nocow za onemogočanje mehanizma "kopiraj ob pisanju" (nocow). Poleti nameravajo implementacijo kod za odpravljanje napak in RAIDZ spraviti v stabilno stanje ter rešiti težave z veliko porabo pomnilnika pri obnavljanju in preverjanju datotečnih sistemov s pripomočkom fsck.

Od načrtov za prihodnost je omenjena želja po uporabi jezika Rust pri razvoju Bcachefov. Kot pravi avtor Bcachefs, rad kodira, ne pa odpravlja napake v kodi, in zdaj je noro pisati kodo v C, ko obstaja boljša možnost. Rust je že vključen v Bcachefs pri izvajanju nekaterih pripomočkov za uporabniški prostor. Poleg tega se poraja zamisel, da bi postopoma popolnoma prepisali Bcachefs v Rust, saj uporaba tega jezika znatno prihrani čas za odpravljanje napak.

Kar zadeva premik Bcachefs v glavni tok jedra Linuxa, se lahko postopek sprejemanja zavleče zaradi velikega obsega sprememb (2500 popravkov in približno 90 tisoč vrstic kode), ki jih je težko pregledati. Da bi pospešili pregled, so nekateri razvijalci predlagali razdelitev serije popravkov na manjše in logično ločene dele. Med razpravo so nekateri udeleženci opozorili tudi na razvoj projekta s strani enega razvijalca in na nevarnost, da bi koda ostala nevzdrževana, če bi se njenemu razvijalcu kaj zgodilo (dva zaposlena v Red Hatu se zanimata za projekt, a njuno delo še vedno omejeni popravki napak).

Bcachefs je razvit z uporabo tehnologij, ki so bile že preizkušene pri razvoju blokovne naprave Bcache, zasnovane za predpomnilnik dostopa do počasnih trdih diskov na hitrih SSD (vključeno v jedro od izdaje 3.10). Bcachefs uporablja mehanizem Copy-on-Write (COW), pri katerem spremembe ne vodijo do prepisovanja podatkov – novo stanje se zapiše na novo lokacijo, nakar se indikator trenutnega stanja spremeni.

Posebnost Bcachefs je podpora za večplastno povezovanje diskov, pri kateri je shramba sestavljena iz več plasti – na spodnjo plast so povezani najhitrejši diski (SSD), ki služijo predpomnilniku pogosto uporabljenih podatkov, zgornja plast pa tvori zmogljivejši in cenejši diski, ki hranijo manj zahtevane podatke. Med plastmi se lahko uporablja predpomnjenje povratnega pisanja. Pogone je mogoče dinamično dodajati in odklapljati od particije brez prekinitve uporabe datotečnega sistema (podatki se samodejno selijo).

Vir: opennet.ru

Dodaj komentar