Essayer de supprimer / diagnostiquer un seul Current_Pending_Sector dans les données SMART

18

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.

Ivan Kovacevic
la source
1
Je suppose que votre lecteur a 234441658 secteurs, mais les secteurs de sauvegarde remappés à la place des secteurs défectueux ne comptent pas dans ce nombre.
gronostaj
Hmm, donc cette erreur sur le secteur 235018779 signifierait une erreur dans les secteurs de sauvegarde… Est-ce possible?
Ivan Kovacevic
1
Eh bien, les secteurs de sauvegarde peuvent également être corrompus. Sinon, nous fabriquerions des disques durs "immortels" uniquement à partir des secteurs de sauvegarde.
gronostaj
:)… Eh bien, mon raisonnement était que les secteurs de sauvegarde ne sont pas utilisés (et donc sûrs). J'ai supposé que la surface du disque dur ne peut être corrompue que si la ou les têtes de disque font une action incorrecte, en raison d'une panne de courant ou de quelque chose.
Ivan Kovacevic
1
En supposant que le secteur 235018779 est un secteur de sauvegarde. Cela signifie que je devrais avoir au moins 235018779 - 234441658 = 577121 secteurs de sauvegarde. Cela représente près de 282 Mo dans les secteurs de sauvegarde. Cela me semble beaucoup (trop). Ou est-ce? En pensant à voix haute, ce n'est peut-être pas un secteur de sauvegarde mais un problème dans les diagnostics SMART?
Ivan Kovacevic

Réponses:

15

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 avec dd if=/dev/zero of=/dev/sda, de vérifier l'état SMART, puis de lire le disque entier avec dd if=/dev/sda of=/dev/nullet 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 :

Nombre de secteurs "instables" (en attente de remappage, en raison d'erreurs de lecture irrécupérables). Si un secteur instable est ensuite lu avec succès, le secteur est remappé et cette valeur est diminuée. Les erreurs de lecture sur un secteur ne remapperont pas le secteur immédiatement (car la valeur correcte ne peut pas être lue et donc la valeur à remapper n'est pas connue, et elle pourrait aussi devenir lisible plus tard); à la place, le micrologiciel du lecteur se souvient que le secteur doit être remappé et le remappera la prochaine fois qu'il sera écrit. [29] Cependant, certains lecteurs ne remapperont pas immédiatement ces secteurs lors de l'écriture; au lieu de cela, le lecteur tentera d'abord d'écrire dans le secteur problématique et si l'opération d'écriture réussit, le secteur sera marqué comme bon (dans ce cas, le "Nombre d'événements de réallocation" (0xC4) ne sera pas augmenté).

Passons maintenant en revue les points importants:

... le micrologiciel du lecteur se souvient que le secteur doit être remappé et le remappera la prochaine fois qu'il sera écrit. [29] Cependant, certains lecteurs ne remapperont pas immédiatement ces secteurs lors de l'écriture; à la place, le lecteur essaiera d'abord d'écrire dans le secteur problématique et si l'opération d'écriture réussit, le secteur sera marqué comme bon.

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:

  1. L'écriture a échoué, auquel cas le secteur en attente aurait dû être remappé.
  2. L'écriture a réussi, auquel cas le secteur en attente aurait dû être effacé ("marqué bon").

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 ).

Si un secteur instable est ensuite lu avec succès, le secteur est remappé et cette valeur est diminuée.

É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

Ajoutez les numéros de bloc répertoriés dans le fichier spécifié par nom de fichier à la liste des blocs défectueux. Le format de ce fichier est le même que celui généré par le programme badblocks (8). Notez que les numéros de bloc sont basés sur la taille de bloc du système de fichiers. Par conséquent, badblocks (8) doit recevoir la taille de bloc du système de fichiers afin d'obtenir des résultats corrects. Par conséquent, il est beaucoup plus simple et plus sûr d'utiliser l'option -c pour e2fsck, car cela garantira que les paramètres corrects sont transmis au programme badblocks.

(Notez que e2fsck -cc'est préférable e2fsck -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:

  b = (int)((L-S)*512/B)
where:
b = File System block number
B = File system block size in bytes
L = LBA of bad sector
S = Starting sector of partition as shown by fdisk -lu
and (int) denotes the integer part.

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) :

6.2.1 Abandon (ABRT) Bit d'erreur 2. L'abandon doit être mis à un si la commande n'est pas prise en charge. 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. 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.

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/sdapour 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.

Rob
la source
Bonne idée, je vais essayer ça tout de suite.
Ivan Kovacevic
1
Que diriez-vous d'essayer cela avec ce mauvais secteur 167095? :)
semaine
Naah c'est trop ennuyeux: D. J'essaierai d'abord avec le secteur suspect, certainement un conseil intelligent, si cela ne fait rien, je le laisserai fonctionner sur tout le disque au cas où ...
Ivan Kovacevic
@week qui devrait faire l'affaire, mais il semble qu'il ait du mal à se concentrer sur le mauvais secteur, c'est pourquoi j'ai suggéré de faire tout le trajet.
voler
1
S'il reste un secteur en attente après avoir écrit sur l'intégralité du lecteur, le remappage du secteur défectueux ne fonctionne pas correctement et vous devez remplacer le lecteur (ou, si vous êtes un homme de jeu, continuez à l'utiliser en sachant qu'il peut se comporter de manière irrégulière) .
voler
5

L'article Bad Sector Remapping donne l'algorithme utilisé.

Il existe deux listes de défauts sur le disque dur:

  • Les P-list sont des défauts trouvés pendant la fabrication et sont également connus sous le nom de défauts primaires. Ils suivent séquentiellement les secteurs normaux. Un secteur défectueux indiquera son remplacement à l'aide d'un numéro de décalage (le premier est +1, puis +2, etc.).
  • Les G-List sont des défauts qui se développent lors d'une utilisation normale du lecteur et sont connus sous le nom de défauts de croissance. Il n'y a aucune contrainte sur leur allocation et ils n'ont pas besoin de suivre séquentiellement les défauts de la liste P. Un mauvais secteur indiquera son remplacement à l'aide d'un simple numéro de secteur.

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 :

Nombre de secteurs réaffectés

Nombre de secteurs réaffectés. Lorsque le disque dur trouve une erreur de lecture / écriture / vérification, il marque ce secteur comme "réalloué" et transfère les données vers une zone réservée spéciale (zone de réserve). Ce processus est également appelé remappage et les secteurs réaffectés sont appelés «remappages». La valeur brute représente normalement un décompte des secteurs défectueux qui ont été trouvés et remappés.

Nombre actuel de secteurs en attente

Nombre de secteurs "instables" (en attente de remappage, en raison d'erreurs de lecture irrécupérables). Si un secteur instable est ensuite lu avec succès, le secteur est remappé et cette valeur est diminuée. Les erreurs de lecture sur un secteur ne remapperont pas le secteur immédiatement (car la valeur correcte ne peut pas être lue et donc la valeur à remapper n'est pas connue, et elle pourrait aussi devenir lisible plus tard); au lieu de cela, le micrologiciel du lecteur se souvient que le secteur doit être remappé et le remappera la prochaine fois qu'il sera écrit.

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 :

UNC : data is uncorrectable
ABRT : command was aborted

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.

harrymc
la source
Bel article, j'ai définitivement appris quelque chose de nouveau! Cependant, cela n'explique toujours pas pourquoi le mauvais secteur signalé dans les journaux SMART est même signalé dans la zone du secteur de rechange et non dans l'espace utilisable normal et pourquoi le compteur de secteur en attente est toujours 1 et le compteur de secteur réaffecté 0. Si tout fonctionnait comme il se doit ces deux compteurs auraient dû inverser leurs valeurs.
Ivan Kovacevic
1
Voir ma modification ci-dessus.
harrymc
Merci! Grande info! Maintenant, j'ai une question: comme 167095 n'a pas été remappé, est-il conseillé d'utiliser ce disque dur? Le disque dur a-t-il simplement marqué ce secteur comme mauvais et évitera de l'utiliser à l'avenir. Fondamentalement, je dois décider: puis-je continuer et installer Linux, ou devrais-je jeter ce disque dur en acheter un nouveau et installer Linux, ou puis-je faire quelque chose (exécuter une commande) pour marquer manuellement ce secteur comme mauvais et installer Linux (mon option préférée).
Ivan Kovacevic
1
Un gros disque avec seulement deux secteurs défectueux ne mérite pas d'être jonché. Au fur et à mesure que les mauvais blocs réussissaient, nous espérons que cela marquait ce secteur comme mauvais. J'essaierais d'y installer Linux, mais je ferais un format complet si votre distribution peut le faire pendant l'installation. Mais si c'est pour un système de production important, je changerais le disque, juste au cas où.
harrymc