Come usare btrfs scrub?

Come usare btrfs scrub?
Il filesystem BTRFS è un filesystem multi-dispositivo che ha un supporto integrato per RAID. In un filesystem o raid BTRFS multi-dispositivo, i blocchi di dati/metadati possono essere archiviati in uno o più dispositivi di archiviazione. Lo strumento BTRFS Scrub leggerà tutti i blocchi di dati/metadati da tutti i dispositivi di archiviazione aggiunti a un filesystem o raid BTRFS e trovi tutti i blocchi di dati/metadati corrotti. Una volta rilevati i blocchi di dati/metadati danneggiati, lo strumento BTRFS Scrub riparerà automaticamente quei blocchi di dati/metadati danneggiati, se possibile.

In un filesystem BTRFS multi-dispositivo o RAID BTRFS, a seconda della configurazione del filesystem, potrebbero esserci più copie dei blocchi dati/metadati memorizzati in diverse posizioni dei dispositivi di archiviazione aggiunti al filesystem BTRFS. Quando lo strumento BTRFS Scrub trova un blocco dati/metadati danneggiato, cerca tutti i dispositivi di archiviazione aggiunti al filesystem BTRFS per copie duplicate di tali dati/metadati. Una volta trovata una copia duplicata di quel blocco dati/metadati, il blocco dati/metadati corrotto viene sovrascritto con il blocco dati/metadati corretti. Ecco come lo strumento BTRFS Scrub ripara i blocchi di dati/metadati in un filesystem BTRFS multi-dispositivo o RAIDS BTRFS.

In questo articolo, ti mostrerò come utilizzare lo strumento BTRFS Scrub per trovare e riparare blocchi di dati/metadati corrotti in un filesystem BTRFS multi-dispositivo o RAIDS BTRFS. Quindi iniziamo.

Abbreviazioni

Raid - Array ridondante di dischi economici/indipendenti
GB - Gigabyte

Prerequisiti

Per seguire questo articolo, è necessario disporre di un filesystem BTRFS multi-dispositivo funzionante o un raid BTRFS.

Ho creato un raid BTRFS Raid-1 configurazione (montata su /dati directory) utilizzando 4 dispositivi di archiviazione sdb, SDC, SDD, E SDE, Come puoi vedere nello screenshot qui sotto. Userò questo raid BTRFS per la dimostrazione di scrub BTRFS in questo articolo.

$ sudo btrfs Utilizzo /dati del filesystem

Se hai bisogno di assistenza sull'installazione del filesystem BTRFS su Ubuntu, controlla il mio articolo Installa e utilizza BTRFS su Ubuntu 20.04 LTS.

Se hai bisogno di assistenza sull'installazione del filesystem BTRFS su Fedora, controlla il mio articolo Installa e utilizza BTRFS su Fedora 33.

Se hai bisogno di assistenza nella creazione di un raid BTRFS, controlla il mio articolo Come configurare il raid btrfs.

Generare file fittizi sul filesystem BTRFS

Per mostrarti come funziona lo strumento BTRFS Scrub, dobbiamo generare alcuni file casuali per riempire il filesystem BTRFS. Creiamo uno script di shell che fa proprio questo.

Crea un nuovo script di shell Genfiles.sh nel /usr/locale/bin/ directory come segue:

$ sudo nano/usr/locale/bin/genfiles.sh

Digitare le seguenti righe di codici in Genfiles.sh script shell.

#!/Bin/Bash
mentre è vero
Fare
FileName = $ (uuidgen)
Echo "[Creazione] $ nome file"
dd if =/dev/casuale di = $ nome file bs = 1m conteggio = 256 status = progresso
echo "[creato] $ nome file"
Fatto

Una volta che hai finito, premere + X seguito da Y E per salvare il Genfiles.sh script shell.

IL Genfiles.sh lo script shell esegue un infinito Mentre ciclo continuo.

mentre è vero
Fare
# altri codici
Fatto

La riga seguente genera un UUID usando il uuidgen comanda e memorizza l'UUID in NOME DEL FILE variabile.

La riga seguente stampa un messaggio sulla console prima del file NOME DEL FILE è generato.

La riga seguente genera un nuovo file casuale NOME DEL FILE usando il dd comando. Il file sarà 256 Mb in misura.

La riga seguente stampa un messaggio sulla console dopo il file NOME DEL FILE è generato.

Aggiungi il permesso di eseguire al Genfiles.sh Script Shell come segue:

