Promozione di Bcachefs nel kernel Linux

Kent Overstreet, l'autore del sistema di caching del dispositivo a blocchi BCache SSD, che fa parte del kernel Linux, ha riassunto i risultati del lavoro sulla promozione del file system Bcachefs nel suo discorso alla conferenza LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) nella composizione principale del kernel Linux e ha parlato dei piani per l'ulteriore sviluppo di questo FS. A maggio, è stato proposto un set aggiornato di patch con l'implementazione di Bcachefs FS per la revisione e l'inclusione nella composizione principale del kernel Linux. FS Bcachefs si sviluppa da circa 10 anni. La disponibilità a rivedere l'implementazione di Bcachefs prima dell'inclusione nel core è stata annunciata alla fine del 2020 e l'attuale versione delle patch tiene conto dei commenti e delle carenze individuate durante la revisione precedente.

L'obiettivo di sviluppo di Bcachefs è raggiungere il livello XFS in termini di prestazioni, affidabilità e scalabilità, fornendo al contempo funzionalità aggiuntive inerenti a Btrfs e ZFS, come l'inclusione di più dispositivi in ​​una partizione, layout di archiviazione multistrato, replica (RAID 1/10), memorizzazione nella cache, compressione trasparente dei dati (modalità LZ4, gzip e ZSTD), sezioni di stato (istantanee), verifica dell'integrità tramite checksum, capacità di memorizzare codici di correzione degli errori Reed-Solomon (RAID 5/6), archiviazione crittografata delle informazioni (ChaCha20 e Poly1305 sono usati). In termini di prestazioni, Bcachefs supera Btrfs e altri file system basati sul meccanismo Copy-on-Write e mostra prestazioni vicine a Ext4 e XFS.

Tra gli ultimi risultati nello sviluppo di Bcachefs, si nota la stabilizzazione dell'implementazione delle istantanee disponibili per la scrittura. Rispetto a Btrfs, le istantanee in Bcachefs ora sono scalabili molto meglio e prive dei problemi inerenti a Btrfs. In pratica, il lavoro degli snapshot è stato testato durante l'organizzazione dei backup MySQL. Bcachefs ha anche lavorato molto per migliorare la scalabilità: il file system ha funzionato bene nei test su uno storage da 100 TB e Bcachefs dovrebbe essere implementato in uno storage da 1 PB nel prossimo futuro. È stata aggiunta una nuova modalità nocow per disabilitare il meccanismo "copy-on-write" (nocow). Durante l'estate, hanno in programma di portare a uno stato stabile l'implementazione dei codici di correzione degli errori e RAIDZ, nonché di risolvere i problemi con un elevato consumo di memoria durante il ripristino e il controllo dei file system con l'utilità fsck.

Tra i piani per il futuro, viene menzionato il desiderio di utilizzare il linguaggio Rust nello sviluppo di Bcachefs. Secondo l'autore di Bcachefs, gli piace programmare, non eseguire il debug del codice, e ora è folle scrivere codice in C quando c'è un'opzione migliore. Rust è già coinvolto in Bcachefs nell'implementazione di alcune utilità dello spazio utente. Inoltre, sta nascendo l'idea di riscrivere gradualmente completamente Bcachefs in Rust, poiché l'utilizzo di questo linguaggio consente di risparmiare notevolmente tempo di debug.

Per quanto riguarda lo spostamento di Bcachefs nel mainstream del kernel Linux, il processo di adozione potrebbe essere ritardato a causa delle grandi dimensioni delle modifiche (2500 patch e circa 90mila righe di codice), che è difficile da rivedere. Per accelerare la revisione, alcuni sviluppatori hanno suggerito di suddividere la serie di patch in parti più piccole e logicamente separate. Durante la discussione, alcuni partecipanti hanno inoltre richiamato l'attenzione sullo sviluppo del progetto da parte di uno sviluppatore e sul pericolo che il codice possa rimanere non mantenuto se accadesse qualcosa al suo sviluppatore (due dipendenti di Red Hat sono interessati al progetto, ma il loro lavoro è ancora correzioni di bug limitate).

Bcachefs è sviluppato utilizzando tecnologie già testate nello sviluppo del dispositivo a blocchi Bcache, progettato per memorizzare nella cache l'accesso a dischi rigidi lenti su SSD veloci (inclusi nel kernel dalla versione 3.10). Bcachefs utilizza il meccanismo Copy-on-Write (COW), in cui le modifiche non portano alla sovrascrittura dei dati: il nuovo stato viene scritto in una nuova posizione, dopodiché l'indicatore dello stato corrente cambia.

Una caratteristica di Bcachefs è il supporto per la connessione multistrato di unità, in cui l'archiviazione è composta da diversi livelli: le unità più veloci (SSD) sono collegate al livello inferiore, che viene utilizzato per memorizzare nella cache i dati utilizzati di frequente e i moduli di livello superiore dischi più capienti ed economici che memorizzano i dati meno richiesti. La memorizzazione nella cache di writeback può essere utilizzata tra i livelli. Le unità possono essere aggiunte e scollegate dinamicamente da una partizione senza interrompere l'uso del file system (i dati migrano automaticamente).

Fonte: opennet.ru

Aggiungi un commento