GNU/Linux >> Linux Esercitazione >  >> Linux

10 esempi di comandi Linux Fsck per controllare e riparare il filesystem

L'utilità Linux fsck viene utilizzata per controllare e riparare i filesystem Linux (ext2, ext3, ext4, ecc.).

A seconda di quando è stata l'ultima volta che un file system è stato controllato, il sistema esegue fsck durante l'avvio per verificare se il file system è in uno stato coerente. L'amministratore di sistema potrebbe anche eseguirlo manualmente quando si verifica un problema con i filesystem.

Assicurati di eseguire fsck su un file system non montato per evitare problemi di danneggiamento dei dati.

Questo articolo spiega 10 esempi pratici su come eseguire il comando fsck per risolvere e correggere eventuali errori del file system.

1. Controllo del file system su una partizione del disco

Innanzitutto, visualizza tutte le partizioni disponibili sul tuo sistema usando il comando parted come mostrato di seguito.

# parted /dev/sda 'print'

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  106MB   105MB   primary   fat16        diag
 2      106MB   15.8GB  15.7GB  primary   ntfs         boot
 3      15.8GB  266GB   251GB   primary   ntfs
 4      266GB   500GB   234GB   extended
 5      266GB   466GB   200GB   logical   ext4
 6      467GB   486GB   18.3GB  logical   ext2
 7      487GB   499GB   12.0GB  logical   fat32        lba

Puoi controllare un filesystem specifico (ad esempio:/dev/sda6) come mostrato di seguito.

# fsck /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793506/4476416 blocks

Di seguito sono riportati i possibili codici di uscita per il comando fsck.

  • 0 – Nessun errore
  • 1 – Errori del filesystem corretti
  • 2 – Il sistema dovrebbe essere riavviato
  • 4 – Errori del filesystem non corretti
  • 8 – Errore operativo
  • 16 – Errore di utilizzo o sintassi
  • 32 – Fsck annullato su richiesta dell'utente
  • 128 – Errore di libreria condivisa

2. Comando Fsck specifico per un tipo di filesystem

fsck utilizza internamente il rispettivo comando di verifica del filesystem per un'operazione di verifica del filesystem. Questi comandi fsck checker si trovano in genere in /sbin.

L'esempio seguente mostra i vari possibili comandi di fsck checker (ad esempio:fsck.ext2, fsck.ext3, fsck.ext4, ecc.)

# cd /sbin
# ls fsck*
fsck  fsck.cramfs  fsck.ext2  fsck.ext3  fsck.ext4  fsck.ext4dev  fsck.minix  fsck.msdos  fsck.nfs  fsck.vfat

Il comando fsck ti darà un errore quando non trova un controllo del filesystem per il filesystem che viene controllato.

Ad esempio, se esegui fsck su una partizione ntfs, riceverai il seguente messaggio di errore. Non c'è fsck.ntfs in /sbin. Quindi, questo dà il seguente messaggio di errore.

# fsck /dev/sda2
fsck from util-linux 2.20.1
fsck: fsck.ntfs: not found
fsck: error 2 while executing fsck.ntfs for /dev/sda2

3. Controlla tutti i filesystem in un'unica esecuzione usando l'opzione -A

Puoi controllare tutti i filesystem in una singola esecuzione di fsck usando questa opzione. Questo controlla il file system nell'ordine dato da fs_passno menzionato per ogni filesystem in /etc/fstab.

Tieni presente che i filesystem con un valore fs_passno pari a 0 vengono ignorati e nell'ordine vengono selezionati i valori maggiori di 0.

Il file /etc/fstab contiene le voci elencate di seguito,

# cat /etc/fstab

##
proc            /proc           proc    nodev,noexec,nosuid 0       0
## / was on /dev/sda5 during installation
/dev/sda5 /               ext4    errors=remount-ro 0       1
## /mydata was on /dev/sda6 during installation
/dev/sda6 /mydata         ext2    defaults        0       2
## /backup was on /dev/sda7 during installation
/dev/sda7 /backup         vfat    defaults        0       3

Qui, il filesystem con lo stesso fs_passno viene controllato in parallelo nel tuo sistema.

# fsck -A

Si consiglia di escludere il filesystem di root durante questo controllo globale aggiungendo l'opzione -R come mostrato di seguito.

