Un secteur illisible en attente est un secteur qui a renvoyé une erreur de lecture et que le lecteur a marqué pour le remappage à la première occasion possible. Cependant, il ne peut pas effectuer le remappage jusqu'à ce que l'une des deux choses se produise:
- Le secteur est relu avec succès
- Le secteur est réécrit
Jusque-là, le secteur reste en suspens. Vous avez donc deux façons correspondantes de gérer cela:
- Continuez à relire le secteur jusqu'à ce que vous réussissiez
- Écraser ce secteur avec de nouvelles données
De toute évidence, (1) n'est pas destructif, vous devriez donc probablement l'essayer d'abord, bien que gardez à l'esprit que si le lecteur commence à tomber en panne de manière sérieuse, la lecture continue d'une mauvaise zone risque de le faire échouer beaucoup plus rapidement . Si vous avez beaucoup de secteurs en attente et d'autres erreurs, et que vous vous souciez des données sur le disque, je vous recommande de le mettre hors service et d'utiliser l'excellent outil ddrescue pour récupérer autant de données que possible. Jetez ensuite le lecteur.
Si le secteur en question contient des données dont vous ne vous souciez pas ou que vous pouvez restaurer à partir d'une sauvegarde, le remplacement est probablement la solution la plus rapide et la plus simple. Vous pouvez ensuite afficher les comptes réaffectés et en attente pour le lecteur pour vous assurer que le secteur a été pris en charge.
Comment savoir à quoi correspond le secteur dans le système de fichiers? J'ai trouvé un excellent article sur le site Web de smartmontools , ici , bien qu'il soit assez technique et soit spécifique aux systèmes de fichiers ext2 / 3/4 et reiser.
Une approche plus simple, que j'ai utilisée sur l'un de mes propres disques (Mac), consiste find / -xdev -type f -print0 | xargs -0 ...
à lire tous les fichiers du système. Prenez note du nombre en attente avant d'exécuter cela. Si le secteur se trouve dans un fichier, vous obtiendrez un message d'erreur de l'outil que vous avez utilisé pour lire les fichiers (par exemple md5sum) vous indiquant le chemin d'accès. Vous pouvez ensuite concentrer votre attention sur la relecture de ce fichier uniquement jusqu'à ce qu'il soit lu avec succès. Souvent, cela résoudra le problème, s'il s'agit d'un fichier peu utilisé qui devait être relu plusieurs fois. Si l'erreur disparaît ou si vous ne rencontrez aucune erreur lors de la lecture de tous les fichiers, vérifiez le nombre en attente pour voir s'il a diminué. Si c'est le cas, le problème a été résolu en lisant.
Si le fichier ne peut pas être lu avec succès après plusieurs essais (par exemple 20), vous devez remplacer le fichier, ou le bloc dans le fichier, pour permettre au lecteur de réaffecter le secteur. Vous pouvez utiliser ddrescue sur le fichier (plutôt que sur la partition) pour écraser un seul secteur, en copiant dans un fichier temporaire, puis en recopiant à nouveau. Notez que la simple suppression du fichier à ce stade est une mauvaise idée, car le secteur défectueux ira dans la liste gratuite où il sera plus difficile à trouver. Remplacer complètement c'est mauvais aussi, car encore une fois les secteurs entreront dans la liste gratuite. Vous devez réécrire les blocs existants. L' notrunc
option dd
est une façon de procéder.
Si vous ne rencontrez aucune erreur et que le nombre en attente n'a pas diminué, alors le secteur doit se trouver dans la liste libre ou dans une partie de l'infrastructure du système de fichiers (par exemple une table inode). Vous pouvez essayer de remplir tout l'espace libre avec cat /dev/zero >tempfile
, puis vérifier le nombre en attente. S'il diminue, le problème figurait dans la liste gratuite et a maintenant disparu.
Si le secteur est dans l'infrastructure, vous avez un problème plus grave et vous rencontrerez probablement des erreurs en parcourant l'arborescence de répertoires. Dans cette situation, je pense que la seule solution raisonnable est de reformater le disque, en utilisant éventuellement ddrescue pour récupérer les données si nécessaire.
Gardez un œil très attentif sur le lecteur. La réallocation du secteur est un très bon canari dans la mine de charbon , ce qui peut vous donner un avertissement précoce d'un entraînement qui échoue. En prenant des mesures précoces, vous pouvez empêcher un glissement de terrain catastrophique et très douloureux par la suite. Je ne suggère pas que quelques réallocations de secteur indiquent que vous devez jeter le lecteur. Tous les lecteurs modernes doivent effectuer une réallocation. Cependant, si le lecteur n'est pas très ancien (<1 an) ou si vous obtenez de nouvelles réaffectations fréquentes (> 1 / mois), je vous recommande de le remplacer dès que possible.
Je n'ai pas de preuves empiriques pour le prouver, mais mon expérience suggère que les problèmes de disque peuvent être réduits en lisant le disque entier de temps en temps, soit par un dd
du disque brut ou en lisant chaque fichier à l'aide find
. Presque tous les problèmes de disque que j'ai rencontrés au cours des dernières années sont apparus en premier dans des fichiers rarement utilisés ou sur des machines peu utilisées. Cela a également un sens sur le plan heuristique, car si un secteur est relu fréquemment, le lecteur a la possibilité de le réaffecter lorsqu'il détecte pour la première fois un problème mineur avec ce secteur plutôt que d'attendre que le secteur soit complètement illisible. Le lecteur est incapable de faire quoi que ce soit avec un secteur à moins que l'hôte n'y accède d'une manière ou d'une autre, soit en le lisant ou en l'écrivant, soit en effectuant l'un des tests SMART.
Je voudrais expérimenter l'idée d'une tâche cron nocturne ou hebdomadaire qui lit tout le disque. Actuellement, j'utilise un «RAID de pauvre» dans lequel j'ai un deuxième disque dur dans la machine et j'y sauvegarde le disque principal tous les soirs. À certains égards, c'est en fait mieux que la mise en miroir RAID, car si je fais une erreur et que je supprime un fichier par erreur, je peux obtenir la version d'hier immédiatement à partir du disque de sauvegarde. D'un autre côté, je crois qu'un contrôleur RAID matériel fait beaucoup de bon travail en arrière-plan pour surveiller, signaler et résoudre les problèmes de disque à mesure qu'ils apparaissent. Mon script de sauvegarde actuel utilise rsync
pour éviter de copier des données qui n'ont pas changé, mais étant donné la nécessité de relire tous les secteurs, il serait peut-être préférable de tout copier, ou d'avoir un script distinct qui lit le disque brut entier chaque semaine.