Btrfs

Btrfs è un file system con licenza GPL disponibile per Linux in versione stabile dal kernel 3.10 (luglio 2013).

Il file system era stato sviluppato inizialmente nel 2007 da Oracle e poi ampliato da Facebook, Fusion-IO, Intel e altri.

Btrfs ha delle funzionalità condivise con altri file system usciti negli ultimi anni, quali l’integrità, le snapshot, la compressione trasparente, i sottovolumi, il supporto nativo di hardware SSD e altre.

Dopo aver letto l’articolo di Luca mi sono deciso a provare Btrfs.

Uno dei miei Linux, un Ubuntu 15.10, ha un disco principale SSD e un disco secondario a piatti rotanti su cui registro dati temporanei, copie di lavoro di file di grosse dimensioni poco importanti e qualsiasi altro file non essenziale che non deve essere protetto da backup.

La partizione ext4 destinata a questo tipo di dati ha una dimensione di 916Gb, ospita 80 Gb di dati ed è montata negli esempi che seguono sotto /test

Nonostante la sacrificabilità dei dati, ho preferito eseguire un backup preventivo durante il quale ho installato il pacchetto btrfs-tools e ho deciso di provare il tool di conversione.

Ho quindi smontato il file system

# umount /dev/sdb2

ed avviato la conversione

# btrfs-convert /dev/sdb2
creating btrfs metadata.
copy inodes [o] [ 232668/ 6191]
creating ext2fs image file.
cleaning up system chunk.
conversion complete.

Il processo di conversione non è stato velocissimo, va notato che dall’avvio del comando al primo output a video passa un bel po’ di tempo, nonostante per default il programma di conversione dica di tener aggiornato lo stato di avanzamento (non molto affidabile, nel mio caso, vedi sopra).

Come si vede dai messaggi, la conversione crea una snapshot del file system al momento della migrazione. Questo ha due scopi principali: poter tornare indietro al formato precedente se qualcosa non convince (comando btrfs-convert -r /dev/xxx) e poter accedere al file system precedente anche mentre la versione Btrfs è montata e attiva.

Su Ubuntu alla fine della conversione il file system viene montato automaticamente sotto /media, è il caso di smontarlo prima di procedere alla modifica di /etc/fstab e al test con umount -a, che dovrebbe rimontare il file system al suo posto ma con il nuovo formato.

Se tutto è andato bene, abbiamo il file system convertito e rimontato al suo posto e possiamo confermare che è stata creata una snapshot con

# btrfs subvol list /test
ID 256 gen 15 top level 5 path ext2_saved

Se vogliamo accedere in sola lettura alla snapsot dobbiamo prima montarla come immagine

# mount -t btrfs -o subvol=ext2_saved /dev/sdb2 /mnt/btrfs/

se si guarda il contenuto di /mnt/btrfs si vedrà un solo file image della dimensione dell’intera partizione che può essere montato attraverso il loop device:

mount -t ext4 -o loop,ro /mnt/btrfs/image /mnt/ext4

Si può verificare che quella montata sia veramente una snapshot: provare a modificare un file nella partizione Btrfs e verificare che la versione in ext4 è ancora quella originale.

Una volta smontati i due file system con le snapshot

# umount /mnt/ext4
# umount /mnt/btrfs

quando è tutto a posto e verificato, si può procedere alla rimozione della snapshot:

# btrfs subvol delete ext2_saved
Delete subvolume (no-commit): '/test/ext2_saved'

Btrfs permette di avviare la deframmentazione online del file system:

btrfs fi defrag -r /test

azione da considerare prima di mettere in produzione un file system convertito.

Btrfs consente di abilitare la compressione attraverso i parametri di mount: valutare bene costi e benefici prima di mettere in produzione un file system compresso.

Se il vostro Linux supporta senza troppi problemi Btrfs e se avete una partizione che potete usare per i test potrebbe essere il caso di iniziare a familiarizzare con un file system nuovo, ma oramai stabile.

Prima di convertire in Btrfs i file system di boot e root fate delle prove con ambienti di test e leggete bene la documentazione della distribuzione che state utilizzando perché ci potrebbero essere dei limiti al supporto di Btrfs per quei file system.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

6 pensieri riguardo “Btrfs”

  1. Ho installato btrfs-tools e facendo dei test su file immagine, alla formattazione da riga di comando, il terminale mi avverte che btrfs è experimental.

  2. Ho provato a fare dei test e formattando un file immagine con mkfs.btrfs il terminale mi avverte con questo messaggio “WARNING! – Btrfs v3.12 IS EXPERIMENTAL”

      1. La distribuzione è Linux Mint 17.2 Rafaela.
        Il kernel 3.13.0.
        Praticamente la versione di btrfs presente nei repository è vecchia.
        Potrebbero anche ricordarsi di aggiornarla a quella stabile! Bah!
        🙁

  3. stabile? Per quanto mi riguarda, finchè non risolveranno il write hole sui raid con parità, btrfs resterà inusabile.

Spazio per un commento