SMART indique un secteur en attente du disque dur de mon serveur. J'ai lu des articles de lot de lots recommandant d'utiliser HDParm pour forcer "facilement" le disque pour déplacer le mauvais secteur, mais je ne trouve pas la bonne façon de l'utiliser.
Quelques informations de mon "smartctl":
Error 95 occurred at disk power-on lifetime: 20184 hours (841 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 d7 55 dd 02 Error: UNC at LBA = 0x02dd55d7 = 48059863
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
c8 00 08 d6 55 dd e2 00 18d+05:13:42.421 READ DMA
27 00 00 00 00 00 e0 00 18d+05:13:42.392 READ NATIVE MAX ADDRESS EXT
ec 00 00 00 00 00 a0 02 18d+05:13:42.378 IDENTIFY DEVICE
ef 03 46 00 00 00 a0 02 18d+05:13:42.355 SET FEATURES [Set transfer mode]
27 00 00 00 00 00 e0 00 18d+05:13:42.327 READ NATIVE MAX ADDRESS EXT
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed: read failure 90% 20194 48059863
# 2 Short offline Completed without error 00% 15161 -
Avec ce "mauvais LBA" (4805986) à la main, comment utiliser HDParm? Quel type d'adresse Les paramètres "- paysad-secteur" et "-" Secteur "devraient avoir?
Si je délivrant la commande HDPARM-SecteurADead-Sector 48095863/Dev/SDA Il lit et vide les données. Si cette commande avait raison, je devrais vous attendre à une erreur d'E/S, non?
Au lieu de cela, il décharge des données:
$ ./hdparm --read-sector 48059863 /dev/sda
/dev/sda:
reading sector 48059863: succeeded
4b50 5d1b 7563 a932 618d 1f81 4514 2343
8a16 3342 5e36 2591 3b4e 762a 4dd7 037f
6a32 6996 816f 573f eee1 bc24 eed4 206e
(...)
Si, pour une raison quelconque, vous préférez essayer de supprimer ces secteurs défectueux et que vous ne vous souciez pas du contenu existant d'un lecteur, l'extrait de coque ci-dessous peut aider. J'ai testé cela sur une ancienne bague de barracuda Seagate qui dépasse bien sa garantie. Cela pourrait ne pas fonctionner avec d'autres modèles d'entraînement ou fabricants, mais il devrait vous mettre sur le bon chemin si vous DOIT Script quelque chose. IT Will Détruire tout contenu que vous avez sur le lecteur.
Vous préférerez peut-être simplement courir des badblocs, une Erase sécurisée HDPARM (SE) ( https://wiki.archlinux.org/index.php/securely_wipe_disk ) ou un autre outil réellement conçu pour cela. Ou même le fabricant fourni des outils tels que SoinTools (il existe une version de 32 bits Linux 'Enterprise', Google IT).
Assurez-vous que le lecteur en question est complètement inutilisé/démonté avant de le faire. En outre, je sais, tandis que la boucle, pas d'excuses. C'est un hack, vous pouvez le rendre meilleur ...
baddrive=/dev/sdb
badsect=1
while true; do
echo Testing from LBA $badsect
smartctl -t select,${badsect}-max ${baddrive} 2>&1 >> /dev/null
echo "Waiting for test to stop (each dot is 5 sec)"
while [ "$(smartctl -l selective ${baddrive} | awk '/^ *1/{print substr($4,1,9)}')" != "Completed" ]; do
echo -n .
sleep 5
done
echo
badsect=$(smartctl -l selective ${baddrive} | awk '/# 1 Selective offline Completed: read failure/ {print $10}')
[ $badsect = "-" ] && exit 0
echo Attempting to fix sector $badsect on $baddrive
hdparm --repair-sector ${badsect} --yes-i-know-what-i-am-doing $baddrive
echo Continuning test
done
L'un des avantages de l'utilisation de la méthode "Selftest" est la charge est gérée par le micrologiciel du variateur, de sorte que le PC qu'il est connecté n'est pas chargé comme si elle serait avec DD ou Badblocks.
Remarque: Je suis désolé, j'ai commis une erreur, la condition correcte tandis que c'est comme ça:
while [ "$(smartctl -l selective ${baddrive} | awk '/^ *1/{print $4}')" = "Self_test_in_progess" ]; do
Et la condition de sortie du script devient:
[ $badsect = "-" ] || [ "$badsect" = "" ] && exit 0
Je pense que cela peut avoir lu sans erreur car ce secteur n'est pas mauvais, mais d'autres outils échouent à la lecture du secteur en raison d'un autre comportement. (lu à l'avance qui atteint un secteur réellement illisible?)
J'ai trouvé des secteurs méchants et si je répare le seul illisible avec "HDParm-Sector", les autres secteurs "mauvais" ne sont plus illisibles avec des choses comme DD. Et de manière intéressante, lorsque vous regardez la sortie "DMESG", seuls les personnes maladables-illisibles sont jamais signalées.
par exemple. J'ai eu des secteurs 36589320 à 36589327 et 36589344 à 36589351 illisibles avec DD, mais seulement 36589326 et 36589345 étaient illisibles avec le secteur HDParM -Read. Ensuite, j'ai utilisé le secteur HDParm --Write sur ces 2, puis tous les 16 secteurs étaient à nouveau lisibles.
Voici une petite partie de la sortie DMESG:
[30152036.527940] end_request: I/O error, dev sda, sector 36589326
[30152077.363710] end_request: I/O error, dev sda, sector 36589345
Et les informations sur le disque:
# smartctl -i /dev/sda
...
=== START OF INFORMATION SECTION ===
Device Model: Toshiba MK2002TSKB
...
Firmware Version: MT2A
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
...
Et apparemment, ce micrologiciel de ce disque n'enregistre pas correctement les secteurs réaffectés, sinon ils n'étaient pas vraiment réaffectés, mais simplement corrompus (comme une erreur ECC irrécupérable, mais la surface fonctionne toujours, comme si elle était causée par une pourriture des bits plutôt que des électrons défectueux ou mauvais médias):
# smartctl -A /dev/sda | egrep "Reallocated|Pending|Uncorrectable"
5 Reallocated_Sector_Ct 0x0033 100 100 050 Pre-fail Always - 0
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0
# smartctl -l error /dev/sda
...
SMART Error Log Version: 1
No Errors Logged
Veuillez noter que j'ai dirigé un secteur -Nead et un secteur A -WRITE. Une lecture peut être nécessaire pour réaffecter correctement un secteur, pas seulement une écriture. Si vous ne lisez pas en premier, cela pourrait ne pas savoir que le secteur est mauvais.