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