GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 Beispiele für Linux-Fsck-Befehle zum Überprüfen und Reparieren des Dateisystems

Das Linux-Dienstprogramm fsck wird verwendet, um Linux-Dateisysteme (ext2, ext3, ext4 usw.) zu überprüfen und zu reparieren.

Je nachdem, wann ein Dateisystem zuletzt überprüft wurde, führt das System beim Booten den fsck aus, um zu prüfen, ob das Dateisystem in einem konsistenten Zustand ist. Der Systemadministrator könnte es auch manuell ausführen, wenn es ein Problem mit den Dateisystemen gibt.

Stellen Sie sicher, dass fsck auf einem nicht gemounteten Dateisystem ausgeführt wird, um Probleme mit Datenbeschädigungen zu vermeiden.

Dieser Artikel erläutert 10 praktische Beispiele zur Ausführung des fsck-Befehls zur Fehlerbehebung und Behebung von Dateisystemfehlern.

1. Dateisystemprüfung auf einer Festplattenpartition

Zeigen Sie zuerst alle verfügbaren Partitionen auf Ihrem System mit dem Befehl parted an, wie unten gezeigt.

# 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

Sie können ein bestimmtes Dateisystem (zum Beispiel:/dev/sda6) wie unten gezeigt überprüfen.

# 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

Im Folgenden sind die möglichen Beendigungscodes für den Befehl fsck aufgeführt.

  • 0 – Keine Fehler
  • 1 – Dateisystemfehler korrigiert
  • 2 – System sollte neu gestartet werden
  • 4 – Unkorrigierte Dateisystemfehler
  • 8 – Betriebsfehler
  • 16 – Verwendungs- oder Syntaxfehler
  • 32 – Fsck auf Benutzerwunsch abgebrochen
  • 128 – Shared-Library-Fehler

2. Fsck-Befehl, der für einen Dateisystemtyp spezifisch ist

fsck verwendet intern den entsprechenden Dateisystem-Prüfbefehl für eine Dateisystem-Prüfoperation. Diese fsck-Checker-Befehle befinden sich normalerweise unter /sbin.

Das folgende Beispiel zeigt die verschiedenen möglichen fsck-Checker-Befehle (zum Beispiel:fsck.ext2, fsck.ext3, fsck.ext4 usw.)

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

Der Befehl fsck gibt Ihnen einen Fehler aus, wenn er keinen Dateisystemprüfer für das zu prüfende Dateisystem findet.

Wenn Sie beispielsweise fsck über eine NTFS-Partition ausführen, erhalten Sie die folgende Fehlermeldung. Es gibt kein fsck.ntfs unter /sbin. Das ergibt also die folgende Fehlermeldung.

# 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. Überprüfen Sie alle Dateisysteme in einem Lauf mit Option -A

Mit dieser Option können Sie alle Dateisysteme in einem einzigen Durchlauf von fsck überprüfen. Dies überprüft das Dateisystem in der Reihenfolge, die durch die fs_passno vorgegeben ist, die für jedes Dateisystem in /etc/fstab erwähnt wird.

Bitte beachten Sie, dass das Dateisystem mit einem fs_passno-Wert von 0 übersprungen und größer als 0 in der Reihenfolge geprüft wird.

Die /etc/fstab enthält die unten aufgeführten Einträge,

# 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

Dabei werden die Dateisysteme mit gleicher fs_passno in Ihrem System parallel geprüft.

# fsck -A

Es wird empfohlen, dass Sie das Root-Dateisystem während dieser globalen Prüfung ausschließen, indem Sie die Option -R wie unten gezeigt hinzufügen.

# 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

Hinweis:Die Option -y wird in einem der folgenden Beispiele erläutert.

4. Überprüfen Sie nur einen bestimmten Dateisystemtyp mit der Option -t

Mit der Option fsck -t können Sie die Liste der zu prüfenden Dateisysteme angeben. Wenn Sie die Option -A verwenden, überprüft der fsck nur das Dateisystem, das mit dieser Option -t erwähnt wird. Beachten Sie, dass fslist ein kommagetrennter Wert ist.

Übergeben Sie nun ext2 als fslist-Wert an die Option -t, wie unten gezeigt:

# 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 diesem Beispiel ist /dev/sda6 die einzige Partition, die mit dem Dateisystem ext2 erstellt wurde, daher wird es entsprechend überprüft.

