• Autore:   Elia Argentieri
  • Ultima modifica:   24 gen 2021 22:19
  • Redazione:   27 mar 2016 01:19
  • Sorgente di questa pagina
  • Tempo di lettura:   4 minuti

Dopo che si è fritta la scheda SD di questo server, ho duvuto/voluto reinstallare Debian. Ho deciso, quindi di buttarmi sul tanto acclamato Btrfs.

Ma che cos’è Btrfs?

Btrfs è un file system annunciato da Oracle nel 2007 ed è stato rilasciato con licenza GPL, permettendone l’inclusione nel nucleo Linux.

Btrfs sta per BeTteR File System o Binary TRee File System. Si tratta di un file system molto avanzato che dispone i dati sulla memoria fisica seguendo la struttura di un B-albero cioè un albero binario di ricerca che mantiene il bilanciamento e ha un funzionamento CoW (Copy on Write) cioè quando un file viene modificato, invece di salvare direttamente le modifiche, crea un nuovo file contenente le modifiche e, solo dopo che ciò ha avuto successo, sposta il riferimento al nuovo file. In questo modo la corruzione dei file diventa molto improbabile e quindi non ha bisogno di un registro dei cambiamenti come fanno gli altri file system. Inoltre può gestire sottovolumi e istantanee che consentono di “far tornare indietro nel tempo” a specifici istanti temporali il nostro file system.

È possibile automatizzare la creazione di istantanee utilizzando una utilità chiamata snapper, che si preoccupa automaticamente ed in modo estremamente efficiente di creare queste istantanee configurando la cadenza e quante tenerne.

Una volta creata una istantanea, Btrfs sfrutta il meccanismo CoW per mantenere la copia inalterata del file per l’istantanea, mentre il nuovo file modificato viene associato al file system “vero”, cioè quello in uso. In questo modo non si spreca tempo a calcolare le differenze fra i due file, come invece è necessario fare su altri sistemi.

Btrfs ha la possibilità di inviare e ricevere, tramite un formato binario, tutte le modifiche necessarie per trasformare un sottovolume in un altro sottovolume. In questo modo si potrebbe implementare un semplice ed efficientissimo sistema di replicazione di file system o di backup incrementale.

Btrfs ha molte opzioni che lo rendono ideale per le memorie flash, come le piccole schedine SD, che non sono proprio dei campioni in velocità e, come se non bastasse si consumano le celle a forza di leggerle e scriverle. Btrfs può contrastare efficacemnte entrambi i problemi andando a scrivere in modo sparpagliato nella memoria, in modo da far consumare tutte le celle equamente, allungando anche di molto la vita della memoria che altrimenti vedrebbe consumate più velocemente le prime celle.

Per andare più veloce, aumentando sia la velocità di lettura che quella di scrittura, c’è la compressione trasparente. Questa opzione consente di comprimere i dati quando vengono scritti e decomprimerli quando vengono letti, in modo estremamente rapido ed efficiente. Così facendo si possono salvare più dati nel dispositivo, aumentando la velocità di lettura e scrittura allo stesso tempo, al costo di un irrisorio utilizzo di CPU. Questa opzione ha veramente dato una nuova vita ad OLinuXino, dato che colpisce direttamente i suoi punti deboli, ovvero la carenza di banda per l’I/O (porte USB 2.0 e microSD…).

Altre caratteristiche sono: la capacità di controllo e correzione degli errori anche hardware, deframmentazione automatica in linea, espansione e riduzione in linea, RAID 0, 1, 5 e 6, bilanciamento del carico tra più memorie in RAID in linea e la possibilità di clonare file soltanto aggiungendo un riferimento alla stessa zona della memoria lasciando che il meccanismo CoW si preoccupi+ eventualmente di creare il file modificato aggiornando il riferimento.

Lo sviluppo di Btrfs è molto attivo ancora oggi e sono previste molte altre caratteristiche come la cifratura totale del disco, correzione errori del file system in linea, backup incrementali, capacità di gestire file o partizioni di swap.

Dopo averlo provato per qualche mese non tornerei indietro per niente al mondo. Una volta abbattuto lo scetticismo iniziale, posso testimoniare che Btrfs è molto ben progettato. Queste sono le opzioni che uso su questo server OLinuXino:

noatime,compress=lzo,ssd_spread,autodefrag

Come si intuisce, ho disabilitato la scrittura dei tempi di accesso ai file per minimizzare le scritture sulla SD, ho attivato la compressione LZO, sto sparpagliando i dati per preservare le celle di memoria e ho la deframmentazione automatica in linea attivata.

Un grazie agli sviluppatori di Btrfs!