Guida verificata con Ubuntu: 20.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Btrfs-convert è uno strumento per convertire il formato di un filesystem al filesystem btrfs, utile per modificare a posteriori il tipo scelto per una partizione.
Sono convertibili i filesystem ext2, ext3, ext4 e reiserfs.
Per convertire tra filesystem semplici leggere questa pagina.
Questa procedura necessita di essere eseguita o da un sistema avviato in live, oppure da un sistema installato su un secondo disco.
Operando sulle partizioni si corre il rischio, in caso di errore, di perdere i dati presenti sul disco rigido. È fortemente raccomandato di munirsi di una copia di backup dei propri dati prima di proseguire.
Il processo di conversione richiederà almeno un minuto per ogni GB della partizione da convertire (per esempio una partizione di 10 GB richiederà almeno 10 minuti per essere convertita).
È importante che la partizione che si desidera formattare abbia uno spazio libero residuo di almeno il 10%.
Installazione
Ubuntu 20.04 e successive
Installare il pacchetto btrfs-progs.
Ubuntu 18.04
Il pacchetto btrfs-prosg presente nei repository di Ubuntu 18.04 è una versione obsoleta priva del programma btrfs-convert, necessario per eseguire la conversione, nonché di alcune funzioni e dalle prestazioni talora carenti.
Pertanto occorre scaricare e installare la versione del pacchetto presente nel repository per il rilascio 20.04, ora distribuito sotto forma di suite con più pacchetti.
Scaricare da questo indirizzo i seguenti pacchetti in formato di file .deb:
btrfs-progs_5.4.1-2_amd64.deb libbtrfs0_5.4.1-2_amd64.deb libbtrfsutil1_5.4.1-2_amd64.deb
Installare i pacchetti scaricati.
Uso del programma
Operazioni preliminari
Nel seguente esempio viene convertita nel filesystem btrfs la partizione /dev/sda3 con filesystem ext4.
Individuare la partizione da convertire digitando nel terminale il seguente comando:
sudo blkid
che restituirà un output simile al seguente:
/dev/sda1: UUID="CA49-3B2C" TYPE="vfat" /dev/sda2: UUID="72C0DE8EC0DE57C5" LABEL="windows" TYPE="ntfs" /dev/sda3: UUID="f6e9afa7-5b2f-2c3d-af00-aff1122b6fd6" TYPE="ext4" /dev/sda4: UUID="8c4e69f8-5074-42c0-8134-0b2429c4c02c" TYPE="swap" /dev/sdb1: UUID="4848-E35A" TYPE="vfat"
Smontare la partizione da convertire:
sudo umount -t ext4 /dev/sda3
Verificare il filesystem da convertire:
sudo fsck.ext4 /dev/sda3
Conversione
Convertire il filesystem:
btrfs-convert /dev/sda3
- Montare la partizione convertita, con uno dei seguenti comandi:
Mount con le opzioni di default, senza compressione:
sudo mount -t btrfs /dev/sda3 /mnt
Mount abilitando la compressione (consigliato):
sudo mount -t btrfs -o compress=zstd:1 /dev/sda3 /mnt
- Questa procedura ti da la possibilità di dividere i volumi root e home, per sfruttare le funzionalità di Btrfs, ad esempio gli snapshot.
Creare lo snapshot della partizione Btrfs e rinominarlo in @:
sudo btrfs subvolume snapshot /mnt/ /mnt/@
Creare il subvolume della cartella /home:
sudo btrfs subvolume create /mnt/@home
Spostare i dati della vecchia Home nel subvolume @home:
sudo mv /mnt/@/home/* /mnt/@home/
Verificare che tutte le cartelle siano al loro posto:
ls /mnt
Attenzione, eliminando lo snapshot ext2_save, non si potrà più ripristinare la partizione ext4.
Eliminare il volume ext2_save per liberare spazio
sudo btrfs subvolume delete /mnt/ext2_save
È fortemente consigliato deframmentare i volumi e bilanciare il filesystem. Il nuovo filesystem eredita il posizionamento dei blocchi e la frammentazione dei dati dei file. Per questo motivo si consiglia vivamente di eseguire una deframmentazione completa e un ribilanciamento completo prima dell'uso in "produzione". Non è necessario per il funzionamento generale, ma influirà sulle prestazioni.
- Procedura deframmentare senza comprimere i dati:
Deframmentare il subvolume @:
sudo btrfs filesystem defragment -rvf /mnt/@
Deframmentare il volume @home:
sudo btrfs filesystem defragment -rvf /mnt/@home
Procedura per deframmentare e comprimere i dati con l'algoritmo zstd livello 3:
Deframmentare il volume @:
sudo btrfs filesystem defragment -rvf -czstd /mnt/@
Deframmentare il volume @home:
sudo btrfs filesystem defragment -rvf -czstd /mnt/@home
Bilanciare il filesystem:
sudo btrfs balance start -m /mnt/
Opzionalmente rimuovere le cartelle originali:
find /mnt -maxdepth 1 -type d -not -path '*/@*' -not -name "." -execdir sudo rm -r "{}" \;
Accesso al sistema con Chroot
Eseguire un Chroot alla radice della partizione convertita, con uno dei seguenti comandi:
Senza compressione:
sudo mount -t btrfs /dev/sda3 /mnt
Con compressione (consigliato):
sudo mount -t btrfs -o compress=zstd:1,subvol=@ /dev/sda3 /mnt
Montare le cartelle dev, proc, sys, run:
for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
Effettuare il chroot sul sistema:
sudo chroot /mnt
Annotare il nuovo UUID delle cartelle @ e @home della partizione, visibile con il seguente comando:
sudo blkid /dev/sda3
Aprire con i privilegi di amministrazione e un editor di testo (si consiglia nano) il file /etc/fstab e commentare con un «#» la linea:
UUID=f6e9afa7-5b2f-2c3d-af00-aff1122b6fd6 / ext4 errors=remount-ro 0 1
- Incollare nel file le seguenti linee, scrivendo il nuovo UUID annottato in precedenza, a seconda dei casi con:
Senza compressione:
UUID=NUOVO_UUID btrfs / noatime,autodefrag,subvol=@ 0 0 UUID=NUOVO_UUID btrfs /home noatime,autodefrag,subvol=@home
Con compressione (consigliato):
UUID=NUOVO_UUID btrfs / noatime,compress=zstd:1,autodefrag,subvol=@ 0 0 UUID=NUOVO_UUID btrfs /home noatime,compress=zstd:1,autodefrag,subvol=@home
Reinstallare e aggiornare il bootloader Grub con i comandi:
grub-install /dev/sda
update-grub2
Installare il pacchetto btrfs-progs.
Uscire dal Chroot:
exit
Smontare tutte le cartelle:
cd ~ for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
Smontare la partizione convertita:
sudo umount -t btrfs -o subvol=@ /dev/sda3 /mnt
Al termine riavviare il sistema.