Guida verificata con Ubuntu: 20.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
btrfs-convert è uno strumento che consente di convertire partizioni formattate in ext2, ext3, ext4 o reiserfs nel file system btrfs. La partizione deve avere almeno il 10% di spazio disponibile. L'operazione può richiedere molto tempo, circa 1 minuto per GB.
Questa guida spiega come utilizzare btrfs-convert per convertire in btrfs la partizione di Ubuntu, considerando un sistema installato in unica partizione (eccetto l'eventuale partizione EFI per i sistemi UEFI). Vengono inoltre illustrate tutte le operazioni successive necessarie per rendere il sistema avviabile, efficiente e performante.
Una volta completata la procedura non sarà possibile tornare al file system precedente, a meno di non reinstallare il sistema. Di norma è preferibile eseguire un backup dei dati e reinstallare Ubuntu scegliendo la voce Altro nella schermata Tipo di installazione e specificando file system btrfs con journaling per la partizione di root. La conversione del file system è una soluzione non esente da rischi da valutare solo se la reinstallazione rappresenta un'opzione troppo difficoltosa o impossibile.
Operare sulle partizioni espone al rischio di perdere i dati, in conseguenza di eventuali errori o malfunzionamenti. Pertanto è fortemente raccomandato effettuare un backup dei propri dati prima di procedere.
Operazioni preliminari
In tutte le fasi successive di questa guida, a titolo di esempio, viene convertita nel file system btrfs la partizione /dev/sda3 con file system ext4.
Avviare una sessione live del rilascio più recente di Ubuntu (minimo 20.04). Se il sistema da convertire è installato in modalità UEFI, assicurarsi di avviare la sessione live in tale modalità.
In alternativa è possibile operare da un altro sistema Ubuntu installato in dual boot. In tal caso per operare da Ubuntu 20.04 o successivo è necessario installare il pacchetto btrfs-progs presente nei repository. Invece per Ubuntu 18.04 scaricare ed installare manualmente i pacchetti btrfs-progs_5.4.1-2_amd64.deb, libbtrfs0_5.4.1-2_amd64.deb e libbtrfsutil1_5.4.1-2_amd64.deb.
Individuare la partizione da convertire.
Verificare l'integrità del file system da convertire digitando nel terminale il seguente comando:
sudo fsck -f /dev/sda3
Conversione e creazione dei subvolume
Convertire il file system digitando nel terminale il seguente comando:
sudo btrfs-convert /dev/sda3
Questa operazione può richiedere diversi minuti.
- Montare la partizione convertita digitando nel terminale uno dei seguenti comandi:
Abilitando la compressione (consigliato, non compatibile con Ubuntu 18.04 in modalità legacy BIOS):
sudo mount -o compress=zstd:1 /dev/sda3 /mnt
Oppure senza compressione:
sudo mount /dev/sda3 /mnt
Creare uno snapshot della radice con nome @ digitando nel terminale il seguente comando:
sudo btrfs subvolume snapshot /mnt /mnt/@
Creare un subvolume per la Home con nome @home digitando nel terminale il seguente comando:
sudo btrfs subvolume create /mnt/@home
Spostare i dati dalla cartella /home al subvolume @home digitando nel terminale il seguente comando:
sudo mv /mnt/@/home/* /mnt/@home
Eliminare dalla radice della partizione tutti i file e le cartelle, eccetto i subvolume @, @home e ext2_saved, digitando nel terminale il seguente comando:
find /mnt -mindepth 1 -maxdepth 1 ! -path '/mnt/@*' ! -path '/mnt/ext2_saved' -exec sudo rm -r "{}" +
Questa operazione può richiedere alcuni minuti.
Aggiornamento del file fstab
Prendere nota del nuovo UUID della partizione convertita, visualizzabile digitando nel terminale il seguente comando:
sudo blkid -s UUID -o value /dev/sda3
Aprire con i privilegi di amministrazione e con un editor di testo il file /mnt/@/etc/fstab.
Individuare la riga che fa riferimento alla partizione di sistema, ovvero quella con punto di montaggio /, e commentarla aggiungendo il carattere «#» all'inizio della riga. Il risultato sarà simile al seguente:
#UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 errors=remount-ro 0 1
Se è presente una riga che fa riferimento allo swapfile, commentarla aggiungendo il carattere «#» all'inizio della riga. Il risultato sarà simile al seguente:
#/swapfile none sw 0 0
Dopo aver portate a termine tutte le fasi di questa guida, consultare il paragrafo Swapfile.
Incollare in fondo al file le seguenti righe, sostituendo NUOVO_UUID con il valore annotato in precedenza:
Abilitando la compressione (consigliato, non compatibile con Ubuntu 18.04 in modalità legacy BIOS):
UUID=NUOVO_UUID / btrfs compress=zstd:1,autodefrag,subvol=@ UUID=NUOVO_UUID /home btrfs compress=zstd:1,autodefrag,subvol=@home
Oppure senza compressione:
UUID=NUOVO_UUID / btrfs autodefrag,subvol=@ UUID=NUOVO_UUID /home btrfs autodefrag,subvol=@home
- Salvare il file e chiudere l'editor di testo.
Smontare la partizione:
sudo umount /mnt
Boot loader e btrfs-progs
Montare il subvolume @ in /mnt digitando nel terminale uno dei seguenti comandi:
Abilitando la compressione (consigliato, non compatibile con Ubuntu 18.04 in modalità legacy BIOS):
sudo mount -o compress=zstd:1,subvol=@ /dev/sda3 /mnt
Oppure senza compressione:
sudo mount -o subvol=@ /dev/sda3 /mnt
Montare le cartelle necessarie digitando nel terminale il seguente comando:
for i in dev dev/pts proc run sys sys/firmware; do sudo mount --bind /$i /mnt/$i; done
Solo per sistemi UEFI, montare anche la partizione EFI digitando nel terminale il seguente comando:
sudo mount /dev/sdXN /mnt/boot/efi
Sostituire sdXN con la partizione EFI del proprio sistema.
Effettuare il chroot sul sistema digitando nel terminale il seguente comando:
sudo chroot /mnt
Reinstallare il boot loader Grub digitando nel terminale uno dei seguenti comandi:
Per sistemi legacy BIOS:
grub-install /dev/sda
Per sistemi UEFI:
grub-install
Aggiornare la configurazione di Grub digitando nel terminale il seguente comando:
update-grub
Scaricare e installare il pacchetto btrfs-progs:
Per Ubuntu 20.04 e successivi digitare nel terminale il seguente comando:
apt install btrfs-progs
Per Ubuntu 18.04 digitare nel terminale i seguenti comandi:
mkdir ~/btrfs-progs && cd ~/btrfs-progs
wget http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/btrfs-progs_5.4.1-2_amd64.deb http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/libbtrfs0_5.4.1-2_amd64.deb http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/libbtrfsutil1_5.4.1-2_amd64.deb
dpkg -i ~/btrfs-progs/*.deb
rm -r ~/btrfs-progs
Uscire dal chroot digitando nel terminale il seguente comando:
exit
Smontare tutte le cartelle digitando nel terminale il seguente comando:
for i in dev/pts dev proc run sys/firmware sys; do sudo umount /mnt/$i; done
Solo per sistemi UEFI, smontare la partizione EFI digitando nel terminale il seguente comando:
sudo umount /mnt/boot/efi
Smontare il subvolume @ digitando nel terminale il seguente comando:
sudo umount /mnt
- Riavviare il sistema.
Deframmentazione e bilanciamento
Se il sistema si avvia e funziona correttamente, è possibile procedere alle operazioni di pulizia, deframmentazione e bilanciamento. In caso contrario, ovvero se si riscontrano degli errori o altri problemi, ripristinare il file system precedente.
Non sarà possibile ripristinare il file system precedente dopo aver applicato le indicazioni di questo paragrafo.
- Montare la radice della partizione convertita digitando nel terminale uno dei seguenti comandi:
Abilitando la compressione (consigliato, non compatibile con Ubuntu 18.04 in modalità legacy BIOS):
sudo mount -o subvol=/,compress=zstd:1 /dev/sda3 /mnt
Oppure senza compressione:
sudo mount -o subvol=/ /dev/sda3 /mnt
Eliminare il subvolume ext2_saved digitando nel terminale il seguente comando:
sudo btrfs subvolume delete /mnt/ext2_saved
Attendere qualche minuto, quindi verificare che l'eliminazione del subvolume ext2_saved sia stata portata a termine digitando nel terminale il seguente comando:
sudo btrfs subvolume list -d /mnt
Se l'eliminazione è ancora in corso viene restituito un risultato simile al seguente:
ID 1020 gen 4140456 top level 0 path DELETED
In tal caso attendere qualche minuto e ridare il comando.
- Se non viene restituito alcun risultato procedere al punto successivo.
Smontare la radice della partizione convertita digitando nel terminale il seguente comando:
sudo umount /mnt
- Deframmentare il sistema digitando nel terminale uno dei seguenti comandi:
Abilitando la compressione (consigliato, non compatibile con Ubuntu 18.04 in modalità legacy BIOS):
sudo btrfs filesystem defragment -rf -czstd / sudo btrfs filesystem defragment -rf -czstd /home
Oppure senza compressione:
sudo btrfs filesystem defragment -rf / sudo btrfs filesystem defragment -rf /home
La deframmentazione può richiedere diversi minuti. Si consiglia di non utilizzare il sistema fino al termine dell'operazione.
Bilanciare il file system digitando nel terminale il seguente comando:
sudo btrfs balance start --full-balance /
Il bilanciamento può richiedere molto tempo. Si consiglia di non utilizzare il sistema fino al termine dell'operazione.
Risoluzione dei problemi
Swapfile
Se il sistema fa uso di una partizione di swap non sono necessarie ulteriori operazioni. Se invece fa uso di un file di swap (swapfile) consultare la pagina SwapfileSuBtrfs.
Ripristino del file system precedente
Il ripristino del file system precedente è possibile solo se il subvolume ext2_saved non è stato eliminato e non sono stati eseguiti deframmentazione e bilanciamento.
Seguire i primi due punti del paragrafo Operazioni preliminari.
Ripristinare il file system precedente digitando nel terminale il seguente comando:
sudo btrfs-convert -r /dev/sda3
Sostituire sda3 con la partizione da ripristinare.
Eseguire il ripristino di Grub.