web-dev-qa-db-fra.com

Manière appropriée 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émarrerait 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 gérer le journal.

J'ai monté la partition et j'ai fait un ls pour vérifier que oui, elle semble être là. J'ai démonté la partition et essayé xfs_repair encore et a reçu 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 simplement restaurer le système à partir de sauvegardes (c'était rapide et facile dans ce cas), mais j'aimerais savoir quoi faire à l'avenir.

20
Michael Kohne

Si vous essayez d'exécuter xfs_repair , vous obtenez le message d'erreur qui suggère de monter le système de fichiers pour relire le journal, et après avoir reçu le même message d'erreur, vous devrez peut-être effectuer une réparation forcée (à l'aide de le -L drapeau avec xfs_repair). Cette option devrait être un dernier recours.

Par exemple, je vais utiliser un cas où j'avais une partition racine corrompue sur mon installation CentOS 7. Lors de la tentative de montage de la partition, j'ai toujours reçu le message d'erreur ci-dessous:

mount: échec du montage/dev/mapper/centos-root sur/mnt/centos-root: 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. Lorsque vous utilisez cette méthode, il y a un potentiel de se retrouver avec plus de données corrompues que prévu initialement; cependant, nous pouvons utiliser les outils xfs appropriés pour voir quels types de dommages peuvent être causés avant d'apporter des modifications permanentes.

En utilisant xfs_metadump et 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. Les avantages de ceci sont la capacité de voir les dommages qui accompagnent une réparation forcée avant de l'exécuter sur la partition.

Pour ce faire, vous aurez besoin d'un disque dur USB ou externe de taille décente. Commencez par monter la clé USB - mon clé USB se trouvait à /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 partition sur l'USB - encore une fois, votre partition affectée peut être différente. Dans ce cas, j'avais une partition racine corrompue située à /dev/mapper/centos-root:

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

Ensuite, vous souhaiterez 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é qu'en mode de sauvetage xfs_mdrestore n'est pas disponible, et à la place, vous devrez être en mode de secours d'un CD CentOS en direct.

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 sur la partition.

Pour exécuter la réparation sur la partition, exécutez simplement:

xfs_repair -L /dev/mapper/centos-root

N'oubliez pas de vérifier également les autres partitions. Après les réparations, redémarrez le système et vous devriez pouvoir démarrer correctement.

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

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

22
brendonofficial

J'ai eu cette erreur quand le centos 7 s'est arrêté à l'intérieur d'une machine virtuelle kvm:

corruption de métadonnées détectée chez 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 complète les sept phases, puis redémarre à l'aide de

./fermer

Et puis la machine virtuelle centos 7 fonctionne bien…

Cordialement

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

1
davidleosam