Differenze tra le versioni di "Btrfs"
(Creata pagina con '= 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, ...') |
|||
Riga 1: | Riga 1: | ||
= Introduzione = | = Introduzione = | ||
− | |||
Btrfs è un filesystem di nuova generazione designato per rimpiazzare Ext3 e Ext4 sui sistemi Linux. | Btrfs è un filesystem di nuova generazione designato per rimpiazzare Ext3 e Ext4 sui sistemi Linux. | ||
Riga 29: | Riga 28: | ||
=Gestione avanzata= | =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. | 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. | ||
Riga 40: | Riga 38: | ||
==Creazione e gestione delle snapshot== | ==Creazione e gestione delle snapshot== | ||
− | |||
===Controllare i subvolumi presenti sul sistema=== | ===Controllare i subvolumi presenti sul sistema=== | ||
# btrfs subvolume list / | # btrfs subvolume list / | ||
Riga 57: | Riga 54: | ||
=== Montare un subvolume/snapshot=== | === Montare un subvolume/snapshot=== | ||
− | |||
# mount -t btrfs -o subvol=rootsnap /dev/partizione /mnt/snapshot | # mount -t btrfs -o subvol=rootsnap /dev/partizione /mnt/snapshot | ||
Riga 65: | Riga 61: | ||
===Aggiungere a GRUB l'opzione per avviare una snapshot=== | ===Aggiungere a GRUB l'opzione per avviare una snapshot=== | ||
− | |||
Editare ''/boot/grub/grub.cfg'' | Editare ''/boot/grub/grub.cfg'' | ||
aggiungere quanto segue per permettere l'avvio della snapshot ''rootsnap'' | aggiungere quanto segue per permettere l'avvio della snapshot ''rootsnap'' | ||
Riga 79: | Riga 74: | ||
− | ==RAID== | + | ==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 ''directory di mount'' | ||
− | + | ===Sostituzione device danneggiato=== | |
− | + | # btrfs replace start /dev/sdb1 /dev/sdc1 ''directory di mount'' | |
− | btrfs | + | 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 | ||
− | + | = Bibliografia = | |
− | + | http://lwn.net/Articles/577961/ | |
− | + | https://btrfs.wiki.kernel.org/index.php/Main_Page | |
− | |||
− | |||
− |
Versione delle 13:20, 24 mag 2014
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)
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
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 esempio di file /etc/fstab
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
Mountando 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 /boot/grub/grub.cfg 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 }
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 directory di mount
Sostituzione device danneggiato
# btrfs replace start /dev/sdb1 /dev/sdc1 directory 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
Bibliografia
http://lwn.net/Articles/577961/ https://btrfs.wiki.kernel.org/index.php/Main_Page