Méthodes efficaces de dépannage et de récupération des erreurs du système de fichiers Linux
Dépanner les erreurs du système de fichiers Linux en toute sécurité avec les journaux, les vérifications de démontage, fsck, la récupération lost+found, les superblocs de sauvegarde et les sauvegardes.
Méthodes efficaces de dépannage et de récupération des erreurs du système de fichiers Linux
Les erreurs du système de fichiers peuvent transformer une panne Linux normale en un incident de perte de données si vous précipitez la réparation. Votre première tâche est d'arrêter les écritures, d'identifier le périphérique et de choisir la bonne voie de récupération avant d'exécuter des outils qui modifient les métadonnées.
Ce guide se concentre sur le dépannage pratique des erreurs du système de fichiers Linux avec fsck et des outils spécifiques au système de fichiers tels que e2fsck pour ext2/3/4. Le flux de travail le plus sûr est ennuyeux : inspecter les journaux, sauvegarder ce que vous pouvez, démonter le système de fichiers, exécuter le vérificateur correct et vérifier le résultat avant de remettre le disque en service.
1. Reconnaître et identifier la corruption du système de fichiers
Les erreurs du système de fichiers se manifestent souvent par plusieurs signes indubitables. Une détection précoce est cruciale pour empêcher une corruption mineure de se transformer en perte totale de données.
Symptômes courants de corruption
- Erreurs d'E/S : Erreurs du noyau signalées lors de l'accès aux fichiers, indiquant souvent "Erreur d'entrée/sortie" ou des messages similaires.
- Fichiers manquants ou corrompus : Les fichiers disparaissent ou contiennent des données inutiles, même après des sauvegardes réussies.
- Performances lentes : Une lenteur excessive du système, en particulier lors des opérations sur le disque, peut indiquer que le système a du mal à interpréter des métadonnées corrompues.
- Échec du montage : Le système ne peut pas monter une partition spécifique au démarrage, ce qui amène souvent l'utilisateur à un shell d'urgence.
- Messages du journal du noyau : Erreurs critiques enregistrées par le noyau, souvent consultables via la commande
dmesgou dans/var/log/syslogoujournalctl.
Zones clés à surveiller
La corruption du système de fichiers affecte généralement les structures de métadonnées, en particulier :
- Le superbloc : Contient des informations vitales sur l'ensemble de la structure du système de fichiers (taille, nombre d'inodes, nombre de blocs, état).
- Les tables d'inodes : Structures qui décrivent les fichiers réels (propriétaire, autorisations, emplacements des blocs physiques).
- Les pointeurs de blocs de données : Erreurs dans le mappage des blocs physiques appartenant à quels fichiers.
Si le superbloc est endommagé, l'ensemble du système de fichiers est généralement inaccessible jusqu'à ce qu'il soit réparé ou remplacé à l'aide d'un superbloc de sauvegarde.
# Vérifier les journaux du noyau pour les erreurs d'activité récentes du disque
dmesg | grep -Ei 'error|fail|i/o'
# Examiner le journal système pour les avertissements ou erreurs persistants
journalctl -xb
2. Préparation : La règle du système de fichiers démonté
ABSOLUMENT CRITIQUE : Vous ne devez jamais exécuter un utilitaire de récupération comme fsck sur un système de fichiers actif monté. Cela peut causer des dommages immédiats et irréversibles et entraîner une perte complète de données. Les systèmes de fichiers doivent être démontés ou montés en lecture seule (ro) avant la vérification.
Démonter les partitions de données
Pour les partitions non racines (par exemple, /home, /data) :
# Identifier le chemin du périphérique (par exemple, /dev/sdb1)
df -h
# Démonter la partition cible
sudo umount /dev/sdb1
# Vérifier que le démontage a réussi
df -h | grep sdb1
Gérer la partition racine (/)
Étant donné que la partition racine ne peut pas être démontée pendant que le système fonctionne normalement, vous avez trois options principales :
- Redémarrer en mode mono-utilisateur/récupération : De nombreuses distributions modernes offrent un mode de récupération qui monte le système de fichiers racine en lecture seule, permettant à
fsckd'être exécuté en toute sécurité. - Utiliser une distribution Live (recommandé) : Démarrez le serveur à l'aide d'une clé USB ou d'une image ISO (par exemple, Ubuntu Live, CentOS Live) et effectuez la vérification à partir de cet environnement d'exploitation séparé.
- Forcer la vérification au prochain démarrage : Dans certains systèmes plus anciens, toucher le fichier
/forcefsckforce le système à exécuterfscklors du prochain cycle de démarrage. (Cette méthode est moins fiable sur les systèmes de fichiers journalisés modernes comme ext4).
3. Utilisation de fsck pour la récupération du système de fichiers
fsck est une commande wrapper qui invoque automatiquement l'outil de vérification du système de fichiers approprié (par exemple, e2fsck pour ext4, fsck.xfs pour XFS) en fonction du type de partition.
Utilisation de base de fsck
Lors de l'exécution de fsck, spécifiez toujours le chemin complet du périphérique, pas le point de montage.
# Commande de base pour vérifier /dev/sdb1
sudo fsck /dev/sdb1
Options essentielles de fsck
| Option | Description | Avertissement/Remarque |
|---|---|---|
-f |
Forcer la vérification même si le système de fichiers semble propre. (Hautement recommandé.) | |
-y |
Supposer 'oui' à toutes les questions, en corrigeant automatiquement les erreurs. | À UTILISER AVEC PRUDENCE : Peut supprimer ou mettre en quarantaine des données si elles ne peuvent pas être récupérées. |
-n |
Supposer 'non' à toutes les questions, en effectuant un essai à blanc sans apporter de modifications. | Utile pour l'évaluation uniquement. |
-p |
Réparer automatiquement les problèmes sûrs sans inviter l'utilisateur. | À utiliser pour les vérifications de routine, pas pour une corruption majeure. |
Exemple : Forcer la vérification avec réparations automatiques
# Assurez-vous que la partition est d'abord démontée !
sudo fsck -f -y /dev/sdb1
Lorsque fsck s'exécute, il passe par cinq phases principales, vérifiant les blocs, les listes d'inodes, la connectivité des répertoires, les compteurs de références et les descripteurs de groupe.
Astuce : Si vous connaissez le type de système de fichiers (par exemple, ext4), vous pouvez contourner le wrapper et utiliser directement l'outil spécifique pour un plus grand contrôle :
sudo e2fsck -f -y /dev/sdb1
4. Comprendre et gérer les messages d'erreur courants
Pendant le processus de réparation, fsck peut demander à l'utilisateur l'autorisation de corriger les erreurs structurelles. Comprendre ces invites aide à déterminer la meilleure marche à suivre.
Erreurs d'inode
Erreur : L'inode X a des blocs invalides. Effacer ?
- Signification : Le fichier décrit par l'inode X pointe vers des blocs qui sont invalides, non alloués ou appartiennent à un autre fichier.
- Action : Généralement, sélectionner 'Oui' est la bonne approche. Le fichier représenté par cet inode est perdu, mais la structure du système de fichiers est maintenue.
Erreurs de nombre de blocs
Erreur : Le nombre de blocs pour l'inode X est Y, devrait être Z. Corriger ?
- Signification : Les métadonnées pensent que le fichier utilise Y blocs, mais un comptage physique montre que Z blocs sont réellement alloués. C'est une forme courante d'incohérence.
- Action : Choisissez toujours 'Oui' pour corriger l'incohérence de comptage.
Erreurs de répertoire et lost+found
Si fsck trouve des fichiers (inodes) qui existent mais ne sont plus liés à aucune entrée de répertoire, ils sont considérés comme orphelins. fsck déplacera automatiquement ces fichiers dans un répertoire spécial appelé lost+found situé à la racine de la partition.
Récupération depuis lost+found
- Une fois
fsckterminé, remontez la partition et accédez au répertoirelost+found. - Les fichiers sont renommés avec leur numéro d'inode (par exemple,
#12345). - Vous devez examiner manuellement ces fichiers pour déterminer leur contenu d'origine et les renommer.
sudo mount /dev/sdb1 /mnt/data
cd /mnt/data/lost+found
sudo file ./#12345
# S'il s'agit de texte, utilisez 'cat' ou 'less' pour voir le contenu.
5. Récupération avancée : Gérer un superbloc corrompu
Si le superbloc principal est gravement corrompu, fsck échouera immédiatement, signalant qu'il ne peut pas lire la structure. Heureusement, les systèmes de fichiers ext2/3/4 stockent des copies de sauvegarde du superbloc.
Trouver les superblocs de sauvegarde
Les superblocs de sauvegarde sont stockés à des emplacements dépendants du système de fichiers. Vous pouvez souvent les lister avec mke2fs -n en utilisant les mêmes options de taille de bloc qui ont été utilisées pour créer le système de fichiers, ou avec dumpe2fs si suffisamment de métadonnées restent lisibles. N'exécutez pas mke2fs sans -n ; cela créerait un nouveau système de fichiers.
# Afficher où se trouveraient les superblocs de sauvegarde sans créer de système de fichiers
sudo mke2fs -n /dev/sdb1
# Ou inspecter un système de fichiers ext existant si les métadonnées sont suffisamment lisibles
sudo dumpe2fs /dev/sdb1 | grep -i 'superblock'
Restauration à partir d'un superbloc de sauvegarde
Si fsck échoue, vous pouvez forcer e2fsck à utiliser un emplacement de superbloc de sauvegarde spécifique à l'aide de l'option -b.
Exemple : Utilisation du superbloc de sauvegarde situé au bloc 8193.
# Rappel : La partition doit être démontée
sudo e2fsck -b 8193 /dev/sdb1
En cas de succès, cela reconstruira les métadonnées du système de fichiers à l'aide de la copie de sauvegarde, conduisant souvent à une récupération complète, bien que cela puisse entraîner la perte des modifications les plus récentes apportées depuis la dernière synchronisation propre.
6. Mesures préventives et bonnes pratiques
Prévenir la corruption du système de fichiers est toujours préférable à la récupération.
Arrêts propres
Assurez-vous toujours que les systèmes sont arrêtés correctement. Une perte de courant brutale est une cause principale de corruption des métadonnées, car le noyau peut ne pas avoir vidé les écritures en attente sur le disque.
Surveillance régulière
Utilisez des outils pour surveiller la santé de vos disques physiques (HDD/SSD). smartctl peut lire les données S.M.A.R.T., indiquant une défaillance matérielle imminente, qui précède souvent la corruption du système de fichiers.
# Vérifier les données de santé SMART de base pour sda
sudo smartctl -H /dev/sda
Journalisation et sauvegardes
Les systèmes de fichiers modernes comme ext4 et XFS utilisent la journalisation pour rétablir rapidement la cohérence après un crash, atténuant les corruptions mineures. Cependant, la journalisation ne remplace pas des sauvegardes régulières et fiables. Maintenez toujours des sauvegardes hors site à jour des données critiques, car des défaillances matérielles graves ou des erreurs humaines peuvent contourner même les outils de récupération les plus robustes.
En résumé : Récupération sûre
Si vous soupçonnez une corruption du système de fichiers, arrêtez d'abord les écritures et réparez ensuite. Capturez les journaux, faites une sauvegarde au niveau bloc lorsque les données sont importantes, démontez le système de fichiers et utilisez le vérificateur qui correspond au type de système de fichiers. Après la réparation, inspectez lost+found, examinez les données SMART et remplacez le stockage suspect au lieu de réparer à plusieurs reprises le même disque défaillant.