BTRFS: Il file system del futuro

btrfs

Sono sempre stato affascianto dall’archiviazione massiva dei dati. Con BTRFS si possono fare cose pazzesche, è lo ZFS del mondo linux

Btrfs (Butter Filesystem) è un nuovo file system ancora sotto sviluppo paragonabile a ZFS che offre funzionalità sorprendenti.
La terminologia usata con BTRFS crea un po’ di confusione, se si ha dimestichezza con ZFS o LVM si troveranno molte analogie.
Il termine “volume” corrisponde al termine “pool” in ZFS o “Volume Group” in LVM.
Tra le principale caratteristiche di BTRFS troviamo:

– Conversione tra filesystem EXT3, EXT4 e BTRFS;
– Deframmentazione a caldo
– Resize (diminuzione o ingrandimento dei dischi) a caldo!
– Supporto RAID 0, RAID 1 e RAID 10
– Efficiente backup incrementale ed il mirroring FS
– Controllo del file system montato on-line ed offline, entrambi in modo molto veloce
– Checksum su dati e metadati, questa è una delle garanzie per mantenere l’integrità dei dati memorizzati
– L’allocazione dinamica degli inode
– Compressione con zlib e LZO
– Efficienza di organizzazione dei file e directory
– Dimensione massima dei file è di 16 exabyte
– Creazione di snapshot del disco montato, ossia un backup in tempo reale dell’intero sistema

A questa pagina http://www.rkeene.org/projects/info/wiki.cgi/165 vengono comparati i comandi tra btrfs, ZFS e LVM con ext4.
A questa pagina troverete un interessante articolo a riguardo.

Giochiamo col BTRFS
Ritagliatevi un po’ di tempo e armatevi di un po’ pazienza (preparatevi una tazza di te e mettete un buon brano di sottofondo) e cominciamo a fare qualche test su questo file system..

Cominciamo a preparare un gruppo di dischi per i nostri test:

dd if=/dev/zero of=/tmp/btrfs-vol0.img bs=512M count=1
dd if=/dev/zero of=/tmp/btrfs-vol1.img bs=512M count=1
dd if=/dev/zero of=/tmp/btrfs-vol2.img bs=512M count=1
dd if=/dev/zero of=/tmp/btrfs-vol3.img bs=512M count=1
dd if=/dev/zero of=/tmp/btrfs-vol4.img bs=512M count=1

Colleghiamoli:

losetup /dev/loop0 /tmp/btrfs-vol0.img
losetup /dev/loop1 /tmp/btrfs-vol1.img
losetup /dev/loop2 /tmp/btrfs-vol2.img
losetup /dev/loop3 /tmp/btrfs-vol3.img
losetup /dev/loop4 /tmp/btrfs-vol4.img

Il comportamento di default (senza specificare opzioni) è il seguente:
metadata replicati su tutti i device. Se si usa un solo device, un metadata rovinato comporta la morte del volume con nessuna possibilità di recupero del volume.
dati spalmati su tutti i device (questo significa nessuna ridondanza; qualsiasi dato lasciato su un device difettoso non sarà accessibile)

Creiamo un volume BTRFS composto da più device (i metadata replicati su tutti i dischi):

mkfs.btrfs /dev/loop0 /dev/loop1 /dev/loop2

Creiamo un volume BTRFS composto da un singolo device con una sola copia dei metadata (pericoloso):

mkfs.btrfs -m single /dev/loop0

Creiamo un volume BTRFS composto da più device con metadati spalmati su tutti i device:

mkfs.btrfs -m raid0 /dev/loop0 /dev/loop1 /dev/loop2

Per creare un volume BTRFS completamente ridondato (composto da più device, con dati e metadati mirrorati su tutti i device):

mkfs.btrfs -d raid1 /dev/loop0 /dev/loop1 /dev/loop2

Per verificare da quali device è composto un volume BTRFS usare

btrfs-show device (old style)

oppure

btrfs filesystem show /dev/loop0
btrfs filesystem show (mostra tutti)

risultato:
Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09
Total devices 3 FS bytes used 28.00KB
devid 3 size 1.00GB used 263.94MB path /dev/loop2
devid 1 size 1.00GB used 275.94MB path /dev/loop0
devid 2 size 1.00GB used 110.38MB path /dev/loop1

Montare un volume

I volumi BTRFS vengono montati come ogni altro filesystem:
(basta dare uno dei device)
mount /dev/loop0 /mnt

Controllo dello spazio
col comando df -h il risultato per ogni device fisico è il medesimo:

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 3.0G 56K 1.8G 1% /mnt

Maggiori informazioni possono essere ottenute col comando:

# btrfs filesystem df /mnt
Data, RAID0: total=409.50MB, used=0.00
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=4.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=204.75MB, used=28.00KB
Metadata: total=8.00MB, used=0.00

Diminuire il volume (shrinking)
btrfs filesystem resize -500m /mnt
Ebbene sì! Ha fatto un ridimensionamento al volo.
Ma attenzione, un ridimensionamento troppo aggressivo non funzionarà, btrfs richiede uno spazio minimo:

btrfs filesystem resize -1g /mnt
Resize '/mnt' of '-1g'
ERROR: unable to resize '/mnt'

Aumentare il volume (growing)

btrfs filesystem resize +150m /mnt
Resize '/mnt' of '+150m'

Si può anche usare l’opzione “max” per usare il massimo spazio disponibile:
btrfs filesystem resize max /mnt

Aggiungere un nuovo device al volume BTRFS

btrfs device add /dev/loop4 /mnt
btrfs filesystem show /dev/loop4
Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09
Total devices 4 FS bytes used 28.00KB
devid 3 size 1.00GB used 263.94MB path /dev/loop2
devid 4 size 1.00GB used 0.0 path /dev/loop4
devid 1 size 1.00GB used 275.00MB path /dev/loop0
devid 2 size 1.00GB used 110.00MB path /dev/loop1

Ovviamente non c’è bisogno di smontare nulla, si fa tutto online, ma il device per ora non è usato (used 0.0 MB).
Per metterlo in funzione bisogna dire a BTRFS di preparare il nuovo device (esempio di ribilanciare/mirrorare i metadati e dati su tutti i device).

btrfs filesystem balance /mnt
btrfs filesystem show /dev/loop4
Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09
Total devices 4 FS bytes used 28.00KB
devid 3 size 1.00GB used 110.38MB path /dev/loop2
devid 4 size 1.00GB used 366.38MB path /dev/loop4
devid 1 size 1.00GB used 378.38MB path /dev/loop0
devid 2 size 1.00GB used 110.38MB path /dev/loop1

Continua…

Luca
Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: