GNU/Linux >> Tutoriels Linux >  >> Linux

Vérifier et réparer les erreurs du système de fichiers avec la commande fsck sous Linux

Parfois, de mauvaises choses arrivent à de bons systèmes.

Heureusement, vous êtes un utilisateur Linux et vous avez fsck (vérification du système de fichiers) pour aider avec un système de fichiers potentiellement corrompu. Cet utilitaire est utilisé pour vérifier et (éventuellement) réparer le système de fichiers.

Il existe plusieurs scénarios dans lesquels vous pouvez utiliser fsck. En règle générale, vous souhaiterez exécuter cette commande si votre système ne démarre pas, si un périphérique (disques externes ou supports de stockage) ne fonctionne pas correctement ou si vous avez constaté des preuves de corruption de fichiers.

Fsck est en fait un "front-end" pour un certain nombre de vérificateurs spécifiques au système de fichiers comme fsck.vfat, fsck.ext2, etc. Ceux-ci n'ont pas besoin d'être spécifiés, mais vous pourrez peut-être trouver des options plus avancées dans l'homme pages de ces commandes plus précises.

Introduction à la commande fsck

La commande fsck suit un modèle similaire à la plupart des commandes Linux.

fsck [options] [filesystem]

Si vous ne spécifiez pas de système de fichiers, le système analysera votre fichier fstab (/etc/fstab ) pour les appareils à scanner.

Vous devrez exécuter la commande en tant qu'utilisateur root ou l'utiliser avec sudo.

Vous pouvez utiliser la commande fdisk ou df pour répertorier le disque dur sous Linux. De cette façon, vous pouvez spécifier le périphérique à vérifier avec la commande 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

Démontez l'appareil avant d'exécuter fsck

N'exécutez pas fsck sur un appareil monté, vous devrez d'abord démonter la cible pour éviter d'endommager vos fichiers.

Si vous essayez d'exécuter fsck sur un appareil monté, vous devriez voir une erreur comme celle-ci :

[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'exécution de fsck sur un lecteur normal et sain ressemble à ceci :

[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

Alors que fsck accepte un nom de périphérique comme /dev/sda , vous pouvez choisir d'entrer l'UUID pour éviter toute confusion avec le montage et le démontage d'appareils. L'UUID est une valeur fixe attribuée à votre appareil et ne sera pas affectée par ces modifications du système.

Comprendre les codes de sortie pour la commande fsck

Voici une liste des codes qui peuvent être renvoyés par fsck après avoir inspecté un disque. Votre code de sortie sera une somme de ces codes si vous analysez un disque. Si vous utilisez fsck sur plusieurs appareils, il renverra le OU au niveau du bit des deux sommes.

  • 0 - Aucune erreur
  • 1 - Erreurs du système de fichiers corrigées
  • 2 - Le système doit être redémarré
  • 4 - Erreurs du 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

Vous pouvez vérifier le code de sortie de la dernière commande exécutée en utilisant echo $? commande.

Utilisation pratique de la commande fsck

Maintenant que vous êtes un peu familiarisé avec la commande fsck, voyons des cas d'utilisation pratiques de cette commande.

Réparer un disque USB et d'autres périphériques amovibles

Pour notre propos, supposons que vous avez déjà identifié le périphérique problématique /dev/sdb .

Tout d'abord, vous devez vous assurer que le lecteur a été démonté :

sudo umount /dev/sdb

Exécutez maintenant la commande fsck :

sudo fsck /dev/sdb

Vérifiez la sortie pour toute erreur. Si aucun ne s'affiche, vérifiez le code de sortie avec echo $? .

Il existe également des indicateurs d'option que nous pouvons ajouter pour permettre une correction automatisée. Ces commandes ne sont cependant pas standardisées et vous devez vérifier le type de système de fichiers et comparer la documentation de cette page de manuel spécifique.

Malgré cela, vous pouvez généralement utiliser -p pour permettre à fsck d'appliquer automatiquement les réparations.

sudo fsck -p /dev/sdb

De même, -y appliquera des corrections à toute corruption de système de fichiers détectée.

Réparer le système de fichiers racine

Vous ne pouvez pas démonter la partition racine lorsque le système est actif. Si vous pensez que votre système de fichiers principal est corrompu, vous devez utiliser une approche différente ici.

Il existe en fait quelques options différentes que vous pouvez utiliser. Vous pouvez exécuter fsck au démarrage, en mode de secours ou utiliser un CD live sur le thème de la récupération.

De nombreuses distributions Linux forceront automatiquement fsck au démarrage après un certain nombre de tentatives de démarrage infructueuses. Si vous préférez prendre les choses en main, vous pouvez programmer le système pour qu'il le fasse nous-mêmes.

La plupart des versions modernes de Linux disposent d'un outil appelé tune2fs.

sudo tune2fs -c 1 /dev/sda

En supposant que votre périphérique racine est dev/sda , il s'agit de la commande à saisir.

Maintenant, ce qui se passe réellement, c'est que vous modifiez les paramètres système afin que fsck soit exécuté tous les n nombre de bottes (1 dans l'exemple). Vous pouvez également le définir sur un intervalle de temps standard. Les options sont d oui, w eeks, ou m mois.

Supposons que vous vouliez que fsck s'exécute à chaque fois que vous démarrez s'il n'y a pas eu de vérification depuis une semaine. Vous pouvez utiliser -i pour spécifier l'intervalle et la commande ressemblerait à ceci.

sudo tune2fs -i 1w /dev/sda	

Si vous utilisez systemd, vous pouvez forcer l'exécution de fsck lors de votre prochain démarrage en saisissant ce qui suit :

fsck.mode=force
fsck.repair=yes

Conclusion

Vous pouvez toujours consulter les pages de manuel pour plus d'informations. Utilisez simplement man fsck dans le terminal.

J'espère que vous avez appris quelque chose de nouveau sur la commande fsck. Si vous avez des commentaires ou des questions, veuillez les laisser ci-dessous.


Linux
  1. Vérifiez les processus Java sous Linux avec la commande jps

  2. Regardez les commandes et les tâches avec la commande Linux watch

  3. Vérifiez l'état du fichier sous Linux avec la commande stat

  4. Vérifier l'espace disque sous Linux à l'aide des commandes df et du

  5. Commande JQ sous Linux avec exemples

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

15 Commande Linux ps avec exemples

Commande Fsck sous Linux

Comment vérifier et réparer un système de fichiers dans RHEL Linux

Comment vérifier la version du système d'exploitation avec la ligne de commande Linux

Comment vérifier les paramètres du serveur VPS avec la commande Linux