S

IL Genfiles.sh Lo script shell dovrebbe ora essere accessibile come altri comandi.

$ quali genfile.sh

Generiamo alcuni file casuali nel raid BTRFS montato nel /dati directory.

Navigare verso il /dati Directory in cui il raid BTRFS è montato come segue:

$ cd /dati

Come puoi vedere, al momento non ci sono file disponibili nel mio raid BTRFS.

$ ls -lh

Per generare alcuni file casuali nella directory di lavoro corrente (/dati directory in questo caso), eseguire il Genfiles.sh Script Shell come segue:

$ sudo genfiles.sh

IL Genfiles.sh lo script shell dovrebbe iniziare a generare file casuali in /dati directory.

IL Genfiles.sh lo script sta generando file casuali. Lascia che lo script funzioni per un paio di minuti, quindi riempie circa 2-3 GB di spazio su disco del raid BTRFS.

Quando vuoi fermare il Genfiles.sh script shell, premere + c.

Come puoi vedere, alcuni file casuali vengono generati nel raid BTRFS.

$ ls -lh

Ho generato circa 13 GB di file casuali nel raid btrfs montato nel /dati directory, come puoi vedere nello screenshot qui sotto.

$ sudo du -sh /dati

Lavorare con lo strumento BTRFS Scrub

In questa sezione, ti mostrerò come utilizzare lo strumento BTRFS Scrub. Iniziamo.

È possibile avviare il processo di scrub sul filesstem BTRFS montato su /dati Directory con il seguente comando:

$ sudo btrfs scrub start /dati

Un processo di scrub BTRFS dovrebbe essere avviato sul filesystem BTRFS montato sul /dati directory.

È possibile vedere lo stato del processo di scrub BTRFS in esecuzione sul filesstem BTRFS montato sul /dati directory come segue:

$ sudo btrfs scrub stato /dati

Come puoi vedere, il processo BTRFS Scrub è ancora corsa.

Strofinare un filesystem BTRFS o un raid BTRFS che ha molti file richiederà molto tempo per completare.

Una volta completato il processo BTRFS Scrub, lo stato dovrebbe essere modificato finito, Come puoi vedere nello screenshot qui sotto.

$ sudo btrfs scrub stato /dati

Puoi anche vedere lo stato di scrub BTRFS per ciascuno dei dispositivi di archiviazione aggiunti al filesystem BTRFS (montato nel /dati directory) separatamente come segue:

$ sudo btrfs scrub status -d /dati

Ti ho detto che il processo di scrub BTRFS richiede molto tempo per completare su un grande system BTRFS. Un grande vantaggio dello strumento BTRFS Scrub è che il suo processo può essere messo in pausa e ripresa in qualsiasi momento.

Vediamo come mettere in pausa e riprendere un processo di scrub BTRFS.

Innanzitutto, avviare un nuovo processo BTRFS Scrub sul filesstem BTRFS montato nella directory /dati come segue:

$ sudo btrfs scrub start /dati

Per annullare o mettere in pausa il processo di scrub BTRFS attualmente in esecuzione sul filesstem BTRFS montato sul /dati Directory, eseguire il seguente comando:

$ sudo btrfs scrub annulla /dati

Il processo di scrub BTRFS in esecuzione deve essere cancellato o fatto in pausa.

Come puoi vedere, lo stato di scrub BTRFS è abortito. Quindi, il processo BTRFS Scrub non è più in esecuzione.

$ sudo btrfs scrub stato /dati

Per riprendere il processo di scrub BTRFS che hai cancellato o fatto una pausa, eseguire il seguente comando:

$ sudo btrfs scrub riprendi /dati

Il processo di scrub BTRFS dovrebbe essere ripreso.

Come puoi vedere, lo stato di scrub BTRFS è ora corsa. Quindi, il processo di scrub BTRFS viene ripreso.

$ sudo btrfs scrub stato /dati

Dopo il completamento del processo di scrub BTRFS, lo stato di Scrub BTRFS dovrebbe essere modificato finito.

$ sudo btrfs scrub stato /dati

Conclusione

In questo articolo, ti ho mostrato come lavorare con lo strumento BTRFS Scrub per trovare e correggere blocchi di dati/metadati corrotti di un filesystem multi-dispositivo BTRFS o RAID. Ti ho mostrato come annullare/mettere in pausa e riprendere un processo di scrub BTRFS una volta iniziato.