Differenze tra le versioni di "Btrfs"
m |
|||
Riga 179: | Riga 179: | ||
https://btrfs.wiki.kernel.org/index.php/UseCases | https://btrfs.wiki.kernel.org/index.php/UseCases | ||
+ | |||
+ | [[Category:Howto]] |
Versione delle 16:23, 21 set 2015
Introduzione
Btrfs è un filesystem di nuova generazione designato per rimpiazzare Ext3 e Ext4 sui sistemi Linux.
Integra a livello di filesystem la gestione di volumi, snapshot e RAID rendendo non più necessario il ricorso a LVM
Utilizzo di base
Creazione del filesystem
# mkfs.btrfs /dev/partizione
Montaggio del filesystem
# mount -o compress=lzo /dev/partizione /mnt/punto_mount
(Si consiglia di usare l'opzione di compressione del filesystem per migliorare le performance ed ottimizzare l'utilizzo dello spazio)
Creazione di un subvolume
# btrfs subvolume create subvolume
Montaggio di un subvolume
# mount -o subvol=subvolume /dev/partizione /mnt/punto_mount
Conversione da Ext3/4 a Btrfs
# btrfs-convert /dev/partizione
Automaticamente è creata una snapshot contenente il vecchio filesystem (/ext2_saved)
In caso di problemi può essere montata col comando
# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved # mount -t ext3 -o loop,ro /ext2_saved/image /ext3
Se tutto è andato a buon fine può invece essere eliminata
# btrfs subvolume delete /ext2_saved
Riparazione di un filesystem danneggiato
Ci sono due modalità:
Riparazione online
Si può tentare di riparare il filesystem a caldo (mentre questo è montato)
# btrfs scrub start -B /dev/partizione
o anche direttamente sulla root
# btrfs scrub start -B /
Riparazione offline
Precedentemente conosciuta come btrfsck, nel caso in cui l'operazione di ripristino precedente fallisca, si deve smontare il disco e, da live, dare:
# btrfs check --repair /dev/partizione
Tips and tricks
Se si preferisce non utilizzare una partizione /boot in formato tradizionale (ext2/3/4, reiser, etc...), al fine di evitare possibili problemi di avvio con GRUB, specialmente abilitando opzioni come la compressione del filesystem di root, si consiglia di partizionare il disco nel formato GPT ed utilizzare la Bios Grub Partition o l'EFI System nel caso si possieda un moderno PC dotato di UEFI.
Gestione avanzata
Normalmente la root di sistema viene collocata in un subvolume (es.: @), per poter effettuare opzioni di snapshot etc e consigliabile montare il filesystem con l'opzione subvolid=0. Nella directory di mount saranno visibili tutti i subvolumi e le snapshot della partizione e sarà quindi possibile effettuare tutte le operazioni indicate nei passaggi successivi.
Ecco un /etc/fstab di esempio
LABEL=ROOT / btrfs defaults,compress=lzo,subvol=@ 0 0 LABEL=ROOT / btrfs defaults,compress=lzo,subvol=@home 0 0 LABEL=ROOT /mnt/btrfs btrfs defaults,noauto,subvolid=0,compress=lzo 0 0
Montando la partizione con label ROOT su /mnt/btrfs saranno visibili tutti i subvolumi.
Creazione e gestione delle snapshot
Controllare i subvolumi presenti sul sistema
# btrfs subvolume list /
In una tipica installazione Ubuntu avremo un output di questo tipo
ID 257 gen 9755 top level 5 path @ ID 292 gen 7624 top level 5 path @home
@ è il nome del subvolume contenente la root / del filesystem @home è il nome del subvolume della /home
Effettuare una snapshot
# btrfs subvolume snapshot @ rootsnap
Nell'esempio abbiamo effettuato il backup del filesystem di root e l'abbiamo chiamato rootsnap
Montare un subvolume/snapshot
# mount -t btrfs -o subvol=rootsnap /dev/partizione /mnt/snapshot
Cancellare un subvolume/snapshot
# btrfs subvolume delete rootsnap
Aggiungere a GRUB l'opzione per avviare una snapshot
Editare /etc/grub.d/40_custom (o crearlo) e aggiungere quanto segue per permettere l'avvio della snapshot rootsnap
menuentry 'Linux snapshot' { insmod gzio insmod part_gpt insmod btrfs set root='hd1,gpt3' linux /rootsnap/boot/vmlinuz-linux root=/dev/partizione rw rootflags=subvol=rootsnap quiet initrd /rootsnap/boot/initramfs-linux.img }
dopodichè aggiornare la configurazione di GRUB con
# grub-mkconfig -o /boot/grub/grub.cfg
su Debian/Ubuntu si può anche dare
# update-grub
RAID 0
# mkfs.btrfs -d raid0 /dev/sda1 /dev/sdb1
Montare il raid
# mount /dev/sda1 /mnt
(È equivalente a mount /dev/sdb1 /mnt, il sistema riconosce che è presente un raid 0 e provvede al montaggio corretto dei dischi)
Verifica del montaggio
# btrfs filesystem show /mnt
Label: none uuid: 4714fca3-bfcb-4130-ad2f-f560f2e12f8e Total devices 2 FS bytes used 27.75GiB devid 1 size 136.72GiB used 17.03GiB path /dev/sda1 devid 2 size 136.72GiB used 17.01GiB path /dev/sdb1
Aggiungere una partizione
# btrfs device add /dev/sdc1 /mnt
# btrfs filesystem show /mnt Label: none uuid: 4714fca3-bfcb-4130-ad2f-f560f2e12f8e Total devices 3 FS bytes used 27.75GiB devid 1 size 136.72GiB used 17.03GiB path /dev/sda1 devid 2 size 136.72GiB used 17.01GiB path /dev/sdb1 devid 3 size 136.72GiB used 0.00 path /dev/sdc1
Adesso è necessario effettuare una redistribuzione dei dati sui tre dischi
# btrfs balance start -d -m /mnt
# btrfs filesystem show /mnt Label: none uuid: 4714fca3-bfcb-4130-ad2f-f560f2e12f8e Total devices 3 FS bytes used 27.78GiB devid 1 size 136.72GiB used 10.03GiB path /dev/sda1 devid 2 size 136.72GiB used 10.03GiB path /dev/sdb1 devid 3 size 136.72GiB used 11.00GiB path /dev/sdc1
Rimuovere un device
# btrfs device delete /dev/sdb1 /mnt
L'operazione può impiegare parecchio tempo e per andare a buon fine sui dischi rimanenti deve essere rimasto sufficiente spazio libero da ospitare i dati contenuti nel device che vogliamo togliere dal raid.
RAID 1
# mkfs.btrfs -d raid1 -m raid1 /dev/sda1 /dev/sdb1
RAID 5
Conversione a RAID5
# btrfs balance start -dconvert=raid5 -mconvert=raid5 /punto_di_mount
Sostituzione device danneggiato
# btrfs replace start /dev/sdb1 /dev/sdc1 /punto_di_mount
In alcuni casi potrebbe essere necessario montare il filesystem in modalità degraded (con l'opzione -o degraded) e lanciare il successivo comando per eliminare definitivamente il device dal raid.
# btrfs device delete missing /mnt
Quote
Per limitare le dimensioni di un subvolume è possibile abilitare la gestione delle quote.
Utilizzare il seguente comando su un filesystem btrfs appena creato e privo di subvolumi
# btrfs quota enable volume
Se invece le quote non sono state abilitate subito su tutto il filesystem è necessario creare un qgroup (quota group) per ogni subvolume utilizzando il rispettivo ID e successivamente fare una scansione delle quote.
# btrfs subvolume list <path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} <path> # btrfs quota rescan <path>
Assegnare una quota limite ad un subvolume
# btrfs qgroup limit size /volume/subvolume
Es.:
# btrfs qgroup limit 20g /mnt/@ # btrfs qgroup limit 100g /mnt/@home
Scoprire la quantità di spazio utilizzata da un subvolume
# btrfs qgroup show <path>