4.11. Come ripristinare un file system
Se si verifica il fallimento dei nodi ed il file system è stato montato, il journaling del file system permette un processo di ripristino molto rapido. Tuttavia, se un dispositivo di storage perde alimentazione o è fisicamente scollegato, in questi casi si potrebbe verificare una corruzione del file system. (Il Journaling non può essere usato per eseguire il ripristino da errori che riguardano il sottosistema di storage.) Se si verifica questo tipo di corruzione è possibile ripristinare il normale funzionamento del GFS2 utilizzando il comando
fsck.gfs2
.
Importante
Il comando
fsck.gfs2
deve essere eseguito solo su di un file system non montato da tutti i nodi.
Importante
Non eseguire il controllo del file system GFS2 al momento dell'avvio utilizzando il comando
fsck.gfs2
. Il comando fsck.gfs2
non è in grado di determinare durante questo processo se il file system sia stato montato da un altro nodo presente nel cluster. Eseguire il comando fsck.gfs2
manualmente dopo il riavvio del sistema.
Per essere sicuri che il comando
fsck.gfs2
non venga eseguito su un file system GFS2 al momento dell'avvio, modificare /etc/fstab
in modo tale che le ultime due colonne per il mount point del file system GFS2 riportino "0 0" e non "1 1" (o qualsiasi altro numero), come riportato nel seguente esempio:
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
Nota
Se avete precedentemente utilizzato il comando gfs_fsck sui file system GFS, vi informiamo che il comando
fsck.gfs2
differisce da alcune versioni precedenti di gfs_fsck
nel modo di seguito riportato:
- La selezione di Ctrl+C durante l'esecuzione di
fsck.gfs2
interrompe e mostra un prompt il quale richiederà all'utente se abortire il comando, saltare il resto della fase corrente o continuare la processazione. - È possibile aumentare il livello di verbosità utilizando il flag
-v
. Aggiungendo un secondo flag-v
aumenterete ulteriormente tale livello. - È possibile diminuire il livello di verbosità utilizando il flag
-q
. Aggiungendo un secondo flag-q
diminuirete ulteriormente tale livello. - L'opzione
-n
apre un file system in modalità di sola lettura, e risponderà automaticamenteno
ad ogni richiesta. L'opzione fornisce un modo attraverso il quale si cercherà di utilizzare il comando per rilevare la presenza di errori, senza però permettere al comandofsck.gfs2
di essere implementato.
Consultate la pagina man di
fsck.gfs2
per informazioni aggiuntive su altre opzioni del comando.
L'esecuzione del comando
fsck.gfs2
necessita di una memoria del sistema superiore alla memoria usata per il sistema operativo e dal kernel. Ogni blocco della memoria nel file system GFS2 ha bisogno di circa cinque bit di memoria aggiuntiva o 5/8 di byte. Per questo motivo per una stima di byte della memoria necessari per eseguire il comando fsck.gfs2
sul file system, determinare il numero di blocchi contenuti dal file system e moltiplicare quel numero per 5/8.
Per esempio, per determinare approssimativamente la quantità di memoria necessaria per eseguire il comando
fsck.gfs2
su di un file system GFS2 di 16TB con una dimensione del blocco di 4K, determinare prima il numero di blocchi di memoria contenuti nel file system, e dividere successivamente 16Tb con 4K.
17592186044416 / 4096 = 4294967296
Poichè questo file system contiene 4294967296 blocchi, moltiplicare quel numero con 5/8 in modo da determinare il numero di byte della memoria necessari:
4294967296 * 5/8 = 2684354560
Questo file system ha bisogno di 2.6GB circa di memoria libera per eseguire il comando
fsck.gfs2
. Se la dimensione del blocco era 1K, l'esecuzione del comando fsck.gfs2
avrà bosogno di quattro volte la memoria, o approsimativamente di 11GB.
Utilizzo
fsck.gfs2 -y BlockDevice
-y
- Con il flag
-y
tutte le domande verranno risposte con unyes
. Con-y
, il comandofsck.gfs2
non vi richiederà alcuna risposta prima di eseguire le modifiche. BlockDevice
- Specifica il dispositivo a blocchi dove risiede il file system GFS2.
Esempio
In questo esempio il file system GFS2 che risiede sul dispositivo a blocchi
/dev/testvol/testlv
viene riparato. Tutte le richieste di riparazione fatte vengono risposte automaticamente con yes
.
[root@dash-01 ~]# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete