È possibile avviare un controllo dell'intero file system avviando un processo di pulizia del file system. Il processo di pulizia viene eseguito in background per impostazione predefinita ed esegue la scansione dell'intero file system per verificarne l'integrità. Tenta automaticamente di segnalare e riparare eventuali blocchi danneggiati che trova lungo il percorso. Invece di passare attraverso l'intera unità disco, il processo di pulizia si occupa solo dei dati effettivamente allocati. A seconda dello spazio su disco allocato, questo è molto più veloce dell'esecuzione di un'intera scansione della superficie del disco.
Lo scrubbing comporta la lettura di tutti i dati da tutti i dischi e la verifica dei checksum. Se qualche valore non è corretto, i dati possono essere corretti leggendo una buona copia del blocco da un altro drive. Il codice di pulizia esegue anche la scansione in lettura automatica. Si consiglia di ripulire i file system ad alto utilizzo una volta alla settimana e tutti gli altri file system una volta al mese.
Di seguito è riportato un elenco dei comandi scrub btrfs disponibili:
# btrfs scrub usage: btrfs scrub [command] [options] [path]|[device] btrfs scrub start [-BdqrRf] [-c ioprio_class -n ioprio_classdata] [path]|[device] Start a new scrub. If a scrub is already running, the new one fails. btrfs scrub cancel [path]|[device] Cancel a running scrub btrfs scrub resume [-BdqrR] [-c ioprio_class -n ioprio_classdata] [path]|[device] Resume previously canceled or interrupted scrub btrfs scrub status [-dR] [path]|[device] Show status of running or finished scrub verify checksums of data and metadata
Utility btrfs scrub:esempi
Utilizzare il comando btrfs scrub start per avviare uno scrub su tutti i dispositivi di un file system o su un singolo dispositivo. La sintassi è la seguente:
# btrfs scrub start [-BdqrR] [-c ioprio_class ...
Descrizione delle opzioni:
Opzione | Descrizione |
---|---|
-B | Non eseguire in background e stampare le statistiche al termine. |
-d | Stampa statistiche separate per ogni dispositivo del file system. Questa opzione viene utilizzata insieme all'opzione -B. |
-q | Esegui in modalità silenziosa, omettendo messaggi di errore e statistiche. |
-r | Esegui in modalità di sola lettura, senza correggere eventuali errori. |
-R | Modalità di stampa grezza. Stampa i dati completi anziché il riepilogo. |
-c ioprio_class | Imposta la classe di priorità IO (vedi pagina man di ionice). |
-n ioprio_classdata | Imposta i dati di classe di priorità IO (vedi la pagina man di ionice). |
Avvio dello scrub btrfs
L'esempio seguente avvia uno scrub sul file system Btrfs montato su /btrfs.
# btrfs scrub start /btrfs scrub started on /btrfs, fsid ba60ac96-1628-4656-b68b-c7327ff49179 (pid=11164)
Utilizzare il comando btrfs scrub status per ottenere lo stato di un processo di scrub. È disponibile un'opzione:
- -d – Stampa statistiche separate per ogni dispositivo del file system.
Di seguito è riportato un esempio di comando btrfs scrub status su un filesystem sano. In caso di un filesystem danneggiato, vedresti errori corretti nell'output.
# btrfs scrub status /btrfs scrub status for ba60ac96-1628-4656-b68b-c7327ff49179 scrub started at Fri Mar 30 14:29:47 2018 and finished after 00:00:02 total bytes scrubbed: 325.29MiB with 0 errors
Con l'opzione "-d" nel comando precedente, puoi ottenere uno stato a livello di dispositivo come mostrato nell'esempio seguente.
# btrfs scrub status /btrfs -d scrub status for ba60ac96-1628-4656-b68b-c7327ff49179 scrub device /dev/sda (id 1) history scrub started at Fri Mar 30 14:29:47 2018 and finished after 00:00:02 total bytes scrubbed: 325.29MiB with 0 errors
Annullamento/ripresa di un processo di scrub btrfs
Puoi anche annullare un processo di pulizia in esecuzione. L'avanzamento viene salvato nel file di avanzamento dello scrub e puoi riprendere lo scrub in un secondo momento. Per annullare uno scrub:
# btrfs scrub cancel /btrfs
Per riprendere un lavoro di pulizia annullato o interrotto:
# btrfs scrub resume /btrfs
Il comando scrub resume ha le stesse opzioni del comando scrub start. Btrfs memorizza gli ultimi due minuti, a intervalli di 30 secondi, delle generazioni di ID radice. Btrfs continua a girare in queste generazioni, anche se non ci sono modifiche nel file system.
Se uno scrub non corregge gli errori, puoi utilizzare la seguente opzione di montaggio per tornare a un albero B noto, dato che il resto dell'albero è disponibile a causa del copy-on-write:
# mount –o recovery /dev/sda /btrfs