GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples de commandes Linux Fsck pour vérifier et réparer le système de fichiers

L'utilitaire Linux fsck est utilisé pour vérifier et réparer les systèmes de fichiers Linux (ext2, ext3, ext4, etc.).

Selon la date de la dernière vérification d'un système de fichiers, le système exécute le fsck au démarrage pour vérifier si le système de fichiers est dans un état cohérent. L'administrateur système peut également l'exécuter manuellement en cas de problème avec les systèmes de fichiers.

Assurez-vous d'exécuter le fsck sur un système de fichiers non monté pour éviter tout problème de corruption de données.

Cet article explique 10 exemples pratiques sur la façon d'exécuter la commande fsck pour dépanner et corriger les erreurs du système de fichiers.

1. Vérification du système de fichiers sur une partition de disque

Tout d'abord, affichez toutes les partitions disponibles sur votre système à l'aide de la commande parted comme indiqué ci-dessous.

# 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

Vous pouvez vérifier un système de fichiers spécifique (par exemple :/dev/sda6) comme indiqué ci-dessous.

# 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

Voici les codes de sortie possibles pour la commande fsck.

  • 0 – Aucune erreur
  • 1 – Correction des erreurs de système de fichiers
  • 2 – Le système doit être redémarré
  • 4 – Erreurs de système de fichiers non corrigées
  • 8 – Erreur de fonctionnement
  • 16 – Erreur d'utilisation ou de syntaxe
  • 32 – Fsck annulé à la demande de l'utilisateur
  • 128 – Erreur de bibliothèque partagée

2. Commande Fsck spécifique à un type de système de fichiers

fsck utilise en interne la commande de vérification du système de fichiers respective pour une opération de vérification du système de fichiers. Ces commandes du vérificateur fsck se trouvent généralement sous /sbin.

L'exemple suivant montre les différentes commandes possibles du vérificateur fsck (par exemple :fsck.ext2, fsck.ext3, fsck.ext4, etc.)

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

La commande fsck génère une erreur lorsqu'elle ne trouve pas de vérificateur de système de fichiers pour le système de fichiers en cours de vérification.

Par exemple, si vous exécutez fsck sur une partition ntfs, vous obtiendrez le message d'erreur suivant. Il n'y a pas de fsck.ntfs sous /sbin. Donc, cela donne le message d'erreur suivant.

# 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. Vérifiez tous les systèmes de fichiers en une seule fois à l'aide de l'option -A

Vous pouvez vérifier tous les systèmes de fichiers en une seule exécution de fsck en utilisant cette option. Ceci vérifie le système de fichiers dans l'ordre donné par le fs_passno mentionné pour chaque système de fichiers dans /etc/fstab.

Veuillez noter que les systèmes de fichiers avec une valeur fs_passno de 0 sont ignorés et supérieurs à 0 sont vérifiés dans la commande.

Le /etc/fstab contient les entrées listées ci-dessous,

# 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

Ici, le système de fichiers avec le même fs_passno est vérifié en parallèle dans votre système.

# fsck -A

Il est recommandé d'exclure le système de fichiers racine lors de cette vérification globale en ajoutant l'option -R comme indiqué ci-dessous.

# 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

Remarque :L'option -y est expliquée dans l'un des exemples ci-dessous.

4. Vérifier uniquement un type de système de fichiers spécifique à l'aide de l'option -t

En utilisant l'option fsck -t, vous pouvez spécifier la liste des systèmes de fichiers à vérifier. Lorsque vous utilisez avec l'option -A, le fsck vérifiera uniquement le système de fichiers mentionné avec cette option -t. Notez que fslist est une valeur séparée par des virgules.

Maintenant, passez ext2 comme valeur fslist à l'option -t comme indiqué ci-dessous :

# 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

Dans cet exemple, /dev/sda6 est la seule partition créée avec le système de fichiers ext2, elle est donc vérifiée en conséquence.

En utilisant le mot-clé "non" devant le système de fichiers, vous pouvez vérifier tous les autres types de systèmes de fichiers à l'exception d'un système de fichiers particulier.

Dans l'exemple suivant, le système de fichiers ext2 est exclu de la vérification.

# 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. N'exécutez pas Fsck sur le système de fichiers monté à l'aide de l'option -M

C'est une bonne idée d'utiliser cette option par défaut avec toutes vos opérations fsck. Cela vous empêche d'exécuter fsck accidentellement sur un système de fichiers qui est monté.

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

Comme indiqué ci-dessus, /dev/sda7 est monté. Si vous essayez d'exécuter fsck sur ce système de fichiers monté sur /dev/sda7 (avec l'option -M), fsck se terminera simplement avec le code de sortie 0 comme indiqué ci-dessous.

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

6. Ignorez le titre d'affichage à l'aide de l'option -T

En utilisant l'option -T, vous pouvez ignorer l'affichage du titre au début de la sortie de la commande 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

Notez que le titre est quelque chose comme "fsck de util-linux 2.20.1".

7. Forcer une vérification du système de fichiers même s'il est propre en utilisant l'option -f

Par défaut, fsck essaie d'ignorer le système de fichiers propre pour faire un travail plus rapide.

# 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

Vous pouvez le forcer à vérifier le système de fichiers en utilisant -f comme indiqué ci-dessous.

# 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. Tentative de résolution automatique des problèmes détectés à l'aide de l'option -y

Dans l'exemple suivant, la partition /dev/sda6 est corrompue comme indiqué ci-dessous.

# 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

Comme vu ci-dessus, le répertoire Films et un fichier test les attributs ne sont pas valides.

Dans l'exemple suivant, -y transmettra "oui" à toutes les questions pour corriger automatiquement la corruption détectée.

# 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. Évitez de réparer, mais signalez les problèmes à Stdout en utilisant l'option -n

Il est possible d'imprimer ces problèmes détectés dans stdout sans réparer le système de fichiers à l'aide de l'option fsck -n.

Tout d'abord, vous pouvez remarquer/voir le problème dans la partition /dev/sda6 que le répertoire Movies (et le fichier fwh) n'a pas de détails d'attribut valides.

# 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

Le problème ci-dessus dans la partition spécifique affichée dans stdout sans y remédier comme suit,

L'exemple fsck suivant affiche le problème dans la sortie standard sans le résoudre. (la sortie partielle est illustrée ci-dessous).

# 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. Réparer automatiquement les parties endommagées à l'aide de l'option -a

Afin de réparer automatiquement la partie endommagée (sans aucune interaction de l'utilisateur), utilisez l'option -a comme indiqué ci-dessous.

# fsck -a -AR

L'option -a est identique à -p dans l'utilitaire e2fsck. Cela amène e2fsck à résoudre tous les problèmes détectés qui doivent être résolus en toute sécurité sans interaction de l'utilisateur.

Dans le cas où fsck nécessite l'attention de l'administrateur, il se termine simplement avec le code d'erreur 4 avant d'imprimer la description du problème.

# 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

Comme vous vous en souvenez, l'option fsck -y peut être utilisée ici pour résoudre automatiquement le problème ci-dessus.

# 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. Vérifier et réparer les erreurs du système de fichiers avec la commande fsck sous Linux

  2. 8 Exemples de commandes Linux TR

  3. Exemples de commandes sa sous Linux

  4. ac Exemples de commandes sous Linux

  5. Exemples de commandes df sous Linux

Comment utiliser la commande fsck pour vérifier et réparer le système de fichiers

Commande Fsck sous Linux (réparer le système de fichiers)

Commandes Linux - Présentation et exemples

Options de commande et exemples de commande Tee sous Linux

Exemples de commandes id sous Linux

Exemples de commandes fsck sous Linux