Kent Overstreet a publicat lansarea sistemului de fișiere Bcachefs 1.33.0. Lansarea acoperă două pachete: bcachefs-kernel-dkms, cu un modul de kernel compilat cu ajutorul sistemului DKMS (Dynamic Kernel Module Support), și bcachefs-tools, cu utilitarul bcachefs care rulează în spațiul utilizatorului, implementând comenzi pentru crearea (mkfs), montarea, recuperarea și verificarea FS. Pachetele sunt compilate pentru Debian, Ubuntu, Fedora, openSUSE, NixOS și Arch Linux. Modulul DKMS suportă lucrul cu kernel-uri Linux, începând cu 6.16.
În noua versiune a fost adăugată funcționalitatea „reconcile” (rebalance_v2), marcată ca cea mai mare modificare în FS din ultimii doi ani. Spre deosebire de modul „rebalance” disponibil anterior, mecanismul „reconcile” permite efectuarea de rebalance decât doar a datelor (de exemplu, replicarea mai multor copii pe diferite unități de stocare), ci și a metadatelor în FS (de exemplu, pentru transferul metadatelor după adăugarea unei unități suplimentare în pool). În plus, reconcile este acum aplicabil pentru toate opțiunile de intrare/ieșire, nu doar pentru operațiunile de copiere în fundal și comprimare. De asemenea, în reconcile sunt luate automat în considerare modificările opțiunilor sau setărilor dispozitivelor și datele și metadatele degradate sunt replicate imediat.
În reconcile sunt implicate indecși separați pentru: operațiuni de înaltă prioritate; optimizarea procesării datelor pe unități de stocare; datele planificate pentru procesare, care nu pot fi efectuate momentan (de exemplu, din cauza lipsei de spațiu). A fost adăugată suportul pentru crearea sistemului de fișiere pe o singură unitate în modul cu replicare dublă (replicas=2) — în această configurație, adăugarea unei a doua unități va duce la replicarea automată a datelor pe discul adăugat, fără necesitatea de a efectua vreo acțiune din partea utilizatorului.
Printre alte modificări:
- Au fost adăugate comenzile „reconcile status” și „reconcile wait”. Au fost adăugate opțiunile de montare „mount_trusts_udev” și „writeback_timeout”. Au fost clasificate ca fiind învechite comenzile „data rereplicate”, „data job drop_extra_replicas”.
- A fost adăugat modul de recuperare „merge_btree_nodes”, care verifică toate nodurile din structurile btree care sunt supuse operațiunilor de fuzionare.
- A fost efectuată pregătirea codului pentru tranziția la utilizarea limbajului Rust. Numărul operațiunilor goto utilizate în cod a fost redus de la 2500 la 600. În loc de vectori codificați deschis, este utilizat macro-ul DARRAY(), care oferă funcționalitate asemănătoare cu array-urile dinamice din C++ și Rust. Pentru gestionarea erorilor, este utilizat macro-ul try(), împrumutat din Rust.
- În echipa „bcachefs fs usage”, a fost asigurată informarea corectă cu privire la datele degradate.
- A fost reproiectată gestionarea contoarelor afișate de comanda „bcachefs fs top”. A fost simplificată adăugarea de noi contoare și implementată posibilitatea de a transforma punctele de urmărire (tracepoint) în buffer-e de ieșire (printbufs).
- Calitatea mesajelor de eroare a fost îmbunătățită, acestea incluzând acum informații despre tipurile de eșecuri (software sau hardware), acțiunile pentru remedierea erorilor (de exemplu, lansarea procesului de recuperare), codurile de eroare de intrare/ieșire primite de la dispozitivele blocate, și dispozitivele lipsă. În timpul scanării structurilor btree, a fost asigurată afișarea informațiilor despre posibila recuperare a nodurilor problematice.
- A fost adăugată posibilitatea definirii separate a limitelor pentru intensitatea ieșirii diferitelor tipuri de erori atunci când se scrie în jurnal. Aceste limite ajută la prevenirea pierderii mesajelor despre probleme hardware unice în contextul unui număr mare de mesaje despre erori software.
- Indicatori de progres au fost adăugați pentru toate etapele de recuperare.
Proiectul Bcachefs dezvoltă un sistem de fișiere destinat combinării funcționalităților avansate caracteristice Btrfs și ZFS cu nivelul de performanță, fiabilitate și scalabilitate specific XFS. Bcachefs suportă funcții precum agregarea mai multor dispozitive într-un volum, aranjamente multilayer pentru medii de stocare (stratul de bază cu date utilizate frecvent pe SSD-uri rapide, iar stratul superior cu date mai puțin accesate pe hard disk-uri), replicare (RAID 1/10), caching, compresie transparentă a datelor (moduri LZ4, gzip și ZSTD), instantanee (snapshots), verificarea integrității prin checksum-uri, stocarea codurilor de corecție a erorilor Reed-Solomon (RAID 5/6), și stocarea informațiilor în formă criptată (utilizând ChaCha20 și Poly1305). În ceea ce privește performanța, Bcachefs depășește Btrfs și alte sisteme de fișiere bazate pe mecanismul Copy-on-Write și demonstrează viteze de operare comparabile cu Ext4 și XFS.
Sursa: opennet.ro
