Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 28 del 04/11/2021 18.08.49

Nascondi questo messaggio


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. 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 UEFI). Vengono inoltre illustrate tutte le operazioni successive necessarie per rendere il sistema avviabile, efficiente e performante.

Per procedere alla conversione è necessario che la partizione abbia 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.

Di norma non è consigliabile procedere con questo tipo di conversione. Piuttosto è 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.

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.

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.

  1. 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
  2. Installare i pacchetti scaricati.

Uso del programma

Operazioni preliminari

Nel seguente esempio viene convertita nel file system btrfs la partizione /dev/sda3 con file system ext4.

  1. 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"
  2. Verificare il file system da convertire:

    sudo fsck.ext4 /dev/sda3

Conversione

  1. Convertire il file system:

    sudo btrfs-convert /dev/sda3
  2. 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
    • Eliminando lo snapshot ext2_saved, non si potrà più ripristinare la partizione ext4.

  3. Eliminare il volume ext2_saved per liberare spazio

    sudo btrfs subvolume delete /mnt/ext2_saved
    • Questa procedura ti da la possibilità di dividere i volumi root e home, per sfruttare le funzionalità di Btrfs, ad esempio gli snapshot.
  4. Creare lo snapshot della partizione Btrfs e rinominarlo in @:

    sudo btrfs subvolume snapshot /mnt/ /mnt/@
  5. Creare il subvolume della cartella /home:

    sudo btrfs subvolume create /mnt/@home
  6. Spostare i dati della vecchia Home nel subvolume @home:

    sudo mv /mnt/@/home/* /mnt/@home/
    • È 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.
  7. Prima di procedere al defrag e bilanciamento, controllare che il volume ext2_saved sia del tutto rimosso:

       sudo btrfs subvolume list -d /mnt/
    • 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.

  8. 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
  9. 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
  10. Bilanciare il file system:

    sudo btrfs balance start /mnt/
    • 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.

  11. Opzionalmente rimuovere le cartelle originali (QUESTO é ROTTO E DA SISTEMARE O EVITARE):

    find /mnt -maxdepth 1 -type d -not -path '*/@*' -not -name "." -execdir sudo rm -r "{}" \;
  12. Terminato il bilanciamento, possiamo smontare la partizione:

    sudo umount /mnt/

Accesso al sistema con Chroot

  1. Eseguire un Chroot alla radice della partizione convertita, con uno dei seguenti comandi:

    • Senza compressione:

      sudo mount -t btrfs -o subvol=@ /dev/sda3 /mnt
    • Con compressione (consigliato):

      sudo mount -t btrfs -o compress=zstd:1,subvol=@ /dev/sda3 /mnt
  2. Montare la partizione EFI (Solo su BIOS UEFI):

    sudo mount /dev/sdaN /mnt/boot/efi
  3. Montare le cartelle dev, proc, sys, run:

    for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
  4. Effettuare il chroot sul sistema:

    sudo chroot /mnt
  5. Annotare il nuovo UUID delle cartelle @ e @home della partizione, visibile con il seguente comando:

    sudo blkid /dev/sda3
  6. 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
  7. 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=@ 
      UUID=NUOVO_UUID btrfs /home noatime,autodefrag,subvol=@home
    • Con compressione (consigliato):

      UUID=NUOVO_UUID btrfs / noatime,compress=zstd:1,autodefrag,subvol=@ 
      UUID=NUOVO_UUID btrfs /home noatime,compress=zstd:1,autodefrag,subvol=@home
    • Se presente eliminare la riga dello swapfile, su Btrfs deve essere creato su un subvolume separato e con l'attributo nocow

  8. Reinstallare e aggiornare il bootloader Grub con i comandi:

    grub-install /dev/sda
    update-grub2
  9. In Ubuntu 20.04 e successive Installare direttamente il pacchetto btrfs-progs, in Ubuntu 18.04 seguire le procedure di questo paragrafo per installare il pacchetto btrfs-progs.

  10. Uscire dal Chroot:

    exit
  11. Smontare tutte le cartelle:

    cd ~
    for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
  12. Smontare la partizione convertita:

    sudo umount -t btrfs -o subvol=@ /dev/sda3 /mnt

Al termine riavviare il sistema.

Ulteriori risorse

CategoryAmministrazione