Bcachefs è un file system copy-on-write per sistemi operativi basati su Linux.
Qualche giorno fa Kent Overstreet ha annunciato il rilascio di Bcachefs 1.33.0 , una nuova versione del file system che introduce profondi cambiamenti strutturali nella gestione dei dati e nell'architettura del suo codice sorgente.
Questo aggiornamento si preannuncia come uno dei più significativi degli ultimi due anni, focalizzandosi sull'integrità dei metadati e sulla modernizzazione della base di codice C.
"Reconcile": una nuova era per l'integrità dei dati
La novità più rilevante, descritta come il cambiamento più significativo degli ultimi due anni, è l'introduzione della funzione di riconciliazione (rebalance_v2) . Questo nuovo meccanismo sostituisce il vecchio sistema di "ribilanciamento" e ne risolve una delle principali limitazioni: il sistema ora può gestire e spostare non solo i dati utente, ma anche i metadati del file system.
Rebalance_v2 agisce in modo proattivo e automatico. Se viene aggiunto un nuovo disco a un array o vengono modificate le opzioni di ridondanza, Bcachefs inizierà immediatamente a replicare e correggere eventuali dati o metadati degradati, utilizzando indici separati per dare priorità alle operazioni critiche. Ciò garantisce il mantenimento dell'integrità del sistema anche durante operazioni di manutenzione intensive.
Pulizia del codice e preparazione di Rust
Sotto il cofano, la versione 1.33.0 porta una massiccia ristrutturazione del codice C per renderlo più sicuro e compatibile con una futura implementazione in RuggineLo sviluppatore ha eseguito una pulizia approfondita, riducendo il numero di istruzioni. goto da 2.500 a soli 600, il che semplifica notevolmente il flusso logico del programma.
Inoltre sono state introdotte nuove macro come DARRAY() y try()Sono progettati per imitare il comportamento dinamico dei vettori e la gestione degli errori di Rust e C++. Questo non solo modernizza il codice attuale, ma ne faciliterà anche la portabilità e ridurrà la superficie di errore della memoria in futuro.
Diagnostica migliorata e flessibilità di archiviazione
Pensata per l'amministrazione di sistema, questa versione migliora drasticamente la chiarezza dei messaggi di errore . Bcachefs è ora in grado di distinguere e comunicare se un errore è dovuto a un bug del software o a un problema hardware, suggerendo persino i passaggi di ripristino necessari. Questo è fondamentale per evitare diagnosi errate in cui il file system viene incolpato di un guasto al disco.
Questa trasparenza si estende a diversi livelli:
- Errori I/O dettagliati: Quando il livello di blocco segnala un errore, Bcachefs ora trasmette il codice specifico (ad esempio
BLK_STS_IOERR), aiutando a identificare se il colpevole è il disco fisico. - Errori di assemblaggio: Se mancano dei dispositivi per assemblare un volume, il sistema ora indica esattamente quale unità manca, mostrandone il nome e il modello in base all'ultima volta che è stata visualizzata.
- Limiti del tasso di errore: I limiti per gli errori "soft" (software) e "hard" (hardware) sono stati separati, per garantire che una serie di errori minori non mascherino un guasto critico del disco.
Inoltre, il comando bcachefs fs top È migliorato. I contatori interni ora visualizzano le velocità di trasferimento dati invece di semplici numeri statici, rendendo molto più semplice correlare gli eventi (come data_update_fail) con cali di prestazioni in tempo reale.
Ottimizzazioni in Btrees e nuove opzioni di montaggio
Sotto il cofano, le prestazioni in caso di carichi pesanti sono state migliorate grazie alle modifiche nella gestione del B-tree. L'unione dei nodi vuoti ora avviene in modo asincrono, eliminando i colli di bottiglia del buffer di scrittura. Inoltre, è stato aggiunto un passaggio di ripristino opzionale. merge_btree_nodes, per ottimizzare manualmente la struttura ad albero, se necessario.
Un'altra caratteristica aggiunta molto pratica è la possibilità di avviare un file system con la configurazione replicas=2 su un singolo discoCiò consente agli utenti di iniziare con una singola unità sapendo che il sistema "deve" avere ridondanza; non appena viene collegata una seconda unità , Bcachefs replica automaticamente i dati senza richiedere complessi interventi manuali.
Infine, vale la pena menzionare che la nuova versione, già disponibile per distribuzioni come Debian, Fedora, Arch Linux e NixOS, richiede un kernel Linux 6.16 o superiore ed è distribuita in due pacchetti fondamentali: il modulo del kernel (bcachefs-kernel-dkms) e gli strumenti utente (bcachefs-tools).