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.

Guida verificata con Ubuntu: 20.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Btrfs è un moderno filesystem copy on write (CoW) per Linux che mira a implementare funzionalità avanzate concentrandosi anche sulla tolleranza agli errori, sulla riparazione e sulla facile amministrazione. Sviluppato congiuntamente da più società, Btrfs è concesso in licenza ai sensi della GPL e aperto al contributo di chiunque.
Date le caratteristiche tecniche, Btrfs è principalmente volto all'ambito server. Tuttavia è da notare come la possibilità di creare snapshot, cioè delle istantanee con dei punti di ripristino applicabili con un clic, abilitare la compressione (oltre al risparmio di spazio, si ha anche un aumento della durata dell'hardware), checksumming dove si ha la garanzia dell'integrità dei dati, restringere e aumentare la partizione online, ''aumentare lo spazio a disposizione aggiungendo un disco a filesystem montato'''.

Per maggiori dettagli.

Installare Ubuntu con filesystem Btrfs

Per installare Ubuntu con il filesystem btrfs e sfruttare tutte le sue funzionalità, dobbiamo procedere con l’installazione manuale indicata QUI, scegliere btrfs al posto di ext4.

Consigli post installazione:

Subvolume

Dettagli

Un sottovolume Btrfs è un filetree POSIX montabile indipendentemente e non un dispositivo a blocchi (e non può essere trattato come uno). La maggior parte degli altri filesystem POSIX ha una singola radice montabile, Btrfs ha una radice montabile indipendente per il volume (sottovolume di livello superiore) e per ogni sottovolume; un volume Btrfs può contenere più di un singolo filetree, può contenere una foresta di filetree. Un sottovolume Btrfs può essere pensato come uno spazio dei nomi di file POSIX.

Per Maggiori dettagli

Nota

Gestione subvolume

Un subvolume nested può essere rimosso come una semplice cartella, inoltre non dobbiamo specificare nessuna opzione di mount su /etc/fstab perché si montano in automatico. Anche un subvolume nested viene escluso dagli snapshot del subvolume superiore, gli snapshot non sono ricorsivi su altri subvolumi.

Subvolume flat

  1. Montare la radice su /mnt:

    sudo mount -t btrfs -o noatime,compress=zstd,autodefrag /dev/sdYN /mnt
  2. Creare un subvolume:

    sudo btrfs subvolume create /mnt/@nomesubvolume
  3. Lista subvolumi:

    sudo btrfs subvolume list /mnt
  4. Eliminare un subvolume:

    sudo btrfs subvolume delete /mnt/@nomesubvolume
  5. Mount di un subvolume:

    sudo mount -t btrfs -o subvol=@nomesubvolume /dev/sdYN /mnt

Subvolume nested

  1. Creare un subvolume:

    sudo btrfs subvolume create /percorso/nomesubvolume
  2. Creare un subvolume sulla home dell'utente:

    sudo btrfs subvolume create /home/nomeutente/nomesubvolume
  3. Lista subvolumi:

    sudo btrfs subvolume list /
  4. Eliminare un subvolume:

    sudo btrfs subvolume delete /percorso/nomesubvolume

Compressione

Dettagli

Btrfs supporta la compressione trasparente e automatica. Ciò non solo riduce la dimensione dei file, ma può anche migliorare le prestazioni, in alcuni casi d'uso specifici (ad esempio thread singolo con I/O di file pesanti), danneggiando ovviamente le prestazioni in altri casi (ad esempio attività multithread e/o cpu con grandi attività file I/O). Le prestazioni migliori si ottengono generalmente con gli algoritmi di compressione più veloci, zstd e lzo , e alcuni benchmark forniscono confronti dettagliati.

Utile anche ad aumentare la durata dei dischi SSD/NVME, questo principalmente perché a causa della compressione ci sono meno operazioni di lettura e scrittura. Facebook è la testimonianza di questo caso d'uso (Facebook usa ovunque in produzione Btrfs):

Also keep in mind we pay really close attention to burn rates for our drives, because obviously at our scale it translates to millions of dollars. Btrfs has improved our burn rates with the compression, as the write amplification goes drastically down, thus extending the life of the drives. Obviously the Facebook scale, recoverability, and workload is going to be drastically different from a random Fedora user. But hardware wise we are pretty close, at least on the disk side. Thanks,

Josef

Per maggiori dettagli

Nota

Supporto compressione:

Livelli di compressione per zstd: (Fonte)

Level

Ratio

Compression (MB/s)

Decompression (MB/s)

1

2.658

438.47

910.51

2

2.744

364.86

886.55

3

2.801

336.33

828.41

