Kent Overstreet, a Linux kernelbe integrált BCache SSD blokk- cache rendszer szerzője, a 2023-as LSFMM konferencián (Linux Storage, Filesystem, Memory Management & BPF Summit) összefoglalta a Bcachefs fájlrendszer kernelbe juttatásával kapcsolatos munkák eredményeit, valamint a jövőbeli fejlesztési terveket. Májusban egy frissített patch csomagot javasoltak a Bcachefs fájlrendszer kernelbe való beillesztésére és felülvizsgálatára. Az Bcachefs fájlrendszer már körülbelül 10 éve fejlődik. A Bcachefs megvalósításának felülvizsgálatáról már 2020 végén bejelentették, és a jelenlegi patch változat figyelembe veszi a korábbi felülvizsgálat során felmerült megjegyzéseket és hibákat.
A Bcachefs fejlesztésének célja, hogy elérje az XFS teljesítmény-, megbízhatósági és skálázhatósági szintjét, emellett olyan további lehetőségeket kínál, amelyek a Btrfs és a ZFS jellemzői, mint például több eszköz közötti megosztás, többrétegű tárolási megoldások, replikáció (RAID 1/10), gyorsítótárazás, átlátható adatkompresszió (LZ4, gzip és ZSTD üzemmódok), állapotképek (snapshotok), integritás-ellenőrzés ellenőrzőösszegekkel, Reed-Solomon hibajavító kódok tárolása (RAID 5/6), titkosított tárolás (ChaCha20 és Poly1305 használatával). Teljesítmény tekintetében a Bcachefs megelőzi a Btrfs-t és más, Copy-on-Write mechanizmuson alapuló fájlrendszereket, és teljesítménye közel van az Ext4-hez és az XFS-hez.
A legfrissebb Bcachefs fejlesztési eredmények között megemelendő a rögzített, írásra elérhető pillanatképek stabilizálása. A Btrfs-hez képest a Bcachefs pillanatképei most jelentősen jobban skálázhatók, és mentesek a Btrfs-re jellemző problémáktól. A pillanatképek funkcióját a MySQL mentési megoldásainál tesztelték. A Bcachefs esetében jelentős munkát végeztek a skálázhatóság javítása érdekében — a fájlrendszer jól teljesített a 100 TB méretű tárolók tesztelése során, és a közeljövőben várhatóan 1 PB méretű tárolókban is bevezetésre kerül. Új nocow mód került hozzáadásra a „copy-on-write” mechanizmus kikapcsolására (nocow). A nyár folyamán azon dolgoznak, hogy stabil állapotba hozzák a hibajavító kódok és a RAIDZ megvalósítását, valamint kezeljék a fsck segédprogram használatakor tapasztalt magas memóriaköltségeket helyreállításkor és ellenőrzéskor.
A jövőbeni tervek között szerepel, hogy a Bcachefs fejlesztéséhez Rust nyelvet kívánnak használni. A Bcachefs szerzője szerint ő inkább programozni szeret, mintsem hibákat keresni, és most már őrültségnek tartja, hogy C nyelven írjon kódot, mikor van jobb megoldás. A Rust már használatban van a Bcachefs-ben néhány, felhasználói térben futó segédprogram megvalósításában. Többek között az is felmerült, hogy fokozatosan teljesen átírják a Bcachefs-t Rust nyelvre, mivel ennek a nyelvnek a használata jelentősen csökkenti a hibaelhárításhoz szükséges időt.
A Bcachefs Linux kernelbe való beemelésének előmozdításával kapcsolatban a folyamat elhúzódhat a jelentős méretű változtatások miatt (2500 javítócsomag és körülbelül 90 ezer sor kód), amelyeket nehéz áttekinteni. A gyorsabb véleményezés érdekében néhány fejlesztő javasolta, hogy a javítócsomagokat kisebb, logikailag elhatárolt részekre bontsák. A megbeszélés során egyes résztvevők arra is felhívták a figyelmet, hogy a projekt egyetlen fejlesztő általi fejlődése aggasztó, mivel fennáll annak a veszélye, hogy a kód támogatás nélkül maradhat, ha a fejlesztővel bármi történik (a projekt iránt két Red Hat munkatárs is érdeklődik, de munkájuk egyelőre a hibák javítására korlátozódik).
A Bcachefs a már létező technológiákra épít, amelyeket a Bcache blokkeszköz fejlesztése során használtak, amely a lassú merevlemezek gyors SSD-meghajtókon való gyorsítótárazására szolgál (a 3.10-es kiadástól kezdve bekerült a kernelbe). A Bcachefs a Copy-on-Write (COW) mechanizmust alkalmazza, amely során a módosítások nem írják felül az adatokat — az új állapot új helyre íródik, majd az aktuális állapot hivatkozása megváltozik.
A Bcachefs egyik jellemzője a többrétegű tárolók csatlakozásának támogatása, ahol a tároló több rétegből áll — az alsó réteghez a leggyorsabb tárolók (SSD) csatlakoznak, amelyeket a gyakran használt adatok gyorsítótárazására használnak, míg a felső réteg nagyobb kapacitású és olcsóbb lemezekből áll, amelyek a kevésbé keresett adatok tárolásáért felelnek. A rétegek között késleltetett írási módú gyorsítótárazás (writeback) alkalmazható. A tárolók dinamikusan hozzáadhatók és eltávolíthatók a partícióról a fájlrendszer használatának leállítása nélkül (az adatok automatikusan migrálnak).
Forrás: opennet.ru
