Kent Overstreet közzétette a Bcachefs 1.33.0 fájlrendszer kiadását. A kiadás két csomagot ölel fel: a bcachefs-kernel-dkms-t, amely egy DKMS (Dynamic Kernel Module Support) rendszerrel épülő kernelmodult tartalmaz, és a bcachefs-tools-t, amely a felhasználói térben futó bcachefs segédprogramot valósítja meg, parancsokkal a fájlrendszer létrehozására (mkfs), csatolására, helyreállítására és ellenőrzésére. A csomagok Debian, Ubuntu, Fedora, openSUSE, NixOS és Arch Linux rendszerekhez készültek. A DKMS modul támogatja a Linux kernel 6.16-os verziójától kezdődően.
Az új verzióban hozzáadódott a „reconcile” (rebalance_v2) funkció, amelyet az utolsó két év legnagyobb változásaként említenek a fájlrendszerben. A korábban elérhető „rebalance” móddal ellentétben a „reconcile” mechanizmus lehetővé teszi a nemcsak az adatok (például több másolat replikálása különböző tárolókra), hanem a fájlrendszerben lévő metaadatok rebalance-át is (például új tároló hozzáadása után a metaadatok áthelyezését). Ezenkívül a reconcile mostantól minden bemeneti/kimeneti opcióra alkalmazható, nem csak háttérmásolásra és tömörítésre. A reconcile-ban automatikusan figyelembe veszik az eszközbeállítások vagy opciók változásait, és azonnal újra replikálják a degradálódott adatokat és metaadatokat.
A reconcile során külön indexek működnek: magas prioritású műveletekhez; az adatok feldolgozásának optimalizálásához a lemezen található tárolókban; a feldolgozásra tervezett adatokhoz, amelyek jelenleg nem végezhetők el (például helyhiány miatt). Megtörtént a fájlrendszer létrehozásának támogatása egyetlen tárolón a kettős replikációval (replicas=2) — ebben a konfigurációban a második tároló hozzáadásának automatikus replikálásához vezet az újonnan hozzáadott lemezre, anélkül, hogy a felhasználónak bármilyen műveletet kellene végeznie.
A többi változás között:
- Hozzáadva a „reconcile status” és „reconcile wait” parancsokat. Hozzáadták a „mount_trusts_udev” és „writeback_timeout” csatolási opciókat. A „data rereplicate” és „data job drop_extra_replicas” parancsok elavultnak minősülnek.
- Hozzáadva a „merge_btree_nodes” helyreállítási mód, amely ellenőrzi az összes btree-struktúrába tartozó csomópontot, amelyek a fúziós műveletek alá tartoznak.
- A kód felkészítése megtörtént a Rust nyelvre való áttéréshez. A kódban használt goto műveletek száma 2500-ról 600-ra csökkent. Az előre kódolt vektorok helyett a DARRAY() makrót használták, amely funkciójában hasonlít a C++ és Rust dinamikus tömbjeire. A hibák kezelésére a Rust-ból kölcsönzött try() makrót használták.
- A csapat „bcachefs fs usage” parancsánál helyes tájékoztatás biztosított a degradálódott adatokkal kapcsolatban.
- A „bcachefs fs top” parancs által megjelenített számlálók kezelése átdolgozásra került. Egyszerűsítették az új számlálók hozzáadását, és megvalósították a tracepointok printbufs-ba való konvertálásának lehetőségét.
- Fokozották a hibaüzenetek minőségét, amelyek most tartalmazzák a hibák típusára vonatkozó információkat (szoftveres vagy hardveres), a hiba elhárításához szükséges intézkedéseket (például a helyreállítási folyamat elindítását), a blokkeszközöktől kapott bemeneti/kimeneti hiba kódokat, és az eltűnt eszközöket. Az btree struktúrák átvizsgálásakor információkat biztosítanak a hibás csomópontok helyreállításának lehetőségéről.
- A naplózás során lehetőséget adtak különböző hibatípusok kibocsátásának intenzitásának határértékeinek elkülönített meghatározására. Az ilyen határértékek megakadályozzák az egyedi hardverproblémákkal kapcsolatos üzenetek elvesztését a számos szoftveres hibaüzenet közepette.
- Minden helyreállítási szakaszhoz progressziós indikátorokat adtak hozzá.
A Bcachefs projekt egy fájlrendszer fejlesztésére irányul, amely a Btrfs és ZFS által jellemzett kiterjedt funkcionalitás ötvözésére, valamint az XFS-re jellemző teljesítmény, megbízhatóság és skálázhatóság szintjére összpontosít. A Bcachefs támogatja az olyan lehetőségeket, mint a több eszközre történő kiterjesztés, a tárolók több rétegű elrendezése (az alsó réteg gyors SSD-alapú, gyakran használt adatokkal, míg a felső réteg merevlemezen tárolt, kevésbé keresett adatokkal), replikáció (RAID 1/10), gyorsítótárazás, átlátszó adatkompresszió (LZ4, gzip és ZSTD módok), állapotpillanatképek (snapshotok), integritás-ellenőrzés ellenőrző összegek alapján, a Reed-Solomon hibajavító kódok tárolásának lehetősége (RAID 5/6), és az információk titkosított formában történő tárolása (a ChaCha20 és Poly1305 algoritmusokat alkalmazva). Teljesítményében a Bcachefs megelőzi a Btrfs-t és más másoláson alapuló fájlrendszereket, és az Ext4-hez és az XFS-hez közeli sebességet mutat.
Forrás: opennet.ru