4

2.858

286.71

886.55

5

2.916

212.77

556.84

6

2.363

119.82

990.85

7

3.000

154.06

849.30

8

3.011

159.54

875.03

9

3.025

100.51

940.15

10

3.033

118.97

616.26

11

3.036

94.19

802.11

12

3.037

73.45

931.49

13

3.041

55.17

835.26

14

3.087

44.70

716.78

15

3.126

37.30

878.84

Confronto tra lzo, zstd, zlib: benchmark

Esempi

  1. Comprimere un subvolume con zstd:

    sudo btrfs filesystem defragment -r -v -czstd /mnt/@subvolume
  2. Comprimere un file o cartella con zstd:

    sudo btrfs filesystem defragment -r -v -czstd /percorso
  3. Opzione di mount su /etc/fstab con zstd livello 1:

    UUID=UUID / btrfs noatime,compress=zstd:1,autodefrag,subvol=@

Suggerimenti

Opzioni di mount

Le opzioni di mount consigliate per un uso desktop generico: noatime,compress=zstd:1,autodefrag. Per tutte le altre opzioni di mount e maggiori dettagli seguire il wiki di Btrfs MOUNT_OPTIONS

Riparare il filesystem

Se si hanno problemi con il filesystem, il consiglio è di non provare comandi a caso, ma usare i comandi giusti per non peggiorare la situazione, in questo caso seguire attentamente le istruzioni dalla wiki di openSUSE (SUSE è il maggior contributore di Btrfs) QUI

Scrub

Scrub è lo strumento per verificare il checksumming di dati e metadati e cerca di ripararla automaticamente se c'è una ridondanza (raid 1, dup etc...). È consigliato un controllo periodico, su come fare vai alla sezione Manutenzione

Per maggiori dettagli

Balance

Se ci sono molti dati allocati ma inutilizzati o blocchi di metadati, un balance può recuperare parte di quello spazio allocato. Questo è il motivo principale per l'esecuzione di un equilibrio su un file system a dispositivo singolo.

Per maggiori dettagli

Btrfs send receive

Btrfs ha alcune funzionalità chiave che consentono soluzioni di backup efficienti:

Poiché gli snapshot sono atomici, quando viene ripristinata uno snapshot, questo appare alle applicazioni come se si fosse verificata una perdita di potenza (e il filesystem è tornato a uno stato precedente). Pertanto è possibile eseguire il backup dei database senza arrestarli in anticipo.

Determinazione e streaming efficienti delle differenze tra due snapshot, se sono snapshot dello stesso subvolume o hanno una relazione genitore-figlio. Questo è molto più veloce di quanto potrebbe fare rsync, specialmente su file system di grandi dimensioni. (Ad esempio, rsync non può essere a conoscenza di semplici cambiamenti di metadati come nome file, posizione ecc., Ma lo stesso FS ne è certamente consapevole.)

Per maggiori dettagli

Manutenzione

Per eseguire la manutenzione periodica di balance e scrub bisogna installare il tool btrfsmaintenance presente nei repository universe di Ubuntu.

Nota su autodefrag: Abilita la deframmentazione automatica dei file. Se abilitato, piccole scritture casuali in file (in un intervallo di decine di kilobyte, attualmente sono 64 KB) vengono rilevate e messe in coda per il processo di deframmentazione. Non adatto per carichi di lavoro di database di grandi dimensioni.

Non abilitare la manutenzione se non si ha un carico di lavoro pesante, o se si è in single disk (no raid) principalmente questo è pensato per server dove si ha un carico di lavoro pesante. Per uso desktop il consiglio è di non abilitarlo.

  1. Installa btrfsmaintenance:

     sudo apt install btrfsmaintenance
  2. Abilita il timer per aggiornare la configurazione all'avvio del sistema (consigliato):

     sudo systemctl enable btrfsmaintenance-refresh.service
  3. Abilita il timer per balance, di default impostato settimanalmente:

     sudo systemctl enable btrfs-balance.timer
  4. Abilita il timer per scrub, di default impostato mensilmente:

     sudo systemctl enable btrfs-scrub.timer

Per modificare la configurazione editare il file che si trova su: /etc/default/btrfsmaintenance

Nota: Durante il processo di balance potreste notare un rallentamento per il carico IO generato da balance.

Pagina del progetto

Ottimizzazione subvolume su Ubuntu

Nota

Creare vari subvolumi si possono avere vari vantaggi:

