Btrfs/it

Btrfs è Article description::un [[filesystem CoW (copy-on-write, copia-in-scrittura) adatto a Linux che mira ad implementare funzionalità avanzate, concentrandosi sulla tolleranza agli errori, la riparazione e la facilità di amministrazione.]] Sviluppato congiuntamente con Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO, e molti altri, btrfs è rilasciato sotto licenza GPL ed è aperto ai contributi di chiunque.

Caratteristiche
Ext4 è sicuro e stabile e può gestire filesystem di grandi dimensioni con estensioni, quindi perché cambiare? Mentre è vero che Btrfs è ancora considerato sperimentale e sta crescendo in stabilità, il momento in cui diventerà il filesystem di default per i sistemi Linux si sta avvicinando. Qualche distribuzione Linux ha già iniziato il passaggio ad esso già sui rilasci correnti. Btrfs ha molte caratteristiche avanzate in comune con ZFS, il che rende il file system ZFS popolare con le distribuzioni BSD e i dispositivi NAS.


 * Copy on Write (CoW) e snapshotting - Rende i backup incrementali indolori anche da un filesystem "hot" o da una macchina virtuale (VM).
 * File level checksums - Metadata per ogni file include un checksum che è utilizzato per rilevare e correggere gli errori.
 * Compression - I files possono essere compressi e decompressi immediatamente, e così vengono migliorate le performance in velocità di lettura.
 * Auto deframmentazione - I filesystems sono sintonizzati da un thread di fondo mentre sono in uso.
 * Sottovolumi - I filesystems possono condividere un singola parte di spazio del disco invece di essere ripartiti in partizioni.
 * RAID - Btrfs esegue le proprie implementazioni RAID in modo che LVM o non siano necessari per avere RAID. Attualmente sono supportati RAID 0, 1 e 10; RAID 5 e 6 sono considerati instabili.
 * Le partitioni sono optional - Mentre Btrfs può lavorare con le partizioni, esso ha ANCHE il potenziale di poter utilizzare i dispositivi direttamente.
 * Deduplicazione dei dati - C'è un supporto limitato alla deduplicazione dei dati; tuttavia, la deduplicazione diventerà una caratteristica standard di Btrfs. Questa abilita Btrfs a salvare spazio confrontando i file tramite diffrazioni binarie.

I nuovi filesystem raggruppati sfrutteranno facilmente i vantaggi di Btrfs con il suo copy-on-write e le sue altre caratteristiche avanzate. Ceph è un esempio di filesystem raggruppato che sembra essere promettente, e può trarre vantaggio da Btrfs.

Kernel
Attivare le seguenti opzioni del kernel per abilitare il supporto Btrfs:

Emerge
Il pacchetto contiene le utilità necessarie per lavorare con il filesystem Btrfs.

Utilizzo
Digitare lunghi comandi Btrfs può diventare rapidamente un problema. Ogni comando (oltre al comando iniziale ) può essere ridotto ad una breve serie di istruzioni. Questo metodo è utile quando si lavora da linea di comando per ridurre il numero di caratteri digitati.

Per esempio, per deframmentare un filesystem situato su, di seguito viene mostrato un comando integrale:

Abbreviare ciascuno dei comandi dopo riducendoli al loro prefisso unico e più breve. In tale contesto, unico significa che nessun altro comando corrisponderà a quel comando più breve. La versione breve del comando di cui sopra, quindi, è:

Nessun altro comando inizia con  ;   è il solo. La stessa cosa vale per il sotto-comando, sotto il comando.

Creazione
Per creare un filesystem Btrfs nella partizione :

Nell'esempio sopra, sostituire  con il numero di partizione e   con la lettera corrispondente al disco che deve essere formattato. Per esempio, per formattare la terza partizione nel primo disco del sistema con Btrfs, eseguire:

Montaggio
Dopo la loro creazione, i filesystems possono essere montati in vari modi:


 * - Montare manualmente.
 * - Definire il mount points in abilitando il montaggio automatico all'avvio del sistema.
 * Removable media - Montaggio automatico a richiesta (utile per i drives USB).
 * AutoFS - Montaggio automatico all'accesso del filesystem.

Conversione dei filesystems ext*
E' possibile convertire i filesystems ext2, ext3 e ext4 a Btrfs utilizzando l'utilità.

Le seguenti istruzioni supportano solamente la conversione di filesystems che non sono montati. Per convertire la partizione di root, avviare con il disco di recupero del sistema (SystemRescueCD è ottimo) ed eseguire i comandi di conversione sulla partizione di root.

Per prima cosa assicurarsi che il mount point sia smontato:

