Kent Overstreet ha pubblicato la versione del file system Bcachefs 1.38.6 e ha annunciato l'ufficiale rimozione del progetto dall'etichetta 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, compilato con il sistema DKMS (Dynamic Kernel Module Support), e bcachefs-tools con l'utilità bcachefs, eseguita nello spazio utente, che implementa comandi per la creazione (mkfs), il montaggio, il ripristino e la verifica del file system. I pacchetti sono compilati per Debian, Ubuntu, Arch Linux e sono attesi 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. Nel codice per lavorare con le strutture nel formato btree, la registrazione e il funzionamento del file system sono stati apportati circa 200 cambiamenti, che migliorano le prestazioni. La logica di conferma delle transazioni è stata compressa in 4KB di codice macchina, sono state aggiunte ottimizzazioni per escludere l'insorgere di blocchi concorrenti (
A server con una CPU AMD a 48 core, in Bcachefs è stata ottenuta una larghezza di banda di 16,5 GB/s eseguendo 48 client dbench (per confronto, XFS ha raggiunto un risultato di 16 GB/s). Sono stati preparati, ma rinviati al prossimo rilascio, patch che portano le prestazioni nei test dbench a 19 GB/s (queste patch richiedono ulteriori test o modifiche al formato del disco). Durante il test con l'utilità fio, le prestazioni di Bcachefs sono state di 700 operazioni al secondo durante l'esecuzione di operazioni di scrittura casuale con blocchi da 4 kilobyte (XFS dimostra in questo test un milione di operazioni al secondo, nonostante XFS sia limitata dal remapping dei blocchi, mentre Bcachefs gestisce l'intero ciclo CoW (Copy-on-Write) con verifica dei checksum e aggiornamento della struttura btree).
Oltre alle ottimizzazioni, nella versione Bcachefs 1.38.6 è stata implementata la possibilità di collegare fino a 255 dispositivi a un singolo FS. Nel repository apt.bcachefs.org è iniziata la formazione dei pacchetti per Ubuntu 26.04. L'infrastruttura di integrazione continua e testing automatizzato è stata trasferita al controllo delle build basato su DKMS. Nei prossimi mesi si prevede di concentrarsi sull'ottimizzazione delle prestazioni del file system con più dispositivi di archiviazione.
Inoltre, continua il lavoro di riscrittura del codice in Rust. Si segnala che il supporto per Rust nel kernel ha raggiunto un punto di svolta: tutte le principali distribuzioni, durante la creazione dei pacchetti con il kernel 7.0, hanno attivato per default l'impostazione CONFIG_RUST per la compilazione del kernel con supporto per Rust. Nel progetto Bcachefs, un insieme di utility è già stato riscritto in Rust.
bcachefs-tools, eseguito nello spazio utente, incluso l'implementazione di API per lavorare con le strutture btree. Nella prossima release si prevede di integrare i wrapper preparati in Rust nel modulo DKMS del kernel e di iniziare la riscrittura del codice di base di Bcachefs. Si prevede che l'uso di Rust aumenti la flessibilità, la stabilità e la facilità d'uso del codice, rendendo il progetto più interessante per i giovani ingegneri e permettendo in futuro di implementare una verifica formale dell'affidabilità.
Il progetto Bcachefs sviluppa un file system mirato a combinare l'estesa funzionalità tipica di Btrfs e ZFS con il livello di prestazioni, affidabilità e scalabilità caratteristico di XFS. Bcachefs supporta funzionalità come l'inclusione di più dispositivi in una partizione, layout a più livelli dei dischi (uno strato inferiore con i dati frequentemente utilizzati su SSD veloci e uno strato superiore con dati meno richiesti da hard disk), replica (RAID 1/10), caching, compressione dei dati trasparente (modalità LZ4, gzip e ZSTD), snapshot, verifica dell'integrità mediante checksum, codici di correzione degli errori, memorizzazione delle informazioni in forma crittografata (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 la riequilibratura non solo dei dati (ad esempio, replicando più copie su diversi dispositivi), ma anche dei metadati nel FS (ad esempio, per spostare i metadati dopo aver aggiunto un dispositivo al pool). Reconcile è applicabile a tutte le operazioni di input/output, non solo a quelle di copia e compressione in background. In reconcile vengono automaticamente considerati i cambiamenti nelle impostazioni dei dispositivi e i dati e metadati degradati vengono immediatamente ripristinati.
- Supporto ai codici di correzione degli errori, che consentono di recuperare dati danneggiati in modo simile a RAID 5/6. L'implementazione si basa sulla codifica di Reed-Solomon, capace di correggere fino a N errori in uno stripe (stripe) in presenza di N blocchi ridondanti. È garantito il ripristino automatico degli stripe degradati. La possibilità di applicare i codici di ripristino è utilizzabile in configurazioni con dispositivi di dimensioni diverse.
Fonte: opennet.ru
