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:
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!