Verificare l'integrità del filesystem non-root utilizzando il comando appropriato. Nell'esempio seguente, il filesystem è ext4:

Utilizzare per convertire il dispositivo ext* formattato dentro il dispositivo Btrfs formattato:

Assicurarsi di modificare il file dopo che il dispositivo è stato formattato cambiando la colonna relativa al filesystem da ext4 a Btrfs:

Deframmentazione
Un'altra caratteristica di Btrfs è la deframmentazione online. Per deframmentare un filesystem di root Btrfs eseguire:

The  mount option sets the default behavior to online defragmentation.

Compressione
Btrfs supporta una compressione trasparente usando zlib, lzo e zstd (v5.1.0) compression algorithms.

E' possibile comprimere files specifici utilizzando gli attributi del file:

L'opzione di montaggio  imposta il comportamento di default di comprimere tutti i nuovi files creati. Per recomprimere l'intero filesystem, eseguire il seguente comando:

In base alle performance della CPU e del disco, utilizzare la compressione lzo potrebbe migliorare l'intero rendimento.

Come alternativa a lzo è possibile usare gli algoritmi di compressione zlib o zstd. Zlib è più lento ma ha un maggiore rapporto di compressione, mentre zstd ha un buon rapporto tra i due.

Per forzare la compressione zlib su tutto il filesystem:

Substitute zstd for zlib in the example above to activate zstd compression.

Livello di compressione
Dalla versione del kernel 4.15.0, la compressione zlib ora può essere impostata dai livelli 1-9. Dalla versione del kernel 5.1.0 zstd può essere impostato ai livelli 1-15. Ad esempio, per impostare zlib sulla compressione massima al momento del montaggio:

Oppure per impostare una compressione minima:

Oppure regolare la compressione rimontando:

Il livello di compressione dovrebbe essere visibile in o controllando l'output  più recente utilizzando il seguente comando:

Adjust fstab for compression
Once a drive has been remounted or adjusted to compress data, be sure to add the appropriate modifications to the file. In this example, zstd compression is set with a level of 9 at mount time:

Rapporto di compressione e utilizzo del disco
I soliti strumenti dello spazio utente per determinare lo spazio utilizzato e libero come e  possono fornire risultati imprecisi su una partizione "Btrfs" a causa di differenze di progettazione intrinseche nel modo in cui i file vengono scritti rispetto a, ad esempio, "ext2/3/4".

Si consiglia quindi di utilizzare le alternative du/df fornite dallo strumento btrfs userspace. In aggiunta a ciò, lo strumento che si trova nel pacchetto sys-fs/compsize può essere utile per fornire ulteriori informazioni riguardo rapporti di compressione e l'utilizzo del disco di file compressi. I seguenti sono esempi di utilizzo di questi strumenti per una partizione btrfs montata in.

Più dispositivi (RAID)
Btrfs può essere utilizzato con più dispositivi a blocchi per creare RAID. L'utilizzo di Btrfs per creare filesystem che si estendono su più dispositivi è molto più semplice rispetto alla creazione utilizzando poiché non è necessario alcun tempo di inizializzazione per la creazione.

BTRFS gestisce dati e metadati separatamente. Questo è un fattore importante da tenere a mente quando si utilizza un filesystem multi-dispositivo. È possibile utilizzare profili separati per gruppi di blocchi di dati e metadati. Ad esempio, i metadati potrebbero essere configurati su più dispositivi in ​​RAID1, mentre i dati potrebbero essere configurati su RAID5. Questo profilo è possibile quando si utilizzano tre o più dispositivi a blocchi, poiché RAID5 richiede un minimo di 3 dispositivi a blocchi.

Questo tipo di profilo offre il vantaggio della ridondanza per i metadati su ciascun dispositivo e dello striping per i dati tra i dispositivi, il che aumenta la velocità di lettura. Lo svantaggio di questo profilo è che viene utilizzato più spazio del necessario per i metadati e le velocità di scrittura sono ridotte per i blocchi di dati, poiché RAID5 utilizza un bit di parità.

Creazione
Il metodo più semplice consiste nell'utilizzare la totalità dei dispositivi a blocchi non partizionati per creare un filesystem che si estende su più dispositivi. Ad esempio, per creare un filesystem in modalità RAID1 su due dispositivi:

Conversione
La conversione tra i profili RAID è possibile con il sottocomando balance. Ad esempio, supponiamo che tre dispositivi a blocchi siano attualmente configurati per RAID1 e montati su. È possibile convertire i dati in questo profilo da RAID1 a RAID5 utilizzando il seguente comando:

