Mon système Linux a commencé à lancer des erreurs SMART dans le syslog. Je l'ai retrouvé et je crois que le problème est un seul bloc sur le disque. Comment puis-je obtenir facilement le disque pour réallouer ce bloc? Je voudrais savoir quel fichier a été détruit au cours du processus. (Je suis conscient que si un bloc échoue sur un disque, d'autres sont susceptibles de suivre; j'ai une bonne sauvegarde en cours et je veux juste essayer de faire fonctionner ce disque.)
La recherche sur le Web mène au HOWTO Bad Block , qui décrit un processus manuel sur un disque non monté. Cela semble compliqué et sujet aux erreurs. Existe-t-il un outil pour automatiser ce processus sous Linux? Ma seule autre option est l'outil de diagnostic du fabricant , mais je présume que cela encombrera le mauvais bloc sans aucun rapport sur ce qui a été détruit. Dans le pire des cas, il peut s'agir de métadonnées de système de fichiers.
Le disque en question est la partition système principale. Utilisation d'ext3fs et LVM. Voici le journal des erreurs de syslog et le bit correspondant de smartctl.
smartd[5226]: Device: /dev/hda, 1 Currently unreadable (pending) sectors
Error 1 occurred at disk power-on lifetime: 17449 hours (727 days + 1 hours)
... Error: UNC at LBA = 0x00d39eee = 13868782
Il y a un vidage smartctl complet sur pastebin .
Réponses:
Tu pourrais essayer
hdparm --write-sector <LBA> /dev/ice
.Je ne connais pas d'autre moyen de le faire - vous devez convertir manuellement le LBA en blocs de système de fichiers (comme vous l'avez déjà trouvé)
la source
J'avais l'habitude d'écrire le firmware du disque pour WD, et j'ai écrit une fois le firmware qui a réaffecté les mauvais blocs.
Premièrement, la plupart des blocs défectueux sont détectés lors des lectures et non des écritures. Les écritures sont effectuées à l'aveugle, ce qui signifie que les données sont écrites sans être vérifiées. Ainsi, lors d'une écriture si le média est mauvais, vous ne le saurez pas tant que l'hôte n'aura pas lu ce secteur. Il y a une petite partie du secteur (l'en-tête du secteur) qui est lue sur les écritures pour localiser le secteur correct, de sorte que s'il y a une erreur dans la lecture de l'en-tête du secteur, le lecteur réaffectera le secteur et l'écrira avec les données reçues à partir de la commande d'écriture. Mais la grande majorité des blocs défectueux sont détectés lors des lectures, et ce n'est pas parce qu'une écriture réussit dans un secteur que le média est bon ou que le secteur a été réaffecté.
Passons maintenant à la mauvaise réaffectation des blocs (également appelée réallocation). Oui, normalement, le lecteur tentera de réaffecter un secteur si l'erreur est suffisamment grave (c'est-à-dire que la défaillance ECC est suffisamment grave), mais le lecteur pourrait toujours récupérer les données après la correction ECC. Habituellement, cela se fait automatiquement. La seule exception est que l'hôte aurait pu auparavant dire au lecteur de ne pas effectuer de réallocations automatiques, mais cela est rarement fait.
Que se passe-t-il si le lecteur effectue une lecture et ne peut pas récupérer les données? Rien. L'erreur est signalée à l'hôte, mais aucune réaffectation n'est effectuée. Le problème est que le lecteur pourrait réaffecter le secteur, mais il n'a pas la moindre idée des données à écrire dans le secteur nouvellement réaffecté. S'il écrivait juste un tas de zéros, disons, puis que le secteur était relu, il retournerait tous les zéros sans aucune indication que les données n'étaient pas valides. C'est essentiellement la même chose que la corruption de données. Le lecteur ne peut pas compter sur l'hôte pour garder une trace des erreurs pour diverses raisons (par exemple, que se passe-t-il si le lecteur a été déplacé vers un nouvel hôte?), La meilleure solution consiste donc à ne rien faire lorsque les données le peuvent. t être récupéré.
Les lecteurs modernes, cependant, enregistreront l'emplacement du secteur défectueux lorsqu'il ne peut pas être réaffecté. Le nombre de secteurs défectueux en attente de réaffectation peut être trouvé dans les données SMART. Ce qui se passe, c'est que si une écriture est effectuée sur l'un des secteurs défectueux en attente de réaffectation, la réaffectation est effectuée car le lecteur dispose désormais de données valides pour y écrire après la réaffectation. Ainsi, lorsque les gens disent qu'écrire dans un mauvais secteur le réaffectera, ce n'est vraiment que la moitié de l'histoire. Le lecteur doit être lu en premier afin que le lecteur puisse découvrir tous les secteurs défectueux qui ne peuvent pas être réaffectés automatiquement. Ainsi, vous pouvez écrire un lecteur entier, et les données SMART diront qu'il n'y a pas de mauvais secteurs en attente de réaffectation, mais vous n'avez pas nécessairement effacé le lecteur de tous les secteurs défectueux. Donc, si vous voulez vraiment effacer tous les secteurs défectueux,
Il existe d'autres façons de gérer les blocs défectueux qui ne peuvent pas être réaffectés. Si le disque fait partie d'une configuration RAID redondante (c'est-à-dire autre chose que RAID 0), le logiciel RAID devrait récupérer automatiquement les données pour un secteur défectueux des autres disques et les écrire dans le secteur réaffecté. Les disques SCSI ont une commande explicite de réaffectation de blocs que l'hôte peut utiliser pour forcer la réaffectation même lorsqu'il n'y a pas de données valides à écrire dans le bloc, mais son utilisation est plutôt bas.
la source
hdparm -R
(en supposant un hdparm raisonnablement récent). Cela se traduit par une pénalité de performance d'écriture importante (environ la moitié du débit d'écriture et des IOPS d'écriture, car chaque écriture entraîne maintenant une lecture ultérieure), mais si votre matériel le prend en charge et que votre charge de travail est lourde en lecture, cela peut être une mesure préventive très réalisable .Je pense que tout ce que vous avez à faire est de:
en supposant que / dev / hda1 est la partition (non montée). Ou:
pour effectuer un test de lecture-écriture (plus lent) non destructif. Il devra encore être démonté. Je ne pense pas que cela vous fournira des détails sur les données perdues.
la source
Michael l'a correct et dans la plupart des cas, je dirais qu'il suffit de remplacer le lecteur, ils sont bon marché. Cependant, si vous ne disposez pas de sauvegardes et que vous ne pouvez pas obtenir de données importantes du lecteur, ou si vous voulez simplement essayer de réparer le lecteur, vous pouvez essayer d'utiliser la spinrite , au plus haut niveau.
J'avais un ordinateur portable qui a commencé à faire du bruit il y a quelques années. Badblocks a montré que le lecteur avait 118 ou plus de mauvais blocs visibles par l'utilisateur final. Comme j'avais déjà une copie de SpinRite, j'ai décidé de l'essayer avant d'acheter un nouveau lecteur. Après avoir exécuté la spinrite sur le lecteur, les badblocks ont montré 0 mauvais blocs et les bruits se sont arrêtés. Depuis, le lecteur fonctionne depuis plus de deux ans.
la source
Si vous avez des sauvegardes et que vous savez que c'est une erreur logique et non phisique, la meilleure façon de procéder serait de mettre à zéro le disque.
J'utiliserais MHDD, il est assez facile à utiliser et tant que vous vous souvenez de régler votre disque dur dans le BIOS sur une émulation IDE, puis de nouveau sur AHCI lorsque votre travail est terminé, vous n'avez rien à craindre.
Une fois que vous avez démarré sur MHDD, choisissez votre type de lecteur dans la commande ERASE et confirmez votre choix.
Procurez-vous du café, cela peut prendre un certain temps.
Une fois le lecteur remis à zéro, lancez l'analyse (f4) avec Remappage réglé sur ON (la valeur par défaut est désactivée). S'il y a toujours des problèmes avec le lecteur (cela signifierait qu'il y a un dommage physique sur le plateau et que le lecteur est sur une pente descendante), cette option les "réparera" en mappant la zone endommagée sur des parties saines du lecteur.
S'il n'y a aucune erreur UNC, alors félicitations, vous et votre lecteur pouvez toujours être amis pour les années à venir.
la source
Si le disque va mal, remplacez-le. Cela ne vaut pas le risque qu'il s'effondre davantage.
la source