XFS

Réparer un système XFS

Réparer un système XFS
Les systèmes de fichiers sont construits au-dessus des périphériques de stockage. Il existe des contrôleurs RAID et des contrôleurs de disque exécutant chacun son propre micrologiciel. Il existe des caches pour améliorer les performances. Il existe des disques avec des tailles de secteur différentes et il existe des disques qui signaleraient une taille de secteur différente selon la façon dont vous posez la question.

Avec autant de pièces différentes qui constituent une pile de stockage typique, c'est un miracle que tout fonctionne. Cependant, les choses fonctionnent bien la plupart du temps. Les rares fois où les choses tournent mal, nous avons besoin d'utilitaires comme xfs_repair pour nous sortir du pétrin.

Les choses peuvent mal tourner lorsque vous écrivez un fichier et que l'alimentation est coupée ou qu'il y a une panique du noyau. Même les données dormantes sur un disque peuvent se dégrader avec le temps en raison de la modification de la structure physique des éléments de mémoire, c'est ce qu'on appelle la pourriture des bits. Dans tous les cas, nous avons besoin d'un mécanisme pour :

  1. Vérifier que les données en cours de lecture sont les mêmes que celles qui ont été écrites en dernier. Ceci est mis en œuvre en ayant une somme de contrôle pour chaque bloc de données et en comparant la somme de contrôle pour ce bloc lorsque les données sont lues. Si la somme de contrôle correspond, les données n'ont pas été modifiées
  2. Un moyen de reconstruire les données corrompues ou perdues, soit à partir d'un bloc miroir, soit à partir d'un bloc de parité.

Configuration du bac à sable

Configurons un banc d'essai pour exécuter une routine de réparation xfs au lieu d'utiliser de vrais disques contenant des données précieuses. Si vous avez déjà un système de fichiers cassé, vous pouvez ignorer cette section et passer directement à la suivante. Ce banc de test est constitué d'une VM Ubuntu à laquelle est connecté un disque virtuel fournissant un stockage brut. Vous pouvez utiliser VirtualBox pour créer la VM, puis créer un disque supplémentaire à attacher à la VM.

Allez simplement dans les paramètres de votre VM et sous Paramètres → Stockage section vous pouvez ajouter un nouveau disque au contrôleur SATA vous pouvez créer un nouveau disque. Comme indiqué ci-dessous, mais assurez-vous que votre machine virtuelle est éteinte lorsque vous faites cela.

Une fois le nouveau disque créé, allumez la VM et ouvrez le terminal. La commande lsblk répertorie tous les périphériques de bloc disponibles.

$ lsblk
sda      8:0    0   60G  0 disque
├─sda1   8:1    0    1M  0 partie
└─sda2   8:2    0   60G  0 partie /
sdb      8:16   0  100 G  0 disque
sr0     11:0    1 1024M  0 rom

En dehors du dispositif de bloc principal sda, là où le système d'exploitation est installé, il y a maintenant un nouveau périphérique sdb. Créons rapidement une partition à partir de celle-ci et formatons-la avec le système de fichiers XFS.

Ouvrez l'utilitaire parted en tant qu'utilisateur root :

$ parted -a optimal /dev/sdb

Créons d'abord une table de partition à l'aide de mklabel, suivi de la création d'une seule partition sur l'ensemble du disque (d'une taille de 107 Go). Vous pouvez vérifier que la partition est créée en la répertoriant à l'aide de la commande print :

(séparé) mklabel gpt
(séparé) mkpart primaire 0 107
impression (séparée)
(séparé) quitter

Bon, maintenant nous pouvons voir en utilisant lsblk qu'il y a un nouveau périphérique de bloc sous le périphérique sdb, appelé sdb1.

Formatons ce stockage en xfs et montons-le dans le répertoire /mnt. Encore une fois, effectuez les actions suivantes en tant que root :

$ mkfs.xfs /dev/sdb1
$ monter /dev/sdb1 /mnt
$ df -h

La dernière commande imprimera tous les systèmes de fichiers montés et vous pourrez vérifier que /dev/sdb1 est monté sur /mnt.

Ensuite, nous écrivons un tas de fichiers en tant que données factices à défragmenter ici :

$ dd if=/dev/urandom of=/mnt/myfile.txt compte = 1024 bs = 1024

La commande ci-dessus écrirait un fichier myfile.txt d'une taille de 1 Mo. Si vous le souhaitez, vous pouvez générer automatiquement d'autres fichiers de ce type, les répartir dans différents répertoires du système de fichiers xfs (monté sur /mnt), puis vérifier la fragmentation. Utilisez bash ou python ou tout autre de votre langage de script préféré pour cela.

Vérification et réparation des erreurs

Les corruptions de données peuvent s'infiltrer silencieusement dans vos disques à votre insu. Si un bloc de données n'est pas lu et que la somme de contrôle n'est pas comparée, l'erreur peut apparaître au mauvais moment. Quand quelqu'un essaie d'accéder aux données, en temps réel. Au lieu de cela, c'est une bonne idée d'exécuter une analyse approfondie de tous les blocs de données pour le contrôle de la pourriture des bits ou d'autres erreurs fréquemment.

L'utilitaire xfs_scrub est censé faire cette tâche pour votre. Inspirée en partie de la commande scrub d'OpenZFS, cette fonctionnalité expérimentale n'est disponible que sur xfsprogs version 4.15.1-1ubuntu1 qui n'est pas une version stable. S'il détecte à tort une erreur, cela peut vous induire en erreur en provoquant une corruption des données au lieu de la réparer! Cependant, si vous souhaitez l'expérimenter, vous pouvez l'utiliser sur un système de fichiers monté en utilisant la commande :

$ xfs_scrub /dev/sdb1

Avant d'essayer de réparer un système de fichiers corrompu, vous devez d'abord le démonter. C'est pour empêcher les applications d'écrire par inadvertance sur le système de fichiers alors qu'il est censé être laissé seul.

$ umount /dev/sdb1

Réparer les erreurs est aussi simple que d'exécuter :

$ xfs_repair /dev/sdb1

Les métadonnées essentielles sont toujours conservées sous forme de copies multiples, même si vous n'utilisez pas RAID et si quelque chose ne va pas avec le superbloc ou les inodes, cette commande peut résoudre ce problème pour vous selon toute vraisemblance.

Prochaines étapes

Si vous constatez souvent une corruption de données (ou même une fois, si vous exécutez quelque chose de critique), envisagez de remplacer vos disques car cela pourrait être un indicateur précoce d'un disque sur le point de mourir.

Si un contrôleur tombe en panne ou qu'une carte RAID a perdu la vie, aucun logiciel au monde ne peut réparer le système de fichiers pour vous. Vous ne voulez pas de factures de récupération de données coûteuses et vous ne voulez pas non plus de longs temps d'arrêt, alors gardez un œil sur ces SSD et ces plateaux tournants!

Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...
Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...