Kent Overstreet ha pubblicato la versione 1.38.6 del file system Bcachefs e ha annunciato il ritiro ufficiale del progetto dalla fase di sviluppo sperimentale. Negli ultimi tempi, il numero di segnalazioni di problemi è diminuito, e gli errori riscontrati sono diventati meno gravi e complessi.
Il rilascio comprende due pacchetti: bcachefs-kernel-dkms, con il modulo del kernel costruito tramite DKMS (Dynamic Kernel Module Support), e bcachefs-tools, un'utilità in user space che implementa comandi per creare (mkfs), montare, ripristinare e verificare il file system. I pacchetti sono stati compilati per Debian, Ubuntu, Arch Linux e sono in attesa per Fedora, openSUSE e NixOS. Il modulo DKMS supporta il funzionamento con i kernel Linux a partire dalla versione 6.16.
Nonostante il numero di versione poco significativo, dovuto all'assenza di modifiche nel formato del disco, il rilascio 1.38.6 include una serie di importanti ottimizzazioni delle prestazioni. Sono stati apportati circa 200 cambiamenti al codice relativo alla gestione delle strutture in formato btree, al logging e al funzionamento del file system, migliorando così le prestazioni. La logica di conferma delle transazioni è stata ridotta a 4 KB di codice macchina, e sono state implementate ottimizzazioni per eliminare la comparsa di conflitti di lock durante l'uso di btree, mentre il processo di flush del journal è stato completamente liberato da lock.
Su server Con una CPU AMD a 48 core, Bcachefs ha raggiunto una larghezza di banda di 16,5 GB/s eseguendo 48 client dbench (rispetto a 16 GB/s ottenuti con XFS). Sono stati preparati, ma rimandati al prossimo rilascio, patch che portano le prestazioni nei test dbench a 19 GB/s (queste patch necessitano di ulteriori test o modifiche al formato del disco). Durante il test con l'utility fio, le prestazioni di Bcachefs hanno raggiunto 700 operazioni al secondo eseguendo operazioni di scrittura casuale con blocchi di 4 KB (XFS mostra in questo test un milione di operazioni al secondo, mentre XFS è limitato dal rimappamento dei blocchi e Bcachefs gestisce l'intero ciclo di CoW (Copy-on-Write) con verifica dell'integrità e aggiornamento della struttura btree).
Oltre alle ottimizzazioni della versione 1.38.6 di Bcachefs, è stata implementata la possibilità di collegare fino a 255 dispositivi a un singolo file system. È iniziata la creazione di pacchetti per Ubuntu 26.04 nel repository apt.bcachefs.org. L'infrastruttura di integrazione continua e di test automatizzati è stata aggiornata per controllare le build basate su DKMS. Nei prossimi mesi, ci si concentrerà sull'ottimizzazione delle prestazioni del file system con più dispositivi di storage.
Inoltre, continua il lavoro di riscrittura del codice in Rust. È segnalato che il supporto per Rust nel kernel ha raggiunto un traguardo significativo: tutte le principali distribuzioni hanno attivato per default l'opzione CONFIG_RUST per la compilazione del kernel con supporto Rust nella versione 7.0. Nel progetto Bcachefs, è già stato riscritto un insieme di utility in Rust.
bcachefs-tools, eseguito nello spazio utente, include l'implementazione dell'API per lavorare con le strutture btree. Nel prossimo rilascio, è previsto l'integrazione dei wrapper sviluppati in Rust nel modulo DKMS del kernel e l'inizio della riscrittura del codice di base di Bcachefs. Si prevede che l'uso di Rust aumenterà la flessibilità, la stabilità e la facilità d'uso del codice, rendendo il progetto più interessante per i giovani ingegneri e permettendo in futuro l'implementazione della verifica formale dell'affidabilità.
Il progetto Bcachefs sviluppa un file system pensato per combinare la funzionalità avanzata tipica di Btrfs e ZFS con livelli di prestazioni, affidabilità e scalabilità caratteristici di XFS. Bcachefs supporta funzionalità come l'attivazione di più dispositivi in una sezione, layout di storage multilivello (uno strato per i dati frequentemente utilizzati basato su SSD veloci e uno strato superiore per i dati meno richiesti provenienti da dischi rigidi), replica (RAID 1/10), caching, compressione dei dati trasparente (modalità LZ4, gzip e ZSTD), istantanee di stato (snapshot), verifica dell'integrità tramite checksum, codici di correzione degli errori e archiviazione di informazioni in forma cifrata (utilizzando ChaCha20 e Poly1305).
Tra le importanti novità aggiunte a Bcachefs negli ultimi mesi, si segnalano:
- Il meccanismo "reconcile" (rebalance_v2), che a differenza della modalità "rebalance" consente di eseguire il bilanciamento non solo dei dati (ad esempio, replicando copie su diversi dispositivi), ma anche dei metadati nel filesystem (ad esempio, per trasferire metadati dopo l'aggiunta di un dispositivo al pool). Reconcile è applicabile a tutte le operazioni di input/output, e non solo a quelle di copia in background e compressione. In reconcile, le modifiche delle impostazioni dei dispositivi sono automaticamente considerate e i dati e i metadati degradati vengono immediatamente replicati nuovamente.
- Supporto per codici di correzione degli errori che consentono di ripristinare dati danneggiati simile a RAID 5/6. L'implementazione si basa sul codifica Reed-Solomon, in grado di correggere fino a N errori nello stripe in presenza di N blocchi ridondanti. È garantito il recupero automatico degli stripe degradati. La possibilità di applicare i codici di recupero è utilizzabile in configurazioni con unità di diversa dimensione.
Fonte: opennet.ru