Mit dem Schlüsselwort „no“ vor dem Dateisystem können Sie alle anderen Dateisystemtypen außer einem bestimmten Dateisystem prüfen.

Im folgenden Beispiel wird das ext2-Dateisystem von der Prüfung ausgeschlossen.

# 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. Führen Sie Fsck auf dem gemounteten Dateisystem nicht mit Option -M

aus

Es ist eine gute Idee, diese Option als Standard für alle Ihre fsck-Operationen zu verwenden. Dies verhindert, dass Sie fsck versehentlich auf einem gemounteten Dateisystem ausführen.

# 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)

Wie oben gezeigt, ist /dev/sda7 gemountet. Wenn Sie versuchen, fsck auf diesem /dev/sda7-eingehängten Dateisystem auszuführen (zusammen mit der Option -M), wird fsck einfach mit dem Exit-Code 0 beendet, wie unten gezeigt.

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

6. Überspringen Sie den Anzeigetitel mit Option -T

Mit der Option -T können Sie den Titel überspringen, der am Anfang der Ausgabe des fsck-Befehls angezeigt wird.

# 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

Beachten Sie, dass der Titel so etwas wie „fsck from util-linux 2.20.1“ ist.

7. Erzwingen Sie eine Dateisystemprüfung, selbst wenn sie sauber ist, indem Sie die Option -f

verwenden

Standardmäßig versucht fsck, das saubere Dateisystem zu überspringen, um schneller zu arbeiten.

# 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

Sie können es zwingen, das Dateisystem zu überprüfen, indem Sie -f wie unten gezeigt verwenden.

# 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. Versuchen Sie, erkannte Probleme automatisch mit Option -y

zu beheben

Im folgenden Beispiel ist die Partition /dev/sda6 wie unten gezeigt beschädigt.

# 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

Wie oben zu sehen ist das Verzeichnis Movies und eine Datei test Attribute sind ungültig.

Im folgenden Beispiel übergibt -y „yes“ an alle Fragen, um die erkannte Beschädigung automatisch zu beheben.

# 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. Reparieren vermeiden, aber Probleme mit Option -n

an Stdout melden

Es ist möglich, solche erkannten Probleme in stdout auszugeben, ohne das Dateisystem mit der Option fsck -n zu reparieren.

Zuerst könnten Sie das Problem in der Partition /dev/sda6 bemerken/sehen, dass das Movies-Verzeichnis (und die fwh-Datei) keine gültigen Attributdetails hat.

# 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

Das obige Problem in der spezifischen Partition wird in stdout angezeigt, ohne dass es wie folgt behoben wird:

Das folgende fsck-Beispiel zeigt das Problem in der Standardausgabe an, ohne es zu beheben. (Teilausgabe ist unten gezeigt).

# 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. Reparieren Sie die beschädigten Teile automatisch mit Option -a

Um den beschädigten Teil automatisch (ohne Benutzerinteraktion) zu reparieren, verwenden Sie die Option -a wie unten gezeigt.

# fsck -a -AR

Die Option -a ist die gleiche wie -p im Dienstprogramm e2fsck. Es bewirkt, dass e2fsck alle erkannten Probleme behebt, die ohne Benutzerinteraktion sicher behoben werden müssen.

Falls fsck die Aufmerksamkeit des Administrators erfordert, wird es einfach mit Fehlercode 4 beendet, bevor die Beschreibung des Problems gedruckt wird.

# 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

Wie Sie sich erinnern, kann die Option fsck -y hier verwendet werden, um das obige Problem automatisch zu beheben.

# 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. Linux-Cat-Befehl:Verwendung und Beispiele

  2. Linux-Befehle – Übersicht und Beispiele

  3. 7 Beispiele für Linux-df-Befehle

  4. 8 Linux TR-Befehlsbeispiele

  5. mkdir- und rmdir-Befehlsbeispiele unter Linux

So verwenden Sie den fsck-Befehl zum Überprüfen und Reparieren des Dateisystems

Fsck-Befehl unter Linux (Dateisystem reparieren)

Befehlsoptionen und Beispiele für den Tee-Befehl in Linux

Überprüfen und reparieren Sie Dateisystemfehler mit dem fsck-Befehl in Linux

id-Befehlsbeispiele in Linux

fsck-Befehlsbeispiele unter Linux