Bcachefs 1.33: Diagnosticare avansată, metrici în timp real și optimizare Btree

Puncte cheie:
  • Mesaje de eroare detaliate: explicați cauza, tipul (hard/soft) și soluția.
  • bcachefs fs top afișează acum viteze de transfer în timp real.
  • Fuziune asincronă a nodurilor Btree pentru îmbunătățirea performanței sub sarcină
  • Noi opțiuni mount_trusts_udev și writeback_timeout.
  • Reducere masivă a numărului de goto în cod (de la 2500 la 600) pentru pregătirea sosirii lui Rust.
bcachefs

Bcachefs este un sistem de fișiere copy-on-write pentru sistemele de operare bazate pe Linux.

Acum cateva zile Kent Overstreet a anunțat lansarea versiunii Bcachefs 1.33.0 printr-un anunț., o nouă versiune a sistemului de fișiere care introduce schimbări structurale profunde în gestionarea datelor și în arhitectura codului său sursă.

Această actualizare se anunță a fi una dintre cele mai semnificative din ultimii doi ani, concentrându-se pe integritatea metadatelor și modernizarea bazei de cod C.

„Reconciliere”: O nouă eră pentru integritatea datelor

Cea mai notabilă caracteristică nouă, descrisă ca fiind cea mai semnificativă schimbare din ultimii doi ani, este introducerea funcției de Reconciliere (rebalance_v2)Acest nou mecanism înlocuiește vechiul sistem de „reechilibrare” și rezolvă una dintre cele mai mari limitări ale acestuia: acum sistemul poate gestiona și muta nu doar datele utilizatorilor, ci și metadatele sistemului de fișiere.

Rebalance_v2 acționează proactiv și automat. Dacă un disc nou este adăugat la o matrice sau opțiunile de redundanță sunt modificate, Bcachefs va începe imediat replicarea și corectarea oricăror date sau metadate degradate, utilizând indexuri separate pentru a prioritiza operațiunile critice. Acest lucru asigură menținerea integrității sistemului chiar și în timpul operațiunilor intensive de întreținere.

Curățare de cod și pregătire împotriva ruginii

Sub capotă, versiunea 1.33.0 aduce o restructurare masivă a codului C pentru a-l face mai sigur și compatibil cu o implementare viitoare în RuginăDezvoltatorul a efectuat o curățare profundă, reducând numărul de instrucțiuni. goto de la 2.500 la doar 600, ceea ce simplifică foarte mult fluxul logic al programului.

În plus, au fost introduse noi macrocomenzi, cum ar fi DARRAY() y try()Acestea sunt concepute pentru a imita comportamentul vectorial dinamic și gestionarea erorilor din Rust și C++. Acest lucru nu numai că modernizează codul actual, dar va facilita și portabilitatea și va reduce suprafața erorilor de memorie în viitor.

Diagnosticare îmbunătățită și flexibilitate de stocare

Având în vedere administrarea sistemului, această versiune îmbunătățește drastic claritatea mesajelor de eroareBcachefs poate acum să distingă și să comunice dacă o eroare se datorează unei erori software sau unei probleme hardware fizice, sugerând chiar pașii necesari de recuperare. Acest lucru este vital pentru a evita diagnosticările greșite în care sistemul de fișiere este acuzat pentru un disc defect.

Această transparență se extinde la mai multe niveluri:

  • Erori I/O detaliate: Când stratul de bloc raportează o eroare, Bcachefs transmite acum codul specific (cum ar fi BLK_STS_IOERR), ajutând la identificarea dacă discul fizic este vinovatul.
  • Erori de asamblare: Dacă lipsesc dispozitive pentru asamblarea unui volum, sistemul indică acum exact ce unitate lipsește, afișând numele și modelul acesteia în funcție de ultima dată când a fost detectată.
  • Limitele ratei de eroare: Limitele pentru erorile „soft” (software) și „hard” (hardware) au fost separate, asigurându-se că o serie de erori minore nu maschează o defecțiune critică a discului.

În plus, comanda bcachefs fs top S-a îmbunătățit. Contoarele interne afișează acum viteze de transfer de date în loc de doar numere statice, ceea ce face mult mai ușoară corelarea evenimentelor (cum ar fi data_update_fail) cu scăderi de performanță în timp real.

Optimizări în Btrees și noi opțiuni de montare

Sub capotă, performanța la sarcini mari este îmbunătățită datorită modificărilor aduse gestionării arborelui B. Îmbinarea nodurilor goale are loc acum asincron, eliminând blocajele din bufferul de scriere. În plus, a fost adăugată o trecere opțională de recuperare. merge_btree_nodes, pentru a optimiza manual structura arborescentă, dacă este necesar.

O altă caracteristică adăugată foarte practică este posibilitatea de a porni un sistem de fișiere cu configurația replicas=2 pe un singur discAcest lucru permite utilizatorilor să înceapă cu o singură unitate știind că sistemul „trebuie” să aibă redundanță; imediat ce este conectată o a doua unitate, Bcachefs replică automat datele fără a necesita intervenții manuale complexe.

În sfârșit, merită menționat că noua versiune, acum disponibilă Pentru distribuții precum Debian, Fedora, Arch Linux și NixOS, această actualizare necesită un kernel Linux 6.16 sau o versiune ulterioară și este distribuită în două pachete fundamentale: modulul kernel (bcachefs-kernel-dkms) și instrumentele utilizatorului (bcachefs-tools).