Vai al contenuto

Bcachefs

Da Wikipedia, l'enciclopedia libera.
Bcachefs
Dati generali
SviluppatoreKent Overstreet
IntroduzionePrima apparizione: 21 agosto 2015 Linux
Struttura
Struttura contenuti directoryB*Tree
Allocazione dei fileextent
Limiti
Dimensione massima del nome di un file255 byte
Dimensione massima del volumeNon esiste limite teorico
Caratteri permessi nel nome di un fileTutti i byte eccetto NULL e '/'
Caratteristiche
AttributiPOSIX
Permessi file systemPOSIX e ACL in xattrs
Compressione trasparenteSì (LZ4, gzip, Zstd)
Crittografia trasparente

Bcachefs è un file system COW (copy-on-write) per sistemi operativi basati sul kernel Linux. Lo sviluppatore principale del progetto, Kent Overstreet, ne annunciò la nascita nel 2015 e venne aggiunto al kernel Linux a partire dalla versione 6.7.[1][2]

È concepito per competere con le funzionalità moderne offerte da ZFS o Btrfs e con la velocità e le prestazioni messe a disposizione da ext4 o XFS.

Caratteristiche

[modifica | modifica wikitesto]

Bcachefs è un file system COW che offre caratteristiche interessanti quali: capacità di gestire in modo trasparente il caching dei dati, la possibilità di memorizzare informazioni in forma crittografata, utilizzando algoritmi come ChaCha20 e Poly1305, gestire nativamente la compressione tramite LZ4, gzip[3] e Zstandard,[4] snapshot, CRC-32C e checksum a 64 bit.

È estremamente versatile e può estendersi su più dispositivi a blocchi, anche nelle configurazioni RAID.

Le prime versioni di Bcachefs mettevano a disposizione tutte le funzionalità di Bcache, un sistema di cache a blocchi per Linux, con cui Bcachefs condivide circa l'80% del suo codice. A partire da dicembre 2021, la funzionalità di cache a livello di blocco è stata rimossa.[5]

A livello di struttura dati, bcachefs utilizza B-tree come molti altri file system moderni, ma con una dimensione del nodo insolitamente grande, impostata di default a 256 KiB. Questi nodi sono strutturati internamente in log, formando una struttura dati ibrida e riducendo la necessità di riscrivere i nodi durante l'aggiornamento.[6] Gli snapshot non vengono implementati clonando un albero COW, ma aggiungendo un numero di versione agli oggetti del file system.[7] La funzionalità COW e l'allocazione dei bucket consentono un'implementazione RAID che non soffrono di "write hole" (buchi di scrittura) o di frammentazione I/O.[8]

Bcachefs viene descritto dagli stessi sviluppatori come un file system "funzionante e stabile, con una piccola comunità di utenti" ("working and stable, with a small community of users").[9]

Il 7 aprile 2024 però, Linus Torvalds, parlando di Linux 6.9-rc3, toccò anche l'argomento bcachefs e riferendosi alla sua stabilità dichiarò che "se pensavi che bcachefs fosse già stabile, I have a bridge to sell you (modo per dire inglese che indica che qualcuno ti sta proponendo una truffa o una balla)".[10]

Tornato sull'argomento nell'agosto del 2024 Torvalds disse che "nessuno sano di mente utilizzerebbe bcachefs aspettandosi che sia stabile" ("nobody sane uses bcachefs and expects it to be stable).[11]

Nell'agosto 2024, il responsabile Debian di bcachefs-tools, ha reso orfano il pacchetto, mettendo in dubbio la sua sostenibilità a lungo termine. Pubblicò anche un post nel blog che avvertiva: "Se si intendesse utilizzare bcachefs per qualsiasi tipo di utilizzo in produzione in futuro, consiglierei prima di capire quanto sia supportabile a lungo termine e se c'è davvero qualcuno che riesca a fornire un supporto stabile per esso".[12]

Lo sviluppatore principale è Kent Overstreet, lo stesso di Bcache, una tecnologia presente nel kernel Linux e che permette di creare dei volumi ibridi. A detta dello stesso Overstreet, Bcache è stato un "prototipo" che ha contribuito alla realizzazione di Bcachefs che ne è erede e sostituto.

L'idea di sviluppare il file system Bcachefs è nata dopo che gli sviluppatori di Bcache si sono resi conto che il codice "si stava evolvendo... in un file system POSIX completo e multiuso" ("been evolving... into a full blown, general-purpose POSIX filesystem") con un "design davvero pulito ed elegante" ("really clean and elegant design").

Dopo che Bcache venne integrato nel ramo di sviluppo principale del kernel Linux, nel 2013, Overstreet lasciò il suo lavoro presso Google per dedicarsi a tempo pieno su Bcachefs.

Nel 2015, dopo alcuni anni di sviluppo non finanziato, Overstreet annunciò Bcachefs nel 2015. La sua intenzione era quella di creare un file system avanzato con caratteristiche moderne come quelle di ZFS o Btrfs ma con la velocità e le prestazioni di file system come ext4 e XFS.

A partire dal 2017 Overstreet ha ricevuto supporto finanziario per lo sviluppo di Bcachefs tramite Patreon.

A metà del 2018 le patch per includere Bcachefs nel kernel Linux sono state inviate, ma non vennero accettate.

Nei primi mesi del 2019, le funzionalità richieste a Bcachefs sono state completate e le patch annunciate sulla KKML per essere sottoposte a revisione.

Nell'ottobre 2023 Bcachefs è stato integrato nel kernel Linux 6.7,[13] rilasciato nel gennaio 2024.[2]

  1. ^ git.kernel.org, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9e87705289667a6c5185c619ea32f3d39314eb1b. URL consultato il 31 ottobre 2023.
  2. ^ a b (EN) phoronix.com, https://www.phoronix.com/news/Linux-6.7-Released. URL consultato il 7 gennaio 2024.
  3. ^ bcachefs-docs.readthedocs.io, https://bcachefs-docs.readthedocs.io/en/latest/options.html#compression-types.
  4. ^ bcachefs.org, https://bcachefs.org/bcachefs-principles-of-operation.pdf. URL consultato il 10 maggio 2023.
  5. ^ bcachefs.org, https://bcachefs.org/bcachefs-principles-of-operation.pdf. URL consultato il 10 maggio 2023.
  6. ^ bcachefs.org, https://bcachefs.org/Architecture/.
  7. ^ bcachefs.org, https://bcachefs.org/Snapshots/.
  8. ^ Kent Overstreet, bcachefs: Principles of Operation (PDF), su bcachefs.org, 18 dicembre 2021. URL consultato il 10 maggio 2023.
  9. ^ bcachefs.org, https://bcachefs.org.
  10. ^ Linus Torvalds, Linux 6.9-rc3, su lore.kernel.org, 7 aprile 2024.
  11. ^ lore.kernel.org, https://lore.kernel.org/lkml/CAHk-=wj1Oo9-g-yuwWuHQZU8v=VAsBceWCRLhWxy7_-QnSa1Ng@mail.gmail.com/.
  12. ^ jonathancarter.org, https://jonathancarter.org/2024/08/29/orphaning-bcachefs-tools-in-debian/.
  13. ^ (EN) phoronix.com, https://www.phoronix.com/news/Bcachefs-Merged-Linux-6.7. URL consultato il 31 ottobre 2023.

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica