Je suis en train de faire une nouvelle installation Linux et avant d'y aller, je pensais que c'était le bon moment pour vérifier la santé du disque dur car je peux écraser en toute sécurité toutes les données sur le disque dur si nécessaire.
J'ai d'abord essayé de vérifier avec smartmontools ... Mon disque dur Seagate signale un secteur en attente et un non corrigible hors ligne (probablement le même). Le nombre de secteurs réaffectés est nul.
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
...
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 1
Cependant, les autotests SMART (courts, longs, hors ligne, transport) ne détectent aucune erreur.
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 6631 -
# 2 Conveyance offline Completed without error 00% 6630 -
# 3 Extended offline Completed without error 00% 6622 -
# 4 Short offline Completed without error 00% 6600 -
# 5 Extended offline Completed without error 00% 6632 -
J'ai également essayé d'exécuter badblocks -wsv ( test de réussite complet en lecture-écriture à 4 motifs) sur le lecteur et aucun bloc défectueux n'a été trouvé. J'ai ensuite suivi le guide (dans la mesure du possible, car j'ai supprimé mon système de fichiers après avoir exécuté des badblocks) trouvé ici: http://smartmontools.sourceforge.net/badblockhowto.html
Là, il est dit que si j'écrase le secteur avec tous les zéros, le disque doit déplacer (réallouer) le secteur en attente. Le dernier modèle d'écriture des blocs défectueux est entièrement composé de zéros, ce qui aurait dû le faire. Cependant, rien n'a changé. J'ai toujours ce nombre de secteurs en attente 1.
J'ai ensuite essayé de déterminer quel secteur est problématique et dans la sortie SMART il y a un journal des erreurs:
Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 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
-- -- -- -- -- -- --
84 51 7c 1b 1a 02 ae Error: ABRT at LBA = 0x0e021a1b = 235018779
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
20 20 7f 18 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 17 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 01 00 00 a0 00 00:08:59.830 READ SECTOR(S)
91 20 3f 01 00 00 af 00 00:08:59.826 INITIALIZE DEVICE PARAMETERS [OBS-6]
10 20 01 01 00 00 a8 00 00:08:59.678 RECALIBRATE [OBS-4]
Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 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 b7 8c 02 e0 Error: UNC at LBA = 0x00028cb7 = 167095
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 20 1e 9e 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 80 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 62 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 44 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 26 8c 02 e0 00 00:02:20.690 READ DMA EXT
Donc, apparemment, le lecteur a eu deux erreurs.
84 51 7c 1b 1a 02 ae Error: ABRT at LBA = 0x0e021a1b = 235018779
et
40 51 00 b7 8c 02 e0 Error: UNC at LBA = 0x00028cb7 = 167095
J'ai donc supposé que ce sont les numéros de secteur: 167095 et 235018779. Et j'ai essayé d'écrire des zéros avec dd:
dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=167095
Maintenant que ça allait bien. Cependant quand j'ai essayé avec l'autre secteur:
dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=235018779
J'obtiens dd: '/ dev / sda': ne peut pas rechercher: Argument invalide . J'ai ensuite remarqué que mon disque dur n'avait que 234441658 secteurs. C'est donc hors de portée. Mais alors pourquoi SMART a-t-il signalé une erreur sur cette adresse?!
Quelqu'un peut-il m'aider à comprendre cela et me conseiller également sur la façon de procéder correctement si je le fais mal? Je soupçonne que j'ai peut-être tort d'utiliser la taille de bloc 512 avec dd. C'est la taille du secteur indiquée par SMART. peut-être que ces adresses LBA sont des octets et non des blocs. J'ai essayé de définir bs = 1 et d'écrire un seul octet sur ces adresses sur le disque dur. Cela a fonctionné (processus d'écriture jj)… Cependant, le nombre de secteurs en attente n'a toujours pas changé après cela. J'ai également appelé sync et smartctl -t offline / dev / sda pour essayer de «forcer» le lecteur à réaffecter le secteur. Rien...
Voici ma sortie smartctl --all / dev / sda complète :
smartctl 5.43 2012-06-30 r3573 [i686-linux-2.6.32-358.el6.i686] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.9
Device Model: ST3120811AS
Serial Number: 6PT1N4VZ
Firmware Version: 3.AAE
User Capacity: 120,034,123,776 bytes [120 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Mon Nov 18 12:03:00 2013 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 430) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 51) minutes.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 084 077 006 Pre-fail Always - 185600113
3 Spin_Up_Time 0x0003 095 095 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 098 098 020 Old_age Always - 2185
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 073 055 030 Pre-fail Always - 25890559714
9 Power_On_Hours 0x0032 093 093 000 Old_age Always - 6632
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 098 098 020 Old_age Always - 2229
187 Reported_Uncorrect 0x0032 099 099 000 Old_age Always - 1
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 071 056 045 Old_age Always - 29 (Min/Max 25/29)
194 Temperature_Celsius 0x0022 029 044 000 Old_age Always - 29 (0 13 0 0 0)
195 Hardware_ECC_Recovered 0x001a 052 046 000 Old_age Always - 194244099
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 1
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 Data_Address_Mark_Errs 0x0032 066 219 000 Old_age Always - 34
SMART Error Log Version: 1
ATA Error Count: 2
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 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
-- -- -- -- -- -- --
84 51 7c 1b 1a 02 ae Error: ABRT at LBA = 0x0e021a1b = 235018779
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
20 20 7f 18 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 17 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 01 00 00 a0 00 00:08:59.830 READ SECTOR(S)
91 20 3f 01 00 00 af 00 00:08:59.826 INITIALIZE DEVICE PARAMETERS [OBS-6]
10 20 01 01 00 00 a8 00 00:08:59.678 RECALIBRATE [OBS-4]
Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 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 b7 8c 02 e0 Error: UNC at LBA = 0x00028cb7 = 167095
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 20 1e 9e 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 80 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 62 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 44 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 26 8c 02 e0 00 00:02:20.690 READ DMA EXT
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 6631 -
# 2 Conveyance offline Completed without error 00% 6630 -
# 3 Extended offline Completed without error 00% 6622 -
# 4 Short offline Completed without error 00% 6600 -
# 5 Extended offline Completed without error 00% 6632 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
MISE À JOUR:
Comme suggéré dans la réponse de rob, j'ai essayé d'écraser le disque dur entier avec des zéros. Vérifié les valeurs SMART, puis a commencé à lire l'intégralité du disque dur. Vérifiez à nouveau les valeurs SMART. Le résultat est le suivant: les valeurs SMART concernant le nombre de secteurs en attente / réalloués ne changent pas, dans les deux cas, immédiatement après l'écriture puis après la lecture. Réaffecté 0. En attente 1.
la source
Réponses:
Un secteur est marqué comme en attente lorsqu'une lecture échoue. Le secteur en attente sera marqué réalloué si une écriture ultérieure échoue. Si l'écriture réussit, elle est supprimée des secteurs en attente actuels et supposée être correcte. (Le comportement exact pourrait différer légèrement et j'y reviendrai plus tard, mais c'est une approximation assez proche pour l'instant.)
Lorsque vous exécutez
badblocks -w
, chaque modèle est d'abord écrit, puis lu. Il est possible que l'écriture dans le secteur floconneux réussisse, mais la lecture suivante échoue, ce qui l'ajoute à nouveau à la liste des secteurs en attente. J'essayerais d'écrire des zéros sur le disque entier avecdd if=/dev/zero of=/dev/sda
, de vérifier l'état SMART, puis de lire le disque entier avecdd if=/dev/sda of=/dev/null
et de vérifier à nouveau l'état SMART.Mise à jour:
Sur la base de vos résultats précédents avec
badblocks -w
, je m'attendais à ce que le secteur en attente soit effacé après avoir écrit le disque entier. Mais puisque cela ne s'est pas produit, il est sûr de dire que ce disque ne se comporte pas comme prévu.Examinons la description du nombre actuel de secteurs en attente :
Passons maintenant en revue les points importants:
En d'autres termes, le secteur en attente aurait dû être remappé immédiatement, ou le lecteur aurait dû tenter d'écrire dans le secteur et l'une des deux choses aurait dû se produire:
J'ai fait allusion à cela plus tôt, mais la description de Wikipedia du secteur en attente actuel suggère que le nombre de secteurs en attente actuel devrait toujours être zéro après une écriture complète sur le disque . Étant donné que ce n'est pas le cas ici, nous pouvons conclure que (a) Wikipedia est incorrect (ou au moins incorrect pour votre lecteur), ou (b) le firmware du lecteur ne peut pas gérer correctement cet état d'erreur (que je considérerais comme un bug de firmware ).
Étant donné que le nombre de secteurs en attente est toujours inchangé après avoir lu l'intégralité du lecteur, nous pouvons affirmer que (a) le secteur n'a pas pu être lu avec succès ou (b) le secteur a été lu avec succès et marqué comme bon, mais une erreur s'est produite lors de la lecture d'un secteur différent. Mais comme le nombre de secteurs réalloués est toujours de 0 après la lecture, nous pouvons exclure (b) comme une possibilité et pouvons conclure que le secteur en attente était toujours illisible.
À ce stade, il serait utile de savoir si le lecteur a enregistré de nouvelles erreurs SMART. Ma prochaine suggestion allait être de vérifier si Seagate a une mise à jour du firmware pour votre disque, mais il semble que non.
Bien que je déconseille de continuer à utiliser ce lecteur, il semble que vous souhaitiez accepter les risques impliqués (à savoir, qu'il pourrait continuer à agir de manière erratique et / ou pourrait se dégrader ou échouer de manière catastrophique). Dans ce cas, vous pouvez essayer d'installer Linux, démarrer à partir d'un CD de secours, puis (avec les systèmes de fichiers non montés) utiliser e2fsck -l nom de fichier pour marquer manuellement le bloc approprié comme mauvais. (Assurez-vous simplement de conserver de bonnes sauvegardes!)
e2fsck -l nom de fichier
(Notez que
e2fsck -c
c'est préférablee2fsck -l filename
, et vous voudrez peut-être même l'essayer, mais sur la base de vos résultats jusqu'à présent, je doute fortement que e2fsck -c trouvera des blocs défectueux.)Bien sûr, vous devrez faire de l'arithmétique pour convertir le LBA du secteur défectueux (tel que fourni par SMART) en un numéro de bloc de système de fichiers. Le Bad Blocks HowTo fournit une formule pratique:
Le HowTo contient également un exemple complet utilisant cette formule. Une fois le système d'exploitation installé, vous pouvez confirmer si un fichier occupe le secteur fragile en utilisant debugfs (voir le HowTo pour des instructions détaillées).
Une autre option: partitionner autour du bloc défectueux suspect Lorsque vous installez votre système d'exploitation, vous pouvez également essayer de partitionner autour de l'erreur. Si j'ai bien fait mon calcul, l'erreur est d'environ 81,589 Mo. Vous pouvez donc soit faire / démarrer un peu petit et démarrer votre prochaine partition après le secteur 167095, soit ignorer complètement les 82 premiers Mo.
ABRT 235018779 Malheureusement, comme pour l'erreur ABRT sur le secteur 235018779, nous ne pouvons que spéculer, mais la spécification ATA8-ACS nous donne quelques indices.
Extrait de l'ébauche 8 de la pièce jointe AT - Jeu de commandes ATA / ATAPI (ATA8-ACS) :
En regardant les commandes menant à l'ABRT (plusieurs LECTURE SECTEUR (S) suivis d'un recalibrage et d'une réinitialisation) ...
L'abandon doit être réglé sur un si la commande n'est pas prise en charge. - Cela semble peu probable.
L'abandon peut être défini sur un si le périphérique n'est pas en mesure de terminer l'action demandée par la commande. - Peut-être que la liste P des secteurs réaffectés déplace suffisamment les adresses accessibles aux utilisateurs pour qu'une adresse accessible aux utilisateurs soit traduite dans le secteur 235018779, et que l'opération de lecture n'a pas pu se terminer (pour quelle raison, nous ne savons pas ... mais il n'y a pas eu d'erreur CRC, donc je ne pense pas que nous puissions conclure que le secteur 235018779 est mauvais).
L'abandon doit également être mis à un si une adresse en dehors de la plage d'adresses accessibles à l'utilisateur est demandée si IDNF n'est pas mis à un. - Pour moi, cela semble très probable, et je l'interpréterais probablement comme le résultat d'un bug logiciel (soit votre système d'exploitation, soit un programme que vous exécutiez). Dans ce cas, ce n'est pas un signe de perte imminente pour le disque dur.
Au cas où vous ne seriez pas encore fatigué d'exécuter les diagnostics ...
Vous pouvez réessayer
smartctl -t long /dev/sda
pour voir si cela produit plus d'erreurs dans le journal SMART, ou vous pouvez laisser celui-ci en tant que fichier X non résolu ;) et vérifier régulièrement le journal SMART pour voir si cela se reproduit. Dans tous les cas, si vous continuez à utiliser le lecteur sans le réallouer ou effacer le secteur en attente, vous prenez déjà un risque.Utiliser un système de fichiers à somme de contrôle
Pour un peu plus de sécurité, vous pouvez envisager d'utiliser un système de fichiers à somme de contrôle tel que ZFS ou btrfs pour vous protéger contre la corruption de données de bas niveau. Et n'oubliez pas d'effectuer des sauvegardes fréquentes si vous avez quelque chose qui ne peut pas être facilement reproduit.
la source
L'article Bad Sector Remapping donne l'algorithme utilisé.
Il existe deux listes de défauts sur le disque dur:
Par conséquent, le fait que votre secteur défectueux soit 577121 secteurs au-delà du dernier secteur normal ne signifie pas que vous avez 577121 secteurs défectueux, sauf s'il s'agit d'un défaut de liste P. Un défaut de la liste G peut être placé n'importe où, il est donc tout à fait possible que le micrologiciel l'ait alloué à la fin de l'espace du secteur de rechange.
De wikipedia Attributs ATA SMART connus :
Donc, en fait, les erreurs en attente sont bien pires que remappées, car l'erreur est suffisamment difficile pour empêcher la lecture du contenu d'origine afin de remapper. En effet, le contenu de ce secteur est probablement perdu à jamais.
L' outil de diagnostic de disque dur de très bas niveau MHDD explique les codes d'erreur comme suit :
Le secteur 167095 n'est donc pas corrigible et la lecture / écriture du 235018779 a été abandonnée.
Étant donné que l'écriture dans les deux secteurs n'a pas changé le statut de l'attente en remappé, il me semble que le secteur de remplacement est également mauvais. Ma théorie est que le secteur 167095 a été remappé au secteur 235018779, mais que malheureusement ce dernier est également mauvais, et que le firmware ne sait pas comment remapper les mauvais secteurs de rechange. Le résultat est un mauvais secteur non corrigible.
la source