Btrfs

Come deframmentare un filesystem Btrfs

Come deframmentare un filesystem Btrfs

Btrfs è un filesystem Copy-on-Write (CoW) basato sull'estensione. I file di grandi dimensioni vengono archiviati in più estensioni di dati; e quando questi file di grandi dimensioni vengono modificati, le estensioni da modificare vengono copiate in nuove estensioni vuote in un'altra posizione del dispositivo di archiviazione e vengono modificate nella nuova posizione. Quindi, le estensioni dei file di grandi dimensioni vengono ricollegate per puntare alle estensioni aggiornate. Le vecchie estensioni non vengono mai rimosse all'istante.

Ecco come la funzione Copy-on-Write (CoW) del filesystem Btrfs provoca la frammentazione. La frammentazione significa che le estensioni dei dati di file di grandi dimensioni sono sparse nell'intero dispositivo di archiviazione. Non sono istantanei. Quindi, le prestazioni (velocità di lettura/scrittura) del filesystem potrebbero essere ridotte.

Per risolvere questo problema, è necessario deframmentare il filesystem Btrfs ogni tanto. Questo articolo mostra come deframmentare il filesystem Btrfs.

Abbreviazioni

Le abbreviazioni (forme brevi) utilizzate in questo articolo sono le seguenti:

Prerequisiti

Per provare gli esempi inclusi in questo articolo:

Ho un HDD da 20 GB sdb sulla mia macchina Ubuntu. Creerò un filesystem Btrfs sull'HDD sdb.

$ sudo lsblk -e7

Nota: Il tuo HDD/SSD avrà probabilmente un nome diverso dal mio, così come le partizioni. Quindi, assicurati di sostituirli con i tuoi d'ora in poi.

Puoi creare un filesystem Btrfs sul tuo HDD/SSD (senza partizionamento) se hai un HDD/SSD di riserva. Puoi anche creare una partizione sul tuo HDD/SSD e creare lì un filesystem Btrfs.

Per assistenza con l'installazione del filesystem Btrfs in Ubuntu, consulta l'articolo Installa e usa Btrfs su Ubuntu 20.04 LTS.

Per assistenza con l'installazione del filesystem Btrfs in Fedora, consulta l'articolo Installa e usa Btrfs su Fedora 33.

Creazione di un filesystem Btrfs

Puoi creare un filesystem Btrfs sul tuo HDD/SSD (non partizionato) o sulla tua partizione HDD/SSD.

Per creare un filesystem Btrfs sul sdb HDD (intero HDD, nessuna partizione) e assegnagli l'etichetta del filesystem dati, eseguire il seguente comando:

$ sudo mkfs.btrfs -L dati /dev/sdb

Ora dovrebbe essere creato un filesystem Btrfs su sdb HDD.

Crea la directory /dati per montare il filesystem Btrfs appena creato con il seguente comando:

$ sudo mkdir -v /data

Per montare il filesystem Btrfs creato sul sdb HDD sul /dati directory, eseguire il seguente comando:

$ sudo mount /dev/sdb /data

Il filesystem Btrfs ora dovrebbe essere montato, come puoi vedere nello screenshot qui sotto:

$ df -h /dati

Deframmentazione manuale di un filesystem Btrfs

Come puoi vedere nello screenshot qui sotto, ho copiato due file sul filesystem Btrfs montato sul /dati directory per dimostrare il processo di deframmentazione del filesystem Btrfs:

$ ls -lh /dati

Puoi deframmentare un singolo file o un intero sottovolume/directory in modo ricorsivo.

Per deframmentare il singolo file /data/ubuntu-20.04.1-live-server-amd64.iso, eseguiremo il seguente comando:

$ sudo btrfs deframmentazione del filesystem -vf /data/ubuntu-20.04.1-live-server-amd64.iso

Il file /data/ubuntu-20.04.1-live-server-amd64.iso dovrebbe essere deframmentato.

Per deframmentare ogni file o directory del /dati directory in modo ricorsivo, eseguire il seguente comando:

$ sudo btrfs deframmentazione del filesystem -rvf /data

Come puoi vedere, tutti i file del /dati directory sono deframmentate.

Allo stesso modo, se avessi il sottovolume /data/osimages, quindi potresti deframmentare tutti i file del /data/osimages sottovolume in modo ricorsivo con il seguente comando:

$ sudo btrfs deframmentazione del filesystem -rvf /data/osimages

Compressione di un filesystem Btrfs durante la deframmentazione

Il filesystem Btrfs ti consente di comprimere i file mentre li deframmenti.

Per deframmentare tutti i file nel /dati directory e comprimerli con il ZLIB algoritmo di compressione allo stesso tempo, eseguire il comando di deframmentazione con il -czlib opzione, come segue:

$ sudo btrfs deframmentazione del filesystem -rvf -czlib /data

Per deframmentare tutti i file nel /dati directory e comprimerli con il ZSTD algoritmo di compressione allo stesso tempo, eseguire il comando di deframmentazione con il -czstd opzione, come segue:

$ sudo btrfs deframmentazione del filesystem -rvf -czstd /data

Per deframmentare tutti i file nel /dati directory e comprimerli con il LZO algoritmo di compressione allo stesso tempo, eseguire il comando di deframmentazione con il -clzo opzione, come segue:

$ sudo btrfs deframmentazione del filesystem -rvf -clzo /data

I file in /dati la directory dovrebbe essere deframmentata e compressa allo stesso tempo.

Allo stesso modo, puoi anche deframmentare e comprimere i file di un sottovolume Btrfs.

