GNU/Linux >> Linux Esercitazione >  >> Linux

Controlla e ripara gli errori del filesystem con il comando fsck in Linux

A volte accadono cose brutte ai sistemi buoni.

Fortunatamente, sei un utente Linux e hai fsck (controllo del file system) per aiutare con un file system potenzialmente danneggiato. Questa utilità viene utilizzata per controllare e (facoltativamente) riparare il file system.

Esistono diversi scenari in cui potresti voler utilizzare fsck. In genere, vorresti eseguire questo comando se il tuo sistema non si avvia, un dispositivo (unità esterne o supporti di archiviazione) non funziona correttamente o se hai riscontrato segni di danneggiamento del file.

Fsck è in realtà un "front-end" per una serie di controlli specifici del file system come fsck.vfat, fsck.ext2, ecc. Questi non devono essere specificati, ma potresti essere in grado di trovare opzioni più avanzate nel man pagine di questi comandi più precisi.

Introduzione al comando fsck

Il comando fsck segue uno schema simile alla maggior parte dei comandi Linux.

fsck [options] [filesystem]

Se non specifichi un filesystem, il sistema analizzerà il tuo file fstab (/etc/fstab ) per i dispositivi da scansionare.

Dovrai eseguire il comando come utente root o usarlo con sudo.

Puoi usare il comando fdisk o df per elencare il disco rigido in Linux. In questo modo, puoi specificare quale dispositivo controllare con il comando fsck.

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

Smonta il dispositivo prima di eseguire fsck

Non eseguire fsck su un dispositivo montato, dovrai prima smontare il target per evitare danni ai tuoi file.

Se provi a eseguire fsck su un dispositivo montato, dovresti visualizzare un errore come questo:

[email protected]:~$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

L'esecuzione di fsck su un'unità normale e sana ha il seguente aspetto:

[email protected]:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

Mentre fsck accetta un nome di dispositivo come /dev/sda , puoi scegliere di inserire l'UUID per evitare confusione con il montaggio e lo smontaggio dei dispositivi. L'UUID è un valore fisso assegnato al tuo dispositivo e non sarà influenzato da queste modifiche al sistema.

Comprendere i codici di uscita per il comando fsck

Questo è un elenco dei codici che possono essere restituiti da fsck dopo aver ispezionato un disco. Il tuo codice di uscita sarà una somma di questi codici se analizzi un disco. Se utilizzi fsck su più dispositivi, restituirà OR bit per bit delle due somme.

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

Puoi controllare il codice di uscita dell'ultimo comando eseguito usando echo $? comando.

Utilizzo pratico del comando fsck

Ora che hai un po' di familiarità con il comando fsck, vediamo i casi d'uso pratici di questo comando.

Riparare un disco USB e altri dispositivi rimovibili

Per il nostro scopo, supponiamo che tu abbia già identificato il dispositivo problematico /dev/sdb .

Innanzitutto, devi assicurarti che l'unità sia stata smontata:

sudo umount /dev/sdb

Ora esegui il comando fsck:

sudo fsck /dev/sdb

Controllare l'output per eventuali errori. Se non viene visualizzato nessuno, controlla il codice di uscita con echo $? .

Ci sono anche alcuni flag di opzione che possiamo aggiungere per consentire alcune correzioni automatiche. Tuttavia, questi comandi non sono standardizzati e dovresti verificare il tipo di filesystem e confrontare la documentazione da quella pagina man specifica.

Nonostante ciò, generalmente puoi usare -p per consentire a fsck di applicare automaticamente le riparazioni.

sudo fsck -p /dev/sdb

Allo stesso modo, -y applicherà correzioni a qualsiasi danneggiamento del filesystem rilevato.

Riparare il file system di root

Non è possibile smontare la partizione di root mentre il sistema è attivo. Se sospetti che il tuo file system principale sia danneggiato, devi utilizzare un approccio diverso qui.

In realtà ci sono alcune diverse opzioni che puoi usare. Puoi eseguire fsck all'avvio, in modalità di ripristino o utilizzare un CD live a tema di ripristino.

Molte distribuzioni Linux forzeranno automaticamente fsck all'avvio dopo un certo numero di tentativi di avvio falliti. Se preferisci prendere in mano la situazione, puoi programmare il sistema per farlo da solo.

La maggior parte delle versioni moderne di Linux include uno strumento chiamato tune2fs.

sudo tune2fs -c 1 /dev/sda

Presumendo che il tuo dispositivo di root sia dev/sda , questo è il comando da inserire.

Ora, quello che sta realmente accadendo è che stai modificando le impostazioni di sistema in modo che fsck venga eseguito ogni n numero di stivali (1 nell'esempio). Puoi anche impostarlo su un intervallo di tempo standard. Le opzioni sono d sì, w eeks, o m emi.

Diciamo che vuoi che fsck venga eseguito ogni volta che avvii se non c'è stato un controllo in una settimana. Potresti usare -i per specificare l'intervallo e il comando sarebbe simile a questo.

sudo tune2fs -i 1w /dev/sda	

Se stai usando systemd, puoi forzare l'esecuzione di fsck al prossimo avvio inserendo quanto segue:

fsck.mode=force
fsck.repair=yes

Conclusione

Puoi sempre passare alle pagine man per maggiori informazioni. Usa semplicemente man fsck nel terminale.

Spero che tu abbia imparato qualcosa di nuovo sul comando fsck. Se hai commenti o domande, lasciali qui sotto.


Linux
  1. Controlla i processi Java su Linux con il comando jps

  2. Controlla i comandi e le attività con il comando watch di Linux

  3. Controlla lo stato del file su Linux con il comando stat

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

  5. Come controllare il sistema operativo e la versione utilizzando un comando Linux

Comando Fsck in Linux (ripara file system)

15 Comando Linux ps con esempi

Comando Fsck in Linux

Come controllare e riparare un file system in RHEL Linux

Come controllare la versione del sistema operativo con la riga di comando di Linux

Come controllare i parametri del server VPS con il comando Linux