Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "emanuc/BtrfsConv"
Differenze tra le versioni 35 e 37 (in 2 versioni)
Versione 35 del 14/11/2021 10.36.45
Dimensione: 11477
Commento: Macro PaginaDiProva
Versione 37 del 08/12/2021 15.51.49
Dimensione: 13963
Autore: jeremie2
Commento: Riorganizzate note nei primi 2 paragrafi
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 12: Linea 12:
'''btrfs-convert''' è uno strumento che consente di convertire partizioni formattate in '''ext2''', '''ext3''', '''ext4''' o '''reiserfs''' nel file system [[AmministrazioneSistema/Filesystem/Btrfs|btrfs]]. 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 root di '''Ubuntu''', considerando un sistema installato in unica partizione (eccetto l'eventuale partizione EFI per i sistemi [[AmministrazioneSistema/Uefi|UEFI]]). Vengono inoltre illustrate tutte le operazioni successive necessarie per rendere il sistema avviabile, efficiente e performante.
'''btrfs-convert''' è uno strumento che consente di convertire partizioni formattate in '''ext2''', '''ext3''', '''ext4''' o '''reiserfs''' nel file system [[AmministrazioneSistema/Filesystem/Btrfs|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 [[AmministrazioneSistema/Uefi|UEFI]]). Vengono inoltre illustrate tutte le operazioni successive necessarie per rendere il sistema avviabile, efficiente e performante.
Linea 17: Linea 17:
La partizione da convertire deve avere almeno il 10% di spazio disponibile. Una volta completata la procedura non sarà possibile tornare al file system precedente, a meno di non reinstallare il sistema.}}}

{{{#!wiki note
Di norma è preferibile eseguire un [[AmministrazioneSistema/BackupDelSistema|backup]] dei dati e [[Installazione/InstallareUbuntu|reinstallare]] '''Ubuntu''' scegliendo la voce '''[[Installazione/InstallareUbuntu#manu|Altro]]''' nella schermata '''[[Installazione/InstallareUbuntu#Tipo_di_installazione|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.}}}
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 [[AmministrazioneSistema/BackupDelSistema|backup]] dei dati e [[Installazione/InstallareUbuntu|reinstallare]] '''Ubuntu''' scegliendo la voce '''[[Installazione/InstallareUbuntu#manu|Altro]]''' nella schermata '''[[Installazione/InstallareUbuntu#Tipo_di_installazione|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.}}}
Linea 27: Linea 24:

 0. Avviare una sessione ''[[Installazione/CreazioneLiveUsb/CreatoreDischiDiAvvio|live]]'' del [[Rilasci|rilascio]] più recente di '''Ubuntu''' (minimo '''20.04''').
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'''.

 0. Avviare una sessione ''[[Installazione/CreazioneLiveUsb/CreatoreDischiDiAvvio|live]]'' del [[Rilasci|rilascio]] più recente di '''Ubuntu''' (minimo '''20.04'''). Se il sistema da convertire è installato in modalità [[AmministrazioneSistema/Uefi|UEFI]], assicurarsi di avviare la sessione live [[AmministrazioneSistema/Uefi#Avvio_della_Live|in tale modalità]].
 {{{#!wiki tip
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 [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://btrfs-progs|btrfs-progs]] presente nei repository. Invece per '''Ubuntu 18.04''' scaricare ed [[AmministrazioneSistema/InstallareProgrammi/PacchettiDebian|installare manualmente]] i pacchetti [[http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/btrfs-progs_5.4.1-2_amd64.deb|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|libbtrfs0_5.4.1-2_amd64.deb]] e [[http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/libbtrfsutil1_5.4.1-2_amd64.deb|libbtrfsutil1_5.4.1-2_amd64.deb]].}}}
 
 0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare]] la partizione da convertire.
 
 0. Verificare l'integrità del file system da convertire digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo fsck -f /dev/sda3}}}

= Conversione e creazione dei subvolume =

 0. Convertire il file system digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo btrfs-convert /dev/sda3
}}}{{{#!wiki note
Questa operazione può richiedere diversi minuti.}}}

 0. Montare la partizione convertita digitando nel [[AmministrazioneSistema/Terminale|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}}}

 0. Creare uno snapshot della radice con nome '''@''' digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo btrfs subvolume snapshot /mnt /mnt/@}}}

 0. Creare un subvolume per la Home con nome '''@home''' digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo btrfs subvolume create /mnt/@home}}}

 0. Spostare i dati dalla cartella `/home` al subvolume '''@home''' digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo mv /mnt/@/home/* /mnt/@home}}}

 0. Eliminare dalla radice della partizione tutti i file e le cartelle, eccetto i subvolume '''@''', '''@home''' e '''ext2_saved''', digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
find /mnt -mindepth 1 -maxdepth 1 ! -path '/mnt/@*' ! -path '/mnt/ext2_saved' -exec sudo rm -r "{}" +}}}
Linea 30: Linea 60:
Se il sistema da convertire è stato installato in modalità [[AmministrazioneSistema/Uefi|UEFI]], assicurarsi di avviare la sessione live [[AmministrazioneSistema/Uefi#Avvio_della_Live|in tale modalità]].}}}
 {{{#!wiki note
In alternativa è possibile operare da un altro sistema '''Ubuntu''' installato in dual boot. In tal caso per operare da '''Ubuntu 20.04''' o successivo sarà necessario [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://btrfs-progs|btrfs-progs]] presente nei repository. Invece per '''Ubuntu 18.04''' scaricare ed [[AmministrazioneSistema/InstallareProgrammi/PacchettiDebian|installare manualmente]] i pacchetti [[http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/btrfs-progs_5.4.1-2_amd64.deb|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|libbtrfs0_5.4.1-2_amd64.deb]] e [[http://ubuntu.mirror.garr.it/ubuntu/pool/main/b/btrfs-progs/libbtrfsutil1_5.4.1-2_amd64.deb|libbtrfsutil1_5.4.1-2_amd64.deb]].}}}
 
 0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare]] la partizione da convertire.
 {{{#!wiki note
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'''.}}}
 
 0. Verificare l'integrità del file system da convertire digitando il seguente comando nel [[RigaDiComando|terminale]]:{{{
sudo fsck.ext4 -f /dev/sda3}}}

