Réparation d'un système XFS

Réparation d'un système XFS
Les systèmes de fichiers sont construits sur les périphériques de stockage. Il y a des contrôleurs RAID et des contrôleurs de disque exécutant chacun son propre petit firmware. Il y a des caches pour améliorer les performances. Il y a des disques avec différentes tailles sectorielles et il y a des disques qui rapporteraient une taille de secteur différente en fonction de la façon dont vous posez la question.

Avec autant de parties différentes qui constituent une pile de stockage typique, c'est un miracle que tout fonctionne du tout. Cependant, les choses fonctionnent bien la plupart du temps. Les quelques fois où les choses tournent mal, nous avons besoin de services publics comme xfs_repair pour nous sortir du gâchis.

Les choses peuvent mal tourner lorsque vous écrivez un fichier et que l'alimentation s'éteint ou qu'il y a une panique du noyau. Même les données assemblées en sommeil sur un disque peuvent se décomposer au fil du temps en raison de la structure physique des éléments de mémoire peuvent changer, ceci est connu sous le nom de bit. Dans tous les cas, nous avons besoin d'un mécanisme pour:

  1. La vérification des données lues est les mêmes données qui ont été écrites pour la dernière fois. 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 dans un bloc de parité.

Configuration du bac à sable

Installons un banc de test pour exécuter une routine de réparation XFS au lieu d'utiliser des disques réels avec des données précieuses. Si vous avez déjà un système de fichiers brisé, vous pouvez ignorer cette section et sauter la tête de droite vers la suivante. Ce banc d'essai est composé d'une machine virtuelle Ubuntu à laquelle un disque virtuel est connecté pour fournir un stockage brut. Vous pouvez utiliser VirtualBox pour créer la machine virtuelle, puis créer un disque supplémentaire pour attacher à la machine virtuelle.

Allez simplement aux paramètres de votre machine virtuelle 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 désactivée lorsque vous faites cela.

Une fois le nouveau disque créé, allumez la machine virtuelle et ouvrez le terminal. La commande lsblk Répertorie tous les appareils de bloc disponibles.

$ lsblk
SDA 8: 0 0 60G 0 Disque
├ssda1 8: 1 0 1m 0 partie
└─Sda2 8: 2 0 60g 0 partie /
SDB 8:16 0 100G 0 Disque
SR0 11: 0 1 1024M 0 ROM

En dehors de l'appareil de bloc principal SDA, Là où le système d'exploitation est installé, il y a maintenant un nouvel appareil SDB. Créons rapidement une partition à partir de celui-ci et le formations avec le système de fichiers XFS.

Ouvrez l'utilité séparée en tant qu'utilisateur root:

$ séparé -a optimal / dev / sdb

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

(séparé) Mklabel gpt
(séparé) Mkpart primaire 0 107
(séparé) imprimer
(séparé) arrêter

D'accord, 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 comme XFS et montons-le dans le répertoire / mnt. Encore une fois, effectuez les actions suivantes comme racine:

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

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

Ensuite, nous écrivons un tas de fichiers en tant que données factice pour défragment ici:

$ dd if = / dev / urandom de = / mnt / myfile.Txt Count = 1024 BS = 1024

La commande ci-dessus écrire un fichier myfile.txt de la taille de 1 Mo. Si vous le souhaitez, vous pouvez générer automatiquement plus de tels fichiers, les répartir dans divers répertoires dans le système de fichiers XFS (monté sur / mnt), puis vérifier la fragmentation. Utilisez Bash ou Python ou tout autre de votre langue de script préférée pour cela.

Vérification et réparation des erreurs

Les corruptions de données peuvent se glisser silencieusement dans vos disques à votre insu. Si un bloc de données n'est pas lu et la somme de contrôle n'est pas comparée, l'erreur peut simplement 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 la vérification de la pourriture des bits ou d'autres erreurs fréquemment.

L'utilitaire XFS_SCRUB est censé faire cette tâche pour votre. Inspiré en partie par la commande d'OpenZFS, cette fonction expérimentale est disponible uniquement sur XFSProgs version 4.15.1-1ubuntu1 qui n'est pas une version stable. Si cela détecte à tort l'erreur, cela pourrait vous induire en erreur en provoquant une corruption des données au lieu de le réparer! Cependant, si vous souhaitez l'expérimenter, vous pouvez l'utiliser sur un système de fichiers monté à l'aide de la commande:

$ xfs_scrub / dev / sdb1

Avant d'essayer de réparer un système de fichiers corrompu, vous devrez d'abord le démêler. Il s'agit d'empêcher les applications d'écrire par inadvertance au système de fichiers lorsqu'il est censé être laissé seul.

$ umount / dev / sdb1

La réparation des erreurs est aussi simple que la course:

$ xfs_repair / dev / sdb1

Les métadonnées essentielles sont toujours conservées à des copies multiples, même si vous n'utilisez pas RAID et si quelque chose a mal tourné avec le superblock ou les inodes, cette commande peut résoudre ce problème pour vous dans toute vraisemblance.

Prochaines étapes

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

Si un contrôleur échoue ou si une carte RAID a abandonné la vie, aucun logiciel dans le monde ne peut réparer le système de fichiers pour vous. Vous ne voulez pas que les factures de récupération des données coûteuses et vous ne voulez pas non plus de longues temps de baisse, alors gardez un œil sur ces SSD et les plateaux de rotation!