GNU/Linux >> Znalost Linux >  >> Linux

10 Příklady příkazů Linux Fsck ke kontrole a opravě souborového systému

Linuxový nástroj fsck se používá ke kontrole a opravě linuxových souborových systémů (ext2, ext3, ext4 atd.).

V závislosti na tom, kdy byl souborový systém naposledy zkontrolován, systém spustí během zavádění fsck, aby zkontroloval, zda je souborový systém v konzistentním stavu. Správce systému by jej také mohl spustit ručně, když dojde k problému se souborovým systémem.

Ujistěte se, že jste spustili fsck na nepřipojených souborových systémech, abyste se vyhnuli problémům s poškozením dat.

Tento článek vysvětluje 10 praktických příkladů, jak spustit příkaz fsck k odstraňování a opravě jakýchkoliv chyb souborového systému.

1. Kontrola souborového systému na diskovém oddílu

Nejprve si prohlédněte všechny dostupné oddíly ve vašem systému pomocí příkazu parted, jak je ukázáno níže.

# 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

Můžete zkontrolovat konkrétní souborový systém (například:/dev/sda6), jak je ukázáno níže.

# 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

Níže jsou uvedeny možné ukončovací kódy pro příkaz fsck.

  • 0 – žádné chyby
  • 1 – Opraveny chyby systému souborů
  • 2 – Systém by měl být restartován
  • 4 – Chyby systému souborů zůstaly neopravené
  • 8 – Provozní chyba
  • 16 – Chyba použití nebo syntaxe
  • 32 – Fsck zrušeno na žádost uživatele
  • 128 – Chyba sdílené knihovny

2. Příkaz Fsck specifický pro typ souborového systému

fsck interně používá příslušný příkaz filesystem checker pro operaci kontroly souborového systému. Tyto příkazy kontroly fsck jsou obvykle umístěny pod /sbin.

Následující příklad ukazuje různé možné příkazy kontroly fsck (například:fsck.ext2, fsck.ext3, fsck.ext4 atd.)

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

Příkaz fsck vám zobrazí chybu, když nenajde kontrolu souborového systému pro kontrolovaný souborový systém.

Pokud například spustíte fsck přes oddíl ntfs, zobrazí se následující chybová zpráva. Pod /sbin není žádný fsck.ntfs. Tím se zobrazí následující chybová zpráva.

# 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. Zaškrtněte Všechny systémy souborů v jednom běhu pomocí volby -A

Pomocí této možnosti můžete zkontrolovat všechny souborové systémy v jednom spuštění fsck. Toto kontroluje souborový systém v pořadí daném fs_passno uvedeným pro každý souborový systém v /etc/fstab.

Vezměte prosím na vědomí, že souborový systém s hodnotou fs_passno 0 jsou přeskočeny a větší než 0 jsou zaškrtnuty v objednávce.

/etc/fstab obsahuje položky, jak jsou uvedeny níže,

# 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

Zde je souborový systém se stejným fs_passno kontrolován paralelně ve vašem systému.

# fsck -A

Během této globální kontroly se doporučuje vyloučit kořenový souborový systém přidáním volby -R, jak je uvedeno níže.

# 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

Poznámka:Možnost -y je vysvětlena v jednom z níže uvedených příkladů.

4. Zaškrtněte Pouze určitý typ souborového systému pomocí volby -t

Pomocí volby fsck -t můžete zadat seznam souborového systému, který má být zkontrolován. Když používáte volbu -A, fsck zkontroluje pouze souborový systém uvedený s touto volbou -t. Všimněte si, že fslist jsou hodnoty oddělené čárkami.

Nyní předejte ext2 jako hodnotu fslist volbě -t, jak je uvedeno níže:

# 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

V tomto příkladu je /dev/sda6 jediným oddílem vytvořeným se souborovým systémem ext2, takže bude odpovídajícím způsobem zkontrolován.

Pomocí klíčového slova ‚ne‘ před souborovým systémem můžete zkontrolovat všechny ostatní typy souborových systémů kromě konkrétního souborového systému.

V následujícím příkladu je souborový systém ext2 z kontroly vyloučen.

# 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. Nespouštějte Fsck na připojeném souborovém systému pomocí volby -M

Je dobré použít tuto možnost jako výchozí pro všechny operace fsck. To vám zabrání v náhodném spuštění fsck na souborovém systému, který je připojen.

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

Jak je uvedeno výše, /dev/sda7 je připojen. Pokud se pokusíte spustit fsck na tomto připojeném souborovém systému /dev/sda7 (spolu s volbou -M), fsck se jednoduše ukončí s návratovým kódem 0, jak je uvedeno níže.

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

6. Přeskočte zobrazovaný titul pomocí volby -T

Pomocí volby -T můžete přeskočit nadpis zobrazený na začátku výstupu příkazu 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

Všimněte si, že název je něco jako „fsck z util-linux 2.20.1“.

7. Vynutit kontrolu souborového systému, i když je vyčištěn pomocí volby -f

Ve výchozím nastavení se fsck pokouší přeskočit čistý souborový systém, aby mohl pracovat rychleji.

# 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

Můžete jej vynutit, aby zkontroloval systém souborů pomocí -f, jak je ukázáno níže.

# 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. Pokuste se opravit zjištěné problémy automaticky pomocí volby -y

V následujícím příkladu je oddíl /dev/sda6 poškozen, jak je uvedeno níže.

# 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

Jak je vidět výše, adresář Filmy a test souboru atributy jsou neplatné.

V následujícím příkladu -y předá všem otázkám „ano“ a automaticky opraví zjištěné poškození.

# 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. Vyhněte se opravě, ale nahlaste problémy Stdout pomocí volby -n

Takto zjištěné problémy je možné vytisknout do stdout bez opravy souborového systému pomocí volby fsck -n.

Nejprve si můžete všimnout/vidět problém v oddílu /dev/sda6, že adresář Movies (a soubor fwh) nemá platné podrobnosti o atributech.

# 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

Výše uvedený problém v konkrétním oddílu zobrazený v stdout, aniž byste jej opravili následujícím způsobem,

Následující příklad fsck zobrazuje problém v stdout, aniž by jej opravoval. (částečný výstup je zobrazen níže).

# 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. Automaticky opravit poškozené části pomocí volby -a

Chcete-li poškozenou část opravit automaticky (bez zásahu uživatele), použijte volbu -a, jak je uvedeno níže.

# fsck -a -AR

Volba -a je stejná jako -p v obslužném programu e2fsck. To způsobí, že e2fsck opraví všechny zjištěné problémy, které musí být bezpečně opraveny bez zásahu uživatele.

V případě, že fsck vyžaduje pozornost správce, před tiskem popisu problému se jednoduše ukončí s kódem chyby 4.

# 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

Jak si pamatujete, možnost fsck -y zde může být použita k automatickému vyřešení výše uvedeného problému.

# 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 Command:Použití a příklady

  2. 7 Příklady příkazů Linux df

  3. 8 Příklady příkazů Linux TR

  1. Zkontrolujte a opravte chyby souborového systému pomocí příkazu fsck v Linuxu

  2. sa Příklady příkazů v Linuxu

  3. w Příklady příkazů v Linuxu

  1. Příklady příkazů mkdir a rmdir v Linuxu

  2. Příklady příkazů rm v Linuxu

  3. Příklady příkazů ps v Linuxu