Comment rendre mon disque non mappé en attente de secteurs illisibles

10

J'ai un disque avec des secteurs illisibles en attente, selon smartd. Quelle serait la façon la plus simple de les remapper sur le disque et d'empêcher Smartd de se plaindre?

Aujourd'hui, j'en reçois deux par heure:

10 sept. 23:15:35 hylton smartd [3353]: Périphérique: / dev / sdc, 1 secteurs actuellement illisibles (en attente)

Le système est un système x86 exécutant Ubuntu Linux 9.10 (jaunty). Le disque fait partie d'un groupe LVM. Voici comment smartctl identifie le disque:

Famille de modèles: Western Digital Caviar Second Generation Serial ATA family
Modèle d'appareil: WDC WD5000AAKS-00TMA0
Numéro de série: WD-WCAPW4207483
Version du micrologiciel: 12.01C01
Capacité utilisateur: 500,107,862,016 octets
dkagedal
la source
2
Ce problème s'est résolu lui-même; le disque a commencé à se plaindre plus fort, alors je l'ai remplacé.
dkagedal

Réponses:

15

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:

  1. Le secteur est relu avec succès
  2. Le secteur est réécrit

Jusque-là, le secteur reste en suspens. Vous avez donc deux façons correspondantes de gérer cela:

  1. Continuez à relire le secteur jusqu'à ce que vous réussissiez
  2. É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' notruncoption ddest 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 dddu 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 rsyncpour é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.

Neil Mayhew
la source
2
Si vous effectuez des sauvegardes (la synchronisation sur un disque interne ne compte pas;)), toutes vos données sont (relues) lues à certains intervalles de temps (en fonction de votre planification de sauvegarde complète / incrémentée). RAID ou rsync ne sont pas des substituts de sauvegarde. Et btw, je «crois» que vous avez trop confiance dans les fournisseurs de matériel-RAID. ;)
maxschlepzig
@maxschlepzig: Vous avez raison. J'ai également un régime de sauvegarde distinct. Cependant, mon expérience a été que la probabilité de perte de données due à une panne de disque l'emporte de loin sur tous les autres risques réunis (vol, incendie, etc.). Les disques durs modernes ont une si mauvaise fiabilité que je suis complètement paranoïaque à leur sujet de nos jours. Mon deuxième disque dur interne est donc un élément majeur de ma stratégie.
Neil Mayhew
J'ai lu et relu le contenu du disque en utilisant dd if=/dev/sda ...et les secteurs sont toujours en attente, une idée pourquoi?
dmansfield
@dmansfield, si vous n'avez rencontré aucune erreur, je ne sais pas pourquoi. J'ai remarqué que seule la valeur brute est exacte dans la sortie intelligente, donc si vous ne regardez que la valeur `` cuite '', il se peut que vous n'ayez aucun secteur en attente.
Neil Mayhew
1

Utilisez le logiciel Data Lifeguard Diagnostic pour DOS (CD de démarrage) disponible sur le site de Western Digital

AlexD
la source
1
  1. Sauvegardez vos données
  2. Supprimer cet appareil du groupe LVM
  3. dd if=/dev/zero of=/dev/sdc bs=4k- cela effacera toutes les données sur/dev/sdc
  4. Incluez-le à nouveau dans le groupe LVM
  5. Restaurez votre sauvegarde
maxschlepzig
la source
3
0. Avoir une sauvegarde. :-)
Steven D
Mais il s'agit d'une erreur de lecture en attente, ne devrait-il donc pas suffire de lire tous les secteurs?
dkagedal
1
@dkagedal: Non, le firmware du HD a déjà détecté qu'il ne peut pas lire ce secteur. Il n'a aucun moyen de le récupérer (seul, en plus peut-être de réessayer et de réessayer et d'avoir de la chance à un moment donné ... espérons que ce ne sont pas des données corrompues puis renvoyées) et configure ainsi cette erreur SMART. Mais si le micrologiciel détecte une écriture sur ce secteur spécifique, il mappe ce secteur (et ne l'utilise plus) et mappe à la place un secteur de rechange (de travail) à cette adresse.
maxschlepzig
@dkagedal: Parfois, seulement une ou deux lectures supplémentaires ramèneront le secteur. D'autres fois, rien ne le ramènera. En outre, le lecteur décide en interne s'il faut remapper le secteur ou le réutiliser, en fonction de la gravité de l'erreur d'origine, et s'il peut le relire avec succès après y avoir écrit. La seule façon de le savoir est de regarder le nombre réaffecté pour le lecteur. Je crois que les lecteurs utilisent une somme de contrôle assez étendue pour garantir que lorsque les données sont lues, elles ne sont pas corrompues, vous pouvez donc être raisonnablement sûr d'un secteur qui n'a pas été réaffecté.
Neil Mayhew,