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.