La conversione può essere eseguita mentre il filesystem è online e in uso. Le possibili modalità RAID in btrfs includono RAID0, RAID1, RAID5, RAID6 e RAID10. Si veda la BTRFS wiki per più informazioni.

Addition
Additional devices can be added to existing multi device file systems. Follow the removal section below.

A riskier, but faster, alternative to safely removing a device is to shut the system down (or if the system supports hot swappable drives, at least unmount the filesystem), physically disconnect and remove the device that is to be replaced, substituted and connect the new device in it's place, power up the system (if necessary).

Note: Systems that will be power cycled will have the multi device filesystem fail to mount, since a device has been physically removed from the pool.

Once the system is booted, mount the multi-device filesystem with, then perform the following steps on adding a new device.

After the device has been re-added it is then necessary to re-balance the filesystem to be sure data is spanned across the newly added device:

Per percorso del dispositivo
I dispositivi a blocchi (dischi) possono essere rimossi dai filesystem multi-dispositivo utilizzando il sottocomando btrfs device remove:

Per ID dispositivo
Usa il sottocomando usage per determinare gli ID del dispositivo:

Quindi usa l'ID del dispositivo per rimuovere il dispositivo, in questo caso verrà rimosso:

Resizing
btrfs partitions can be resized while online using the built-in resize subcommand. For example, to add 50 gigabytes of space to the rootfs:

The command can also fill all available space:

Sottovolumi
Come detto sopra nell'elenco delle funzioni, Btrfs può creare sottovolumi. I sottovolumi possono essere utilizzati per meglio organizzare ed amministrare i dati. Essi diventano potenti specialmente se combinati con gli snapshots. Va fatta una distinzione importante tra i sottovolumi Btrfs e i sottovolumi creati dal Logical Volume Management (LVM). I sottovolumi Btrfs non sono dispositivi a livello di blocco, essi sono spazi di nomi di file POSIX. Essi possono essere creati in qualsiasi posizione del filesystem ed agiranno come qualsiasi altra directory nel sistema con un avvertimento: i sottovolumi possono essere montati e smontati.I sottovolumi sono nidificati (possono essere creati all'interno di altri sottovolumi), e facilmente creati o rimossi.

Creazione
Per creare un sottovolume, eseguire il seguente comando all'interno di un filesystem's name space Btrfs:

Rimpiazzare  con la destinazione desiderata e il nome del sottovolume. Per esempio, se un filesystem Btrfs esiste su, un sottovolume può essere creato al suo interno utilizzando il seguente comando:

Lista
Per vedere i sottovolumi che sono stati creati, utilizzare il comando  seguito dalla posizione del filesystem Btrfs. Se la directory corrente è da qualche parte all'interno di un filesystem Btrfs, il seguente comando mostrerà i sottovolumi che esistono nel filesystem:

Se un filesystem Btrfs con sottovolumi esiste nel punto di mount creato nel comando dell'esempio precedente, l'output del comando di elenco sarà simile a quanto segue:

Rimozione
All available subvolume paths in a Btrfs filesystem can be seen using the list command above.

I sottovolumi possono essere opportunamente rimossi utilizzando il comando  seguito dal percorso del sottovolume. Tutti i percorsi dei sottovolumi disponibili in un filesystem Btrfs possono essere elencati utilizzando il comando di elencazione di cui sopra.

Come spiegato sopra, rimpiazzare  con il percorso giusto del sottovolume che deve essere rimosso. Per cancellare il sottovolume utilizzato negli esempi precedenti, dovrà essere eseguito il seguente comando:

Istantanee
Le istantanee (Snapshots) sono sottovolumi che condividono dati e metadati con gli altri sottovolumi. Questo è reso possibile dalla capacità Copy on Write (CoW) di Btrfs. Gli Snapshots possono essere utilizzati per svariati scopi, uno dei quali è quello di creare backups di strutture di filesystem a punti specifici nel tempo.

Se il filesystem root è Btrfs, è possibile creare una snapshot utilizzando i comandi :

Il seguente breve script da shell può essere aggiunto al lavoro sincronizzato di cron per creare un backup di snapshot sincronizzato del filesystem Btrfs di root. Tali backup sincronizzati possono essere regolati in base a quello che preferisce l'utente.

Montaggio
Un sottovolume può essere montato in una posizione diversa da quella in cui è stato creato, oppure gli utenti possono scegliere di non montarlo affatto. Per esempio, l'utente può creare un filesystem Btrfs su e creare i sottovolumi  e. I sottovolumi potrebbero così essere montati su e su, con il livello superiore originale lasciato smontato. Ciò si traduce in una configurazione dove il percorso relativo dei sottovolumi è diverso dal percorso effettivo del sottovolume di livello superiore.