# fsck -AR -y
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793506/4476416 blocks
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 8 files, 50/1463400 clusters

Nota:l'opzione -y è spiegata in uno degli esempi seguenti.

4. Seleziona solo un tipo di filesystem specifico usando l'opzione -t

Usando l'opzione fsck -t, puoi specificare l'elenco di filesystem da controllare. Quando si utilizza con l'opzione -A, fsck controllerà solo il filesystem menzionato con questa opzione -t. Nota che fslist è un valore separato da virgole.

Ora, passa ext2 come valore fslist all'opzione -t come mostrato di seguito:

# fsck -AR -t ext2 -y
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 11/2240224 files, 70327/4476416 blocks

In questo esempio, /dev/sda6 è l'unica partizione creata con il filesystem ext2, quindi viene controllata di conseguenza.

Usando la parola chiave "no" davanti al filesystem, puoi controllare tutti gli altri tipi di filesystem tranne un particolare filesystem.

Nell'esempio seguente, il filesystem ext2 è escluso dal controllo.

# fsck -AR -t noext2 -y
fsck from util-linux 2.20.1
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 0 files, 1/1463400 clusters

5. Non eseguire Fsck su Mounted Filesystem usando l'opzione -M

È una buona idea usare questa opzione come predefinita con tutte le tue operazioni fsck. Ciò ti impedisce di eseguire fsck accidentalmente su un filesystem montato.

# mount | grep "/dev/sd*"
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
/dev/sda6 on /mydata type ext2 (rw)
/dev/sda7 on /backup type vfat (rw)

Come mostrato sopra, /dev/sda7 è montato. Se provi a eseguire fsck su questo filesystem montato /dev/sda7 (insieme all'opzione -M), fsck uscirà semplicemente con il codice di uscita 0 come mostrato di seguito.

# fsck -M /dev/sda7
# echo $?
0

6. Salta il titolo visualizzato usando l'opzione -T

Usando l'opzione -T, puoi saltare il titolo visualizzato all'inizio dell'output del comando fsck.

# fsck -TAR
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 is mounted.  e2fsck: Cannot continue, aborting.
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 8 files, 50/1463400 clusters

Nota che il titolo è qualcosa come "fsck da util-linux 2.20.1".

7. Forza un controllo del filesystem anche se è pulito usando l'opzione -f

Per impostazione predefinita fsck tenta di saltare il file system pulito per eseguire un lavoro più rapido.

# fsck /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793503/4476416 blocks

Puoi forzarlo a controllare il file system usando -f come mostrato di seguito.

# fsck /dev/sda6 -f
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda6: 95/2240224 files (7.4% non-contiguous), 3793503/4476416 blocks

8. Tentativo di risolvere automaticamente i problemi rilevati utilizzando l'opzione -y

Nell'esempio seguente, la partizione /dev/sda6 è danneggiata come mostrato di seguito.

# mount /dev/sda6 /mydata
# cd /mydata
# ls -li
ls: cannot access test: Input/output error
total 72
  49061 -rw-r--r--  1 root root     8 Aug 21 21:50 1
  49058 -rw-r--r--  1 root root 36864 Aug 21 21:24 file_with_holes
  49057 -rw-r--r--  1 root root  8192 Aug 21 21:23 fwh
     11 drwxr-xr-x  2 root root 49152 Aug 19 00:29 lost+found
2060353 ?rwSr-S-wT 16 root root  4096 Aug 21 21:11 Movies
      ? -?????????  ? ?    ?        ?            ? test

Come visto sopra, la directory Film e un file test gli attributi non sono validi.

Nell'esempio seguente, -y passerà "yes" a tutte le domande per correggere automaticamente il danneggiamento rilevato.

# fsck -y /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0137642 but it looks 
like it is really a directory.
Fix? yes

Pass 2: Checking directory structure
Entry 'test' in / (2) has deleted/unused inode 49059.  Clear? yes

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sda6: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda6: 96/2240224 files (7.3% non-contiguous), 3793508/4476416 blocks

9. Evita la riparazione, ma segnala i problemi a Stdout utilizzando l'opzione -n

È possibile stampare tali problemi rilevati in stdout senza riparare il filesystem utilizzando l'opzione fsck -n.

Innanzitutto, potresti notare/vedere il problema nella partizione /dev/sda6 che la directory Movies (e il file fwh) non ha dettagli di attributo validi.

# mount /dev/sda6 /mydata
# cd /mydata
# ls -lrt
total 64
drwxr-xr-x  2 root root 49152 Aug 19 00:29 lost+found
?--xrwx-wx 16 root root  4096 Aug 21 21:11 Movies
?-----x-wx  1 root root  8192 Aug 21 21:23 fwh
-rw-r--r--  1 root root 36864 Aug 21 21:24 file_with_holes
-rw-r--r--  1 root root     8 Aug 21 21:50 1

Il problema precedente nella partizione specifica visualizzata in stdout senza correggerlo come segue,

L'esempio fsck seguente mostra il problema nello stdout senza risolverlo. (l'output parziale è mostrato di seguito).