Subvolume cartella tmp

  1. Montare la radice su /mnt(La cartella mount è di esempio, si può scegliere o creare altre cartelle per il mount):

    sudo mount -t btrfs -o --options-source /dev/sdYN /mnt
  2. Crea subvolume:

    sudo btrfs subvolume create /mnt/@tmp
  3. Su questa cartella settare i permessi (Sticky bit):

    sudo chmod 1777 /mnt/@tmp
  4. In questa cartella ci sono file temporanei, i file cambiano continuamente, niente di importante, utile disattivare il COW:

    sudo chattr +C /mnt/@tmp
  5. Copia il contenuto della cartella sul subvolume:

    sudo cp -a /mnt/@/tmp/* /mnt/@tmp/
  6. Opzione di mount su /etc/fstab:

    UUID=UUID /tmp btrfs noatime,autodefrag,subvol=@tmp
  7. Se non si vuole creare altro subvolume, si può smontare il filesystem:

    sudo umount /mnt

Subvolume cartella var/tmp

  1. Montare la radice su /mnt(La cartella mount è di esempio, si può scegliere o creare altre cartelle per il mount):

    sudo mount -t btrfs -o --options-source /dev/sdYN /mnt
  2. Crea subvolume:

    sudo btrfs subvolume create /mnt/@vartmp
  3. Su questa cartella settare i permessi (Sticky bit):

    sudo chmod 1777 /mnt/@vartmp
  4. In questa cartella ci sono file temporanei, i file cambiano continuamente, niente di importante, utile disattivare il COW:

    sudo chattr +C /mnt/@vartmp
  5. Copia il contenuto della cartella sul subvolume:

    sudo cp -a /mnt/@/var/tmp/* /mnt/@vartmp/
  6. Opzione di mount su /etc/fstab:

    UUID=UUID /var/tmp btrfs noatime,autodefrag,subvol=@vartmp
  7. Se non si vuole creare altro subvolume, si può smontare il filesystem:

    sudo umount /mnt

Subvolume cartella var/cache

  1. Montare la radice su /mnt(La cartella mount è di esempio, si può scegliere o creare altre cartelle per il mount):

    sudo mount -t btrfs -o --options-source /dev/sdYN /mnt
  2. Crea subvolume:

    sudo btrfs subvolume create /mnt/@varcache
  3. In questa cartella ci sono file di cache, i file cambiano continuamente, niente di importante, utile disattivare il COW:

    sudo chattr +C /mnt/@varcache
  4. Copia il contenuto della cartella sul subvolume:

    sudo cp -a /mnt/@/var/cache/* /mnt/@varcache/
  5. Opzione di mount su /etc/fstab:

    UUID=UUID /var/cache btrfs noatime,autodefrag,subvol=@varcache
  6. Se non si vuole creare altro subvolume, si può smontare il filesystem:

    sudo umount /mnt

Subvolume cartella var/log

  1. Montare la radice su /mnt(La cartella mount è di esempio, si può scegliere o creare altre cartelle per il mount):

    sudo mount -t btrfs -o --options-source /dev/sdYN /mnt
  2. Crea subvolume:

    sudo btrfs subvolume create /mnt/@varlog
  3. In questa cartella ci sono file di log, ci sono continue scritture di file, utile disattivare il COW:

    sudo chattr +C /mnt/@varlog
  4. Copia il contenuto della cartella sul subvolume:

    sudo cp -a /mnt/@/var/log/* /mnt/@varlog/
  5. Opzione di mount su /etc/fstab:

    UUID=UUID /var/log btrfs noatime,autodefrag,subvol=@varlog
  6. Se non si vuole creare altro subvolume, si può smontare il filesystem:

    sudo umount /mnt

Subvolume flatpak

* Per chi non ha flatpak installato, ma deve ancora installarlo, basta semplicemente creare il subvolume, poi installare flatpak.

Subvolume immagini di Virt-Manager

* Per chi non ha Virt-Manager installato, ma deve ancora installarlo, basta semplicemente creare il subvolume, poi installare Virt-Manager.

Subvolume immagini di GNOME-Boxes

* Per chi non ha GNOME-Boxes installato, ma deve ancora installarlo, basta semplicemente creare il subvolume, poi installare GNOME-Boxes.

Comandi principali di Btrfs

  1. Legge e stampa le statistiche di errore IO del dispositivo:

       sudo btrfs device stats / 
  2. Mostra informazioni dettagliate sulle allocazioni interne nei dispositivi:

       sudo btrfs device usage / 
  3. Mostra informazioni dettagliate sull'uso del filesystem interno:

       sudo btrfs filesystem usage / 

Ulteriori risorse


CategoryHomepage

emanuc/pagina-iniziale-btrfs (l'ultima modifica è del 15/12/2022 13.13.24, fatta da andreas-xavier)