Per montare un sottovolume, eseguire il comando seguente, in cui  è il percorso relativo del sottovolume dal sottovolume di livello superiore, percorso ottenibile attraverso il comando  :

Similmente, si può aggiornare la tabella del filesystem per montare i propri sottovolumi Btrfs facendo così:

Filesystem check
With a failing disk or corrupted data, it may be necessary to run the a filesystem check. Typically filesystem check commands are handled through the prefix, but for btrfs filesystems, checks are handled via the  subcommand:

Multi device filesystem mount fails
After ungracefully removing one or more devices from a multi device filesystem, attempting to mount the filesystem will fail:

This type of mount failure could be caused by missing one or more devices from the multi device filesystem. Missing devices can be detected by using the subcommand. In the following example is one of the devices still connected to the multi device filesystem:

Missing device can be ungracefully dropped from the filesystem by using the following command:

Utilizzo con immagini disco VM
Quando si utilizza Btrfs con le immagini del disco della macchina virtuale, è meglio disabilitare la copia su scrittura sulle immagini del disco per accelerare le prestazioni di I/O. Questa operazione può essere eseguita solo su file appena creati. È anche possibile disabilitare CoW su tutti i file creati all'interno di una determinata directory. Ad esempio, utilizzando il comando :

Cancellare lo spazio libero della cache
E' possibile cancellare lo spazio libero della cache di Btrfs montando tale filesystem con l'opzione di mount. Per esempio:

Consumo eccessivo di memoria (cache del disco) da parte di Btrfs
Quando si utilizza qualche speciale abilità di Btrfs (ad esempio facendo molte copie  oppure creando un numero considerevole di snapshot), può essere consumata molta memoria che non viene però liberata abbastanza velocemente dalla cache inode del kernel. Questo può non essere scoperto se la memoria dedicata alla cache del disco non è visibile tramite le utilità di monitoraggio tradizionali. Per esempio l'utilità (disponibile come parte del pacchetto ) è stata creata specificatamente per determinare quanta memoria kernel viene consumata:

Se la cache inode sta consumando troppa memoria, il kernel può essere istruito manualmente di far cadere la cache ripetendo un valore intero sul file.

Per stare sicuri, e per aiutare il kernel a determinare il valore massimo di memoria utilizzabile, eseguire un "prima" dei seguenti comandi :

Molte volte gli utenti Btrfs avranno bisogno probabilmente di per recuperare solo gli oggetti lastra (dentries e btrfs_inodes):

Per cancellare interamente la cache del disco (oggetti lastra "e" la pagina cache), invece, utilizzare :

Maggiori informazioni sulle lastre del kernel possono essere trovate in questo voce del blog dedoimedo.

Errori di montaggio Btrfs, ritorno di mount: filesystem di tipo 'btrfs' sconosciuto
La soluzione originale di Tim su Stack Exchange ha inspirato la seguente soluzione: costruire il kernel manualmente invece di utilizzare genkernel:

Btrfs root non si avvia
L'initramfs Genkernel creata con il comando di cui sotto non carica btrfs:

Compilare il supporto per btrfs nel kernel come modulo, o Dracut per generare l'initramfs.

Vedere anche

 * Btrfs snapshots - Script che crea istantanee quando i file sono cambiati.
 * Btrfs/System Root Guide - Usa il filesystem Btrfs come una raccolta di sottovolumi incluso uno come root di sistema.
 * Guida alla radice del sistema nativo di Btrfs - Una guida alternativa sull'utilizzo di un sottovolume in un filesystem Btrfs come root del sistema.
 * Btrbk - Uno strumento di backup per i sottovolumi btrfs, che sfrutta le capacità specifiche di btrfs per creare istantanee atomiche e trasferirle in modo incrementale in posizioni di backup specificate.
 * Samba shadow copies - Utilizzo di Samba per esporre le copie shadow come 'versioni precedenti' ai client Windows.
 * Samba shadow copies - Utilizzo di Samba per esporre le copie shadow come 'versioni precedenti' ai client Windows.

Risorse esterne

 * https://wiki.debian.org/Btrfs - Guida del wiki Debian.
 * https://wiki.archlinux.org/index.php/Btrfs Btrfs article - Guida del wiki Arch Linux.
 * http://www.funtoo.org/BTRFS_Fun - BTRFS Fun dal wiki di Funtoo.
 * http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html - Suggerimenti e trucchi su come risolvere i problemi del filesystem di Btrfs in alcune situazioni.