Deframmentazione automatica di un filesystem Btrfs

Puoi abilitare la deframmentazione automatica sul tuo filesystem Btrfs al momento del montaggio. Questa funzione del filesystem Btrfs deframmenterà automaticamente tutti i file del tuo filesystem Btrfs.

Per montare il filesystem Btrfs creato sul sdb HDD nel /dati directory con la deframmentazione automatica abilitata all'avvio, è necessario aggiungere una voce per il filesystem Btrfs nels /etc/fstab file.

Innanzitutto, trova l'UUID del filesystem Btrfs creato su sdb HDD, come segue:

$ sudo blkid /dev/sdb

Come puoi vedere, l'UUID del filesystem Btrfs creato sul sdb L'HDD è 60afc092-e0fa-4b65-81fd-5dfd7dd884de.

Sarà diverso per te. Quindi, assicurati di sostituirlo con il tuo d'ora in poi.

Apri il /etc/fstab file con il nano editor di testo, come segue:

$ sudo nano /etc/fstab

Aggiungi la seguente riga alla fine del /etc/fstab file:

UUID=60afc092-e0fa-4b65-81fd-5dfd7dd884de /data     btrfs      deframmentazione automatica        0              0

Una volta terminato, premere + X seguito da e per salvare il /etc/fstab file.

Affinché le modifiche abbiano effetto, riavvia il computer con il seguente comando:

$ sudo reboot

Come puoi vedere, il filesystem Btrfs creato sul sdb L'HDD è montato sul /dati directory con deframmentazione automatica abilitata.

Problemi con la deframmentazione di un filesystem Btrfs

Sebbene possa sembrare che la deframmentazione migliori le prestazioni del filesystem, ci sono alcuni problemi con la deframmentazione di un filesystem Btrfs.

Poiché Btrfs è un filesystem Copy-on-Write (CoW), per comprendere i problemi con la deframmentazione del filesystem Btrfs, è necessario comprendere la funzionalità Copy-on-Write del filesystem Btrfs.

Supponiamo di avere un file di grandi dimensioni (file1) che utilizza 100 estensioni (puoi pensare alle estensioni come blocchi di file) di un filesystem Btrfs. Se crei un'altra copia di quel file di grandi dimensioni (file2) nello stesso filesystem Btrfs, vedrai che non viene utilizzato spazio su disco aggiuntivo. Questo perché i file sono identici e le 100 estensioni di ogni file sono le stesse. Quindi, il filesystem Btrfs usa le stesse estensioni per entrambi i file.

Figura 1: file1 e file2 sono identici e condividono le stesse estensioni del filesystem Btrfs per risparmiare spazio su disco

Ora, diciamo, hai modificato una delle copie del file di grandi dimensioni (file2). La modifica deve cambiare 10 delle 100 estensioni. Il filesystem Btrfs copierà le 10 estensioni richieste in un'altra posizione inutilizzata (diciamo, e101-e110) del filesystem e cambiali lì. Una volta scritte le modifiche sul disco, il filesystem Btrfs collegherà nuovamente le estensioni in modo che le modifiche si riflettano nel file di grandi dimensioni. Il processo è illustrato nella figura seguente:

Figura 2: 10 le estensioni sono cambiate in file2. Quindi, le estensioni vengono ricollegate nel filesystem Btrfs.

Dalle figure 1 e 2, puoi capire come funziona Copy-on-Write (CoW) e come il filesystem Btrfs utilizza Copy-on-Write (CoW) per risparmiare spazio su disco.

Ora che sai come funziona la funzione Copy-on-Write (CoW) del filesystem Btrfs, capirai i problemi con la deframmentazione di un filesystem Btrfs.

  1. I file di deframmentazione spostano le estensioni dei dati Btrfs e tentano di allinearli, uno dopo l'altro. Quindi, i collegamenti Copy-on-Write tra le copie del file si interrompono. Ciò aumenterà le estensioni dei dati ridondanti, nonché l'utilizzo del disco di un filesystem Btrfs che è stato precedentemente salvato condividendo le estensioni dei dati tra copie identiche (o quasi identiche) del file.
  2. Se un sottovolume Btrfs ha più istantanee, la deframmentazione del sottovolume interromperà i collegamenti Copy-on-Write tra il sottovolume e le istantanee. Ciò aumenterà l'utilizzo del disco di un filesystem Btrfs.
  3. Se stai utilizzando il filesystem Btrfs per database di grandi dimensioni o immagini di macchine virtuali (per archiviare dati/dischi VM), la deframmentazione del filesystem avrà anche un impatto negativo sulle prestazioni del filesystem.

Conclusione

In questo articolo, hai imparato come deframmentare un singolo file e i file in una directory/sottovolume in modo ricorsivo di un filesystem Btrfs. Hai anche imparato come abilitare la deframmentazione automatica su un filesystem Btrfs al momento del montaggio. Infine, l'articolo ha discusso alcuni dei problemi con la deframmentazione di un filesystem Btrfs.

Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...
Aggiungi i gesti del mouse a Windows 10 utilizzando questi strumenti gratuiti
Negli ultimi anni computer e sistemi operativi si sono notevolmente evoluti greatly. C'è stato un tempo in cui gli utenti dovevano usare i comandi per...
Controlla e gestisci il movimento del mouse tra più monitor in Windows 10
Gestore mouse con doppio display ti consente di controllare e configurare il movimento del mouse tra più monitor, rallentando i suoi movimenti vicino ...