web-dev-qa-db-fra.com

Comment corriger le nombre de secteurs en attente actuel

D'après les données SMART, il est indiqué que j'ai 3 comptes de secteurs en attente. (Courir Ubuntu Maverick.)

J'ai essayé de suivre n lien vers les forums sur la façon de résoudre ce problème , mais je ne suis pas en mesure d'identifier le nombre exact de secteurs à écrire dans ce secteur. Je lance l'autotest complet depuis l'utilitaire de disque, mais l'utilitaire de disque n'affiche pas le numéro de secteur exact dans Maverick, mais je ne suis pas sûr des versions antérieures. Est-ce que cela a changé dans Maverick?

Comment identifier le secteur et résoudre ce problème en attente? Cette astuce sur les forums est-elle sûre?

PS: J’ai d’autres problèmes avec "le nombre de secteurs réaffectés", de ce que j’ai cherché sur Google, ce n’est pas réparable. Y at-il un moyen de l’empêcher de se lever?

8
Vish

C'est en fait un long commentaire ;-)

IMO, le système de fichiers devrait automatiquement s'en occuper en temps voulu, surtout depuis que vous avez exécuté l'autotest. Comme vous pouvez le voir, le ré-mappage est effectué en cas d'échec de l'écriture. Ainsi, lors de la prochaine tentative d'écriture, il sera remappé.

Pourriez-vous énoncer le but plus large derrière cela? Mis à part la préoccupation concernant les blocs nécessitant un remappage, y a-t-il un autre ennui/problème que vous essayez de résoudre en procédant de la sorte?

L'astuce que vous avez citée dans le post ubuntuforums est sûre tant que vous savez exactement quel secteur a mal tourné et que vous avez une raison impérieuse de remédier à la situation. Généralement, le numéro de secteur n'est pas signalé, même par les programmes de vérification de fichiers, car il est extrait et traité en interne par le système de fichiers.

Mais si vous devez trouver les badblocks incriminés, vous pouvez utiliser les étapes ci-dessous:

  1. Notez le fichier de périphérique correspondant au système de fichiers. Cela prend la forme/dev/hdc ou/dev/sdb selon le type de disque. Ceci est affiché dans l'utilitaire de disque (System -> Administration -> Disk Utility). Si vous cliquez sur le nom du disque dans la liste affichée dans le panneau de gauche, le nom du périphérique peut être lu en regard de "Périphérique:" à droite.

  2. Démontez tous les systèmes de fichiers de ce disque. La commande suivante ne doit renvoyer aucune sortie.

    mount | grep -i <device-name>
    
  3. Lancer la commande suivante

    badblocks -sv -b 512 <device-name>
    

    Remarque Le -b 512 aligne la taille de bloc sur 512 afin que vous puissiez utiliser le nombre indiqué par cette commande comme entrée dans dd comme expliqué dans le forums post

Je ne recommanderais pas tout ce qui précède, car il est de toute façon pris en charge par les opérations de disque normales.

7
koushik

Il semble que l'option conv=noerror aide. Lorsqu'il y a une erreur d'entrée-sortie, il semble que cette option oblige dd à réessayer jusqu'à la fin de la lecture/écriture. J'ai créé un fichier source avec la commande suivante pour chacun des blocs défectueux trouvés par la commande badblocks (donnée par Kaushik ci-dessus), et le "Compte de secteurs en attente en cours" ("en attente d'être remappé") a été effacé de 5 à zéro.

Sudo dd bs=512 count=1 conv=noerror ibs=512 obs=512 if=/dev/sda of=/dev/sda iflag=direct,sync oflag=direct,sync skip=3186809 seek=3186809
1
Vis

Lorsque cela dépasse 0, cela indique généralement une défaillance imminente du lecteur. Je ne crois pas que cela puisse être corrigé sans remplacer le disque dur.

Voir http://kb.acronis.com/content/9133?nocache=1

1
Malcolm McCaffery

dans le pire des cas, vous pouvez toujours le faire: démontez le disque ou la matrice et arrêtez toute matrice.

dd if=/dev/sdX of=/dev/sdX iflag=direct,sync oflag=direct,sync

Cela prendra beaucoup de temps, mais cela devrait marcher.

Idéalement, vous pouvez interroger la liste des défauts de croissance du disque dur ("glist"), mais je n’ai pas trouvé comment le faire.

1
Jim Mills