# fsck -n /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0173 but it looks 
like it is really a directory.
Fix? no
Inode 2060353, i_blocks is 8, should be 0.  Fix? no

Pass 2: Checking directory structure
Inode 2060353 (/Movies) has invalid mode (0173).
Clear? no

Inode 49057 (/fwh) has invalid mode (013).
Clear? no

Entry 'fwh' in / (2) has an incorrect filetype (was 1, should be 0).
Fix? no

Pass 3: Checking directory connectivity
Unconnected directory inode 65409 (???)
Connect to /lost+found? no

'..' in ... (65409) is ??? (2060353), should be  (0).
Fix? no

Unconnected directory inode 2076736 (???)
Connect to /lost+found? no

Pass 4: Checking reference counts
Inode 2 ref count is 4, should be 3.  Fix? no

Inode 65409 ref count is 3, should be 2.  Fix? no

Inode 2060353 ref count is 16, should be 15.  Fix? no

Unattached inode 2060354
Connect to /lost+found? no

Pass 5: Checking group summary information
Block bitmap differences:  -(164356--164357) -4149248
Fix? no

Directories count wrong for group #126 (1, counted=0).
Fix? no

/dev/sda6: ********** WARNING: Filesystem still has errors **********

/dev/sda6: 96/2240224 files (7.3% non-contiguous), 3793508/4476416 blocks

10. Ripara automaticamente le porzioni danneggiate usando l'opzione -a

Per riparare automaticamente la parte danneggiata (senza alcuna interazione da parte dell'utente), utilizzare l'opzione -a come mostrato di seguito.

# fsck -a -AR

L'opzione -a è la stessa di -p nell'utilità e2fsck. Fa sì che e2fsck risolva tutti i problemi rilevati che devono essere risolti in modo sicuro senza l'interazione dell'utente.

Nel caso in cui fsck richieda l'attenzione dell'amministratore, esce semplicemente con il codice di errore 4 prima di stampare la descrizione del problema.

# fsck -a /dev/sda6
fsck from util-linux 2.20.1
/dev/sda6 contains a file system with errors, check forced.
/dev/sda6: Inode 2060353 is a unknown file type with mode 0173 but it looks
like it is really a directory.

/dev/sda6: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
	(i.e., without -a or -p options)

# echo $?
4

Come ricorderai, l'opzione fsck -y può essere utilizzata qui per risolvere automaticamente il problema precedente.

# fsck -y /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0173 but it looks
like it is really a directory.
Fix? yes

Pass 2: Checking directory structure
Inode 49057 (/fwh) has invalid mode (013).
Clear? yes

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(164356--164357)
Fix? yes

Free blocks count wrong for group #5 (0, counted=2).
Fix? yes

Free blocks count wrong (682908, counted=682910).
Fix? yes

/dev/sda6: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda6: 95/2240224 files (7.4% non-contiguous), 3793506/4476416 blocks

Linux
  1. Comando Linux Cat:utilizzo ed esempi

  2. 8 Esempi di comandi TR Linux

  3. swapon e swapoff Esempi di comandi in Linux

  4. sa Esempi di comandi in Linux

  5. w Esempi di comandi in Linux

Come utilizzare il comando fsck per controllare e riparare il filesystem

Comando Fsck in Linux (ripara file system)

Opzioni di comando ed esempi di Tee Command in Linux

Esempi di comandi id in Linux

Esempi di comandi fsck in Linux

ps Esempi di comandi in Linux