Kent Overstreet ha pubblicato la versione 1.33.0 del file system Bcachefs. Il rilascio comprende due pacchetti: bcachefs-kernel-dkms con il modulo del kernel, costruito con il sistema DKMS (Dynamic Kernel Module Support), e bcachefs-tools con l'utilità bcachefs eseguita in spazio utente, che implementa comandi per la creazione (mkfs), il montaggio, il ripristino e la verifica del FS. I pacchetti sono stati compilati per Debian, Ubuntu, Fedora, openSUSE, NixOS e Arch Linux. Il modulo DKMS supporta il funzionamento con i kernel Linux a partire dalla versione 6.16.
Nella nuova versione è stata aggiunta la funzionalità "reconcile" (rebalance_v2), contrassegnata come il più grande cambiamento negli ultimi due anni nel file system. A differenza della modalità "rebalance" precedentemente disponibile, il meccanismo "reconcile" consente di eseguire il bilanciamento non solo dei dati (ad esempio, replicando più copie su diversi dispositivi di archiviazione), ma anche dei metadati nel file system (ad esempio, per trasferire metadati dopo l'aggiunta di un ulteriore dispositivo al pool). Inoltre, reconcile è ora applicabile a tutte le opzioni di input/output, e non solo alle operazioni di copia in background e compressione. In reconcile vengono anche considerati automaticamente i cambiamenti nelle opzioni o nelle impostazioni dei dispositivi e i dati e metadati degradati vengono immediatamente ripristinati.
In reconcile, individual indexes are used for: high-priority operations; optimizing data processing on storage devices; data scheduled for processing that cannot currently be completed (for example, due to insufficient space). Support has been added for creating a file system on a single drive in double replication mode (replicas=2) — in this configuration, adding a second drive will automatically replicate data to the added disk without the need for any user actions.
Tra le altre modifiche:
- The commands 'reconcile status' and 'reconcile wait' have been added. Mount options 'mount_trusts_udev' and 'writeback_timeout' have been introduced. The commands 'data rereplicate' and 'data job drop_extra_replicas' have been marked as deprecated.
- A recovery mode 'merge_btree_nodes' has been added, which checks all nodes in btree structures that fall under merge operations.
- Preparazione del codice completata per il passaggio all'utilizzo del linguaggio Rust. Il numero di operazioni goto nel codice è stato ridotto da 2500 a 600. Invece di vettori hard-coded, è stato utilizzato il macro DARRAY(), che fornisce una funzionalità simile agli array dinamici di C++ e Rust. Per la gestione degli errori è stato implementato il macro try(), preso in prestito da Rust.
- Nel comando «bcachefs fs usage» è stata garantita un'informazione corretta sui dati degradati.
- Rivista la gestione dei contatori mostrati dal comando «bcachefs fs top». Semplificata l'aggiunta di nuovi contatori e implementata la possibilità di convertire i tracepoint in printbufs.
- Migliorata la qualità dei messaggi di errore, che ora includono informazioni sui tipi di guasti (software o hardware), azioni per risolvere l'errore (ad esempio, l'avvio di un processo di recupero), e codici di errore di input/output dai dispositivi a blocchi, dispositivi assenti. Durante la scansione delle strutture btree, è garantito l'output di informazioni sulla possibilità di recupero di nodi problematici.
- Nella registrazione del log è stata aggiunta la possibilità di definire separatamente i limiti per l'intensità dell'output di diversi tipi di errori. Questi limiti aiutano a prevenire la perdita di messaggi relativi a singole problematiche hardware nel contesto di un elevato numero di messaggi riguardanti errori software.
- Per tutte le fasi di recupero sono stati aggiunti indicatori di progresso.
Il progetto Bcachefs sviluppa un file system finalizzato a combinare la funzionalità avanzata tipica di Btrfs e ZFS con un livello di prestazioni, affidabilità e scalabilità caratteristico di XFS. Bcachefs supporta funzionalità come l'inclusione di più dispositivi in un volume, layout a più strati (uno strato inferiore con dati frequentemente utilizzati basati su SSD veloci e uno strato superiore con dati meno richiesti da dischi rigidi), replica (RAID 1/10), caching, compressione dei dati trasparente (modalità LZ4, gzip e ZSTD), snapshot di stato, verifica dell'integrità tramite checksum, possibilità di memorizzare codici di correzione errori di Reed-Solomon (RAID 5/6) e conservazione delle informazioni in forma crittografata (utilizzando ChaCha20 e Poly1305). In termini di prestazioni, Bcachefs supera Btrfs e altri file system basati su Copy-on-Write, mostrando velocità di operazione simili a quelle di Ext4 e XFS.
Fonte: opennet.ru
