Wiki Ubuntu-it

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

Versione 78 del 31/05/2020 14.08.41

Nascondi questo messaggio


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, possa rendersi utile anche i ambito desktop.

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:

  • Installare timeshift, fatte le configurazioni iniziali, creare uno snapshot o configurare gli snapshot programmati, utile al ripristino del sistema in caso di problemi con gli upgrade.

  • Se si vuole fare ulteriori personalizzazioni per ottimizzare la gestione degli snapshot e le prestazione, consultare questa guida
  • Se non si ha nessuno swap abilitato e si vuole abilitare lo swapfile su btrfs seguire questa guida

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

  • L'installer di Ubuntu di default crea due subvolumi:

    @: È la radice di Ubuntu /@/file di sistema, ci sono tutti i file di sistema.

    @home: È la home degli utente /@home/utenti.

  • Per creare ed eliminare i subvolumi, il filesystem radice deve essere montato, nel nostro esempio è montato su /mnt, /dev/sdYN è il numero della partizione radice dove si è installato Ubuntu. Il nome al subvolume @nomesubvolume può essere nominato a piacere, il consiglio è di nominarlo in modo da ricordare il mount.

  • Esempio: per la cartella /var/log è buona norma nominarlo in @varlog; La @ iniziale si mantiene per lo standard di Ubuntu e si mostra subito che è un subvolume btrfs, varlog ci ricorda che è il mount del percorso /var/log.

Gestione subvolume

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

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.

Per maggiori dettagli

Nota

  • Cosa succede ai file incomprimibili?
    • Esiste una semplice logica decisionale: se la prima porzione di dati da comprimere non è più piccola dell'originale, la compressione del file è disabilitata, a meno che non ci sia l'opzione di mount compress-force=algoritmo. In tal caso, la compressione verrà sempre tentata sul file solo per essere successivamente scartata, con maggior cicli di CPU. Questo non è ottimale e soggetto a ottimizzazioni e ulteriori sviluppi.

  • Cosa succede se abilito la compressione con i file già scritti?
    • Solo i file creati, modificati e dopo averli montati con l'opzione compress=algoritmo verranno compressi. Per applicare la compressione ai file esistenti utilizzare il comando "btrfs filesystem defragment -calgoritmo".

  • Posso impostare la compressione di un file, cartella o subvolume senza utilizzare l'opzione di mount?
    • Sì. L'utilità chattr supporta l'impostazione dell'attributo del file c che contrassegna l'inode per comprimere i nuovi dati scritti. L'impostazione della proprietà di compressione di un file utilizzando btrfs property set <file> compression <zlib|lzo|zstd> forzerà la compressione da utilizzare su quel file, cartella o subvolume utilizzando l'algoritmo specificato. Per disattivare la compressione btrfs property set <file> compression none

Supporto compressione:

  • zstd è disponibile dal kernel 4.14, i livelli di compressione per zstd sono disponibili dal kernel 5.1, se non si specifica nessun livello, default è 3.

  • zlib supporta i livelli di compressione da 1 a 9, default è 3.

  • lzo non supporta nessun livello di compressione su btrfs

  • ATTENZIONE: Per usare la compressione zstd sulla radice di Ubuntu /@ il requisito è Ubuntu 19.10 o superiore con la versione di GRUB 2.04, dove è stato aggiunto il supporto a zstd.

  • Ad oggi non è possibile impostare i livelli di compressione con il comando user space btrfs filesystem defragment -r -v -czstd, ma ci sono dei lavori iniziali e presto dovrebbe essere disponibile in una nuova versione di btrfs-progs.

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

Per altri 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

  • La compressione di livello 1 zstd:1 potrebbe essere utile in tutti quei casi dove si ha una CPU moderna, un disco moderno come un nvme o ssd.

  • La compressione zstd di livello più alto potrebbe aiutare in tutti quei casi dove si ha dei dati di backup, a discapito delle performance in base al livello usato, ma a favore del risparmio di spazio.

  • La compressione lzo sembra dare risultati soddisfacenti per l'uso generale.

Opzioni di mount

Le opzioni di mount consigliate per uso Desktop e che usano in molti sono 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 gli strumenti 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

Aiuta a libera spazio sul filesystem quando si effettuano molte operazioni sul disco o se si usano molti snapshot, generalmente per un uso desktop e con pochi snapshot, lo si può effettuare con meno frequenza.

Per maggiori dettagli

Btrfs send receive

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

  • Immediata, Atomic COW Snapshots:

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.

  • Trasferimento snapshot incrementale:

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.

  • Non abilitare trim perché viene abilitato in automatico su Ubuntu tramite service systemd quando rileva un disco ssd, nè defrag perché rompe il collegamento con le istantanee e quindi viene occupato tutto lo spazio, è un buon compromesso l'opzione di mount autodefrag.

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.

  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 con i subvolume

Ulteriori risorse


CategoryHomepage