= Conversione =

 0. Convertire il file system:{{{
sudo btrfs-convert /dev/sda3
}}}
 0. 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
}}}
 {{{#!wiki important
 Eliminando lo snapshot '''ext2_saved''', non si potrà più ripristinare la partizione ext4.
}}}
 0. Eliminare il volume '''ext2_saved''' per liberare spazio{{{
sudo btrfs subvolume delete /mnt/ext2_saved
}}}

 {{{#!wiki note
   Questa procedura ti da la possibilità di dividere i volumi root e home, per sfruttare le funzionalità
   di Btrfs, ad esempio gli snapshot.
}}}
 0. Creare lo '''snapshot''' della partizione Btrfs e rinominarlo in '''@''':{{{
sudo btrfs subvolume snapshot /mnt/ /mnt/@
}}}
 0. Creare il subvolume della cartella '''/home''':{{{
sudo btrfs subvolume create /mnt/@home
}}}
 0. Spostare i dati della vecchia '''Home''' nel subvolume '''@home''':{{{
sudo mv /mnt/@/home/* /mnt/@home/
}}}

 {{{#!wiki note
 È fortemente consigliato deframmentare i volumi e bilanciare il file system. Il nuovo file system 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. Questa procedura eliminerà la possibilità di ripristinare il file system precedente.
}}}
 0. Prima di procedere al defrag e bilanciamento, controllare che il volume '''ext2_saved''' sia del tutto rimosso:{{{
   sudo btrfs subvolume list -d /mnt/
}}}
 {{{#!wiki note
 Se è in fase di eliminazione, si vedrà a schermo un risultato simile '''ID 1020 gen 4140456 top level 0 path DELETED''', se è stato rimosso non restituirà nessun risultato, quindi si può procedere.
}}}
 0. Procedura per deframmentare senza comprimere i dati:
  * Deframmentare il subvolume '''@''':{{{
sudo btrfs filesystem defragment -rf /mnt/@
}}}
  * Deframmentare il volume '''@home''':{{{
sudo btrfs filesystem defragment -rf /mnt/@home
}}}
 0. Procedura per deframmentare e comprimere i dati con l'algoritmo '''zstd''' livello '''3''':
    * Deframmentare il volume '''@''':{{{
sudo btrfs filesystem defragment -rf -czstd /mnt/@
}}}
    * Deframmentare il volume '''@home''':{{{
sudo btrfs filesystem defragment -rf -czstd /mnt/@home
}}}
 0. Bilanciare il file system:{{{
sudo btrfs balance start /mnt/
}}}
 {{{#!wiki note
 Aspettiamo il Timer di 10 secondi con un avviso di un '''full-balance''' che potrebbe richiedere molto tempo, in base alla dimensione del file system.
}}}

 0. Eliminare dalla radice della partizione tutti i file e le cartelle, eccetto i subvolume '''@''' e '''@home''', digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
find /mnt -mindepth 1 -maxdepth 1 ! -path '*/@*' -execdir sudo rm -r "{}" +}}}

 0. Terminato il bilanciamento, smontare la partizione:{{{
sudo umount /mnt
}}}

= Accesso al sistema con Chroot =
Questa operazione può richiedere alcuni minuti.}}}

= Aggiornamento del file fstab =

 0. Prendere nota del nuovo UUID della partizione convertita, visualizzabile digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo blkid -s UUID -o value /dev/sda3}}}

 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/mnt/@/etc/fstab`.

 0. 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}}}

 0. 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|Swapfile]].

 0. 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}}}

 0. Salvare il file e chiudere l'editor di testo.

 0. Smontare la partizione:{{{
sudo umount /mnt}}}

<<Anchor(bootloader)>>
= Boot loader e btrfs-progs =
Linea 114: Linea 93:
  * Abilitando la compressione (consigliato):{{{
sudo mount -t btrfs -o compress=zstd:1,subvol=@ /dev/sda3 /mnt}}}
  * Abilitando la compressione (consigliato, non compatibile con '''Ubuntu 18.04''' in modalità legacy BIOS):{{{
sudo mount -o compress=zstd:1,subvol=@ /dev/sda3 /mnt}}}
Linea 117: Linea 96:
sudo mount -t btrfs -o subvol=@ /dev/sda3 /mnt}}}

 0. Montare le cartelle `/dev`, `/dev/pts`, `/proc`, `/sys` e `/run` digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
for i in dev dev/pts proc sys run; do sudo mount --bind /$i /mnt/$i; done}}}

 0. Solo per sistemi [[AmministrazioneSistema/Uefi|UEFI]], montare anche `/sys/firmware` e la partizione EFI digitando nel [[RigaDiComando|terminale]] i seguenti comandi:{{{
sudo mount --bind /sys/firmware /mnt/sys/firmware
sudo mount -o subvol=@ /dev/sda3 /mnt}}}

 0. Montare le cartelle necessarie digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
for i in dev dev/pts proc run sys sys/firmware; do sudo mount --bind /$i /mnt/$i; done}}}

 0. Solo per sistemi [[AmministrazioneSistema/Uefi|UEFI]], montare anche la partizione EFI digitando nel [[RigaDiComando|terminale]] il seguente comando:{{{
Linea 129: Linea 107:

 0. Prendere nota del nuovo UUID della partizione convertita, visualizzabile digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
lsblk -no UUID /dev/sda3}}}

 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e un [[Ufficio/EditorDiTesto|editor]] di testo (si consiglia [[Ufficio/EditorDiTesto/Nano|nano]]) il file `/etc/fstab`.
 
 0. Individuare la riga che fa riferimento alla partizione di Root, 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}}}

 0. Incollare in fondo al file le seguenti righe, sostituendo `<NUOVO UUID>` con il valore annotato in precedenza:
  * Abilitando la compressione (consigliato):{{{
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}}}

 0. Salvare il file e chiudere l'editor di testo.
Linea 157: Linea 117:
 0. In '''Ubuntu 20.04 e successive''' [[AmministrazioneSistema/InstallareProgrammi|Installare]] direttamente il pacchetto [[apt://btrfs-progs|btrfs-progs]], in '''Ubuntu 18.04''' seguire le procedure di [[#btrfsprogs|questo paragrafo]] per installare il pacchetto `btrfs-progs`.  0. Scaricare e installare il pacchetto ''btrfs-progs'':
  * Per '''Ubuntu 20.04''' e successivi digitare nel [[RigaDiComando|terminale]] il seguente comando:{{{
apt install btrfs-progs}}}
  * Per '''Ubuntu 18.04''' digitare nel [[RigaDiComando|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}}}
Linea 163: Linea 130:
for i in dev/pts dev proc sys/firmware sys run; do sudo umount -l /mnt/$i; done}}} for i in dev/pts dev proc run sys/firmware sys; do sudo umount /mnt/$i; done}}}
Linea 173: Linea 140:
= Swap = = 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, [[#rollback|ripristinare il file system precedente]].
{{{#!wiki important
Non sarà possibile [[#rollback|ripristinare il file system precedente]] dopo aver applicato le indicazioni di questo paragrafo.}}}

 0. Montare la radice della partizione convertita digitando nel [[AmministrazioneSistema/Terminale|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}}}

 0. Eliminare il subvolume '''ext2_saved''' digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo btrfs subvolume delete /mnt/ext2_saved}}}

 0. Attendere qualche minuto, quindi verificare che l'eliminazione del subvolume '''ext2_saved''' sia stata portata a termine digitando nel [[AmministrazioneSistema/Terminale|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.<<BR>>

  * Se non viene restituito alcun risultato procedere al punto successivo.

 0. Smontare la radice della partizione convertita digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo umount /mnt}}}


 0. Deframmentare il sistema digitando nel [[AmministrazioneSistema/Terminale|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}}}{{{#!wiki note
La deframmentazione può richiedere diversi minuti. Si consiglia di non utilizzare il sistema fino al termine dell'operazione.}}}

 0. Bilanciare il file system digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo btrfs balance start --full-balance /}}}
 {{{#!wiki note
Il bilanciamento può richiedere molto tempo. Si consiglia di non utilizzare il sistema fino al termine dell'operazione.}}}

= Risoluzione dei problemi =

== Swapfile ==
Linea 176: Linea 189:

<<Anchor(rollback)>>
== 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.

 0. Seguire i primi due punti del paragrafo [[#preliminari|Operazioni preliminari]].
 
 0. Ripristinare il file system precedente digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo btrfs-convert -r /dev/sda3}}}
 Sostituire `sda3` con la partizione da ripristinare.

 0. Eseguire il [[AmministrazioneSistema/Grub/Ripristino|ripristino di Grub]].


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

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.

  1. 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.

  2. Individuare la partizione da convertire.

  3. Verificare l'integrità del file system da convertire digitando nel terminale il seguente comando:

    sudo fsck -f /dev/sda3

Conversione e creazione dei subvolume

  1. Convertire il file system digitando nel terminale il seguente comando:

    sudo btrfs-convert /dev/sda3

    Questa operazione può richiedere diversi minuti.

  2. 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
  3. Creare uno snapshot della radice con nome @ digitando nel terminale il seguente comando:

    sudo btrfs subvolume snapshot /mnt /mnt/@
  4. Creare un subvolume per la Home con nome @home digitando nel terminale il seguente comando:

    sudo btrfs subvolume create /mnt/@home
  5. Spostare i dati dalla cartella /home al subvolume @home digitando nel terminale il seguente comando:

    sudo mv /mnt/@/home/* /mnt/@home
  6. 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

  1. Prendere nota del nuovo UUID della partizione convertita, visualizzabile digitando nel terminale il seguente comando:

    sudo blkid -s UUID -o value /dev/sda3
  2. Aprire con i privilegi di amministrazione e con un editor di testo il file /mnt/@/etc/fstab.

  3. 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
  4. 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.

  5. 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
  6. Salvare il file e chiudere l'editor di testo.
  7. Smontare la partizione:

    sudo umount /mnt

Boot loader e btrfs-progs

  1. 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
  2. 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
  3. 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.

  4. Effettuare il chroot sul sistema digitando nel terminale il seguente comando:

    sudo chroot /mnt
  5. 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
  6. Aggiornare la configurazione di Grub digitando nel terminale il seguente comando:

    update-grub
  7. 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
  8. Uscire dal chroot digitando nel terminale il seguente comando:

    exit
  9. 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
  10. Solo per sistemi UEFI, smontare la partizione EFI digitando nel terminale il seguente comando:

    sudo umount /mnt/boot/efi
  11. Smontare il subvolume @ digitando nel terminale il seguente comando:

    sudo umount /mnt
  12. 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.

  1. 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
  2. Eliminare il subvolume ext2_saved digitando nel terminale il seguente comando:

    sudo btrfs subvolume delete /mnt/ext2_saved
  3. 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.
  4. Smontare la radice della partizione convertita digitando nel terminale il seguente comando:

    sudo umount /mnt
  5. 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.

  6. 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.

  1. Seguire i primi due punti del paragrafo Operazioni preliminari.

  2. Ripristinare il file system precedente digitando nel terminale il seguente comando:

    sudo btrfs-convert -r /dev/sda3

    Sostituire sda3 con la partizione da ripristinare.

  3. Eseguire il ripristino di Grub.

Ulteriori risorse

CategoryAmministrazione