28 votes

La bonne façon de traiter les systèmes de fichiers XFS corrompus

J'ai récemment eu un système de fichiers XFS corrompu en raison d'une panne de courant. (système CentOS 7). Le système ne démarrait pas correctement.

J'ai démarré à partir d'un CD de secours et j'ai essayé xfs_repair il m'a dit de monter la partition pour traiter le journal.

J'ai monté la partition, et j'ai fait un ls pour vérifier que oui, il semble être là. J'ai démonté la partition et essayé xfs_repair et j'ai eu le même message.

Que suis-je censé faire dans cette situation ? Y a-t-il un problème avec mon CD de secours (System Rescue CD, version 4.7.1) ? Y a-t-il une autre procédure que j'aurais dû utiliser ?

J'ai fini par restaurer simplement le système à partir des sauvegardes (c'était rapide et facile dans ce cas), mais j'aimerais savoir quoi faire à l'avenir.

29voto

Eli Points 21

Si vous essayez d'exécuter xfs_repair Après avoir reçu le message d'erreur suggérant de monter le système de fichiers pour relire le journal, et après avoir monté le système, vous recevez toujours le même message d'erreur, vous devrez peut-être effectuer une réparation forcée (en utilisant la commande -L drapeau avec xfs_repair ). Cette option ne doit être envisagée qu'en dernier recours.

Par exemple, je vais utiliser un cas où la partition racine de mon installation CentOS 7 était corrompue. En essayant de monter la partition, je recevais continuellement le message d'erreur ci-dessous :

mount : le montage de /dev/mapper/centos-root sur /mnt/centos-root a échoué : La structure doit être nettoyée

Malheureusement, forcer une réparation impliquerait de mettre à zéro (détruire) le journal avant de tenter une réparation. En utilisant cette méthode, il est possible de se retrouver avec plus de données corrompues que prévu initialement ; cependant, nous pouvons utiliser les outils xfs appropriés pour voir quel type de dommage peut être causé avant de faire des changements permanents.

Utilisation de xfs_metadump y xfs_mdrestore vous pouvez créer une image de métadonnées de la partition affectée et effectuer la réparation forcée sur l'image plutôt que sur la partition elle-même. L'avantage de cette méthode est la possibilité de voir les dommages causés par une réparation forcée avant de l'effectuer sur la partition.

Pour ce faire, vous aurez besoin d'un disque dur externe ou USB de taille décente. Commencez par monter le disque USB - mon USB se trouvait à l'adresse suivante /dev/sdb1 le vôtre peut être nommé différemment.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

Une fois monté, exécutez xfs_metadump pour créer une copie des métadonnées de la partition sur l'USB - encore une fois, votre partition concernée peut être différente. Dans ce cas, la partition racine était corrompue et se trouvait à l'adresse suivante /dev/mapper/centos-root :

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

Ensuite, vous voudrez restaurer les métadonnées dans une image afin que nous puissions effectuer une réparation et mesurer les dommages.

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

J'ai trouvé ça en mode sauvetage xfs_mdrestore n'est pas disponible, et à la place vous devrez être en mode de secours d'un CD CentOS vivant.

Enfin, nous pouvons effectuer la réparation sur l'image :

xfs_repair -L /mnt/usb/centos-root.img

Une fois la réparation terminée et après avoir évalué la sortie et les dommages potentiels, vous pouvez déterminer si vous souhaitez effectuer la réparation contre la partition.

Pour exécuter la réparation de la partition, il suffit d'exécuter :

xfs_repair -L /dev/mapper/centos-root

N'oubliez pas de vérifier que les autres partitions ne sont pas corrompues non plus. Après les réparations, redémarrez le système et vous devriez pouvoir démarrer avec succès.

N'oubliez pas que le -L Le drapeau ne doit être utilisé qu'en dernier recours, lorsqu'il n'y a pas d'autres options possibles pour réparer.

J'ai trouvé que ces articles en ligne m'ont aidé :

2voto

davidleosam Points 141

J'ai eu cette erreur lorsque centos 7 s'est mal arrêté dans une machine virtuelle kvm :

# metadata corruption detected at xfs...

quand j'utilise le journal avec journalctl -xe j'ai trouvé une erreur de montage :

# /dev/mapper/root /sysroot

Je le résous en utilisant :

# xfs_repair /dev/mapper/root

Ensuite, le système termine les sept phases, puis redémarre en utilisant

# ./shutdown

Et puis la machine virtuelle centos 7 fonctionne bien

Salutations

Remarque : peut-être que votre /dev/mapper/root a un autre nom, veuillez regarder votre journal d'erreurs avec journalctl -xe pour trouver le nom de votre unité mal montée

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X