Es wurde versucht, einen einzelnen Current_Pending_Sector in SMART-Daten zu entfernen / zu diagnostizieren

18

Ich bin gerade dabei, eine neue Linux-Installation durchzuführen, und bevor ich dies tat, dachte ich, dass es eine gute Zeit ist, den Zustand der Festplatte zu überprüfen, da ich bei Bedarf alle Daten auf der Festplatte sicher überschreiben kann.

Zuerst habe ich versucht, bei smartmontools nachzuschlagen ... Meine Seagate-Festplatte meldet einen ausstehenden und einen nicht korrigierbaren Offline-Sektor (vermutlich denselben). Die neu zugewiesene Sektoranzahl ist Null.

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

SMART-Selbsttests (kurz, lang, offline, Übermittlung) stellen jedoch keine Fehler fest.

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         -

Ich habe auch versucht, badblocks -wsv (vollständiger Lese-Schreib-Test mit 4 Mustern) auf dem Laufwerk auszuführen , und es wurden keine fehlerhaften Blöcke gefunden. Ich folgte dann der Anleitung (soweit möglich, da ich mein Dateisystem nach dem Ausführen von Badblocks gelöscht habe), die hier zu finden ist: http://smartmontools.sourceforge.net/badblockhowto.html

Dort heißt es, wenn ich den Sektor mit allen Nullen überschreibe, soll die Platte den anstehenden Sektor verschieben (neu zuordnen). Das letzte Schreibmuster von Badblocks besteht nur aus Nullen, also hätte es getan werden müssen. Es hat sich jedoch nichts geändert. Ich habe immer noch die Anzahl der ausstehenden Sektoren 1.
Ich habe dann versucht herauszufinden, welcher Sektor problematisch ist, und in der SMART-Ausgabe gibt es ein Fehlerprotokoll:

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

Das Laufwerk hatte also anscheinend zwei Fehler.

84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

und

40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

Also nahm ich an, dass dies die Sektornummern sind: 167095 und 235018779. Und ich habe versucht, mit dd Nullen zu schreiben:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=167095

Nun, da hat man sich gut geschlagen. Als ich es jedoch mit dem anderen Sektor versuchte:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=235018779

Ich erhalte dd: '/ dev / sda': kann nicht suchen: Ungültiges Argument . Ich habe dann festgestellt, dass meine Festplatte nur 234441658 Sektoren hat. Das ist also nicht in Reichweite. Aber warum hat SMART dann einen Fehler an dieser Adresse gemeldet ?!

Kann mir jemand helfen, das herauszufinden und mir auch raten, wie ich das richtig mache, wenn ich es falsch mache? Ich vermute, dass ich falsch liege, wenn ich Blockgröße 512 mit dd verwende. Dies ist die von SMART gemeldete Sektorgröße. Vielleicht sind diese LBA-Adressen Bytes und keine Blöcke. Ich habe versucht, bs = 1 zu setzen und nur ein Byte in diese Adressen auf der Festplatte zu schreiben. Das hat funktioniert (dd write process) ... Die Anzahl der ausstehenden Sektoren hat sich danach jedoch nicht geändert. Ich habe auch sync und smartctl -t offline / dev / sda aufgerufen , um das Laufwerk zu zwingen, den Sektor neu zuzuordnen. Nichts...

Hier ist meine vollständige smartctl --all / dev / sda- Ausgabe:

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.

AKTUALISIEREN:

Wie in der Antwort von rob vorgeschlagen, habe ich versucht, die gesamte Festplatte mit Nullen zu überschreiben. Überprüfte SMART-Werte und begann dann, die gesamte Festplatte zu lesen. Nochmals überprüfte SMART-Werte. Das Ergebnis ist: SMART-Werte in Bezug auf die Anzahl der ausstehenden / neu zugewiesenen Sektoren ändern sich in beiden Fällen nicht unmittelbar nach dem Schreiben und dann nach dem Lesen. Neu zugewiesen 0. Ausstehend 1.

Ivan Kovacevic
quelle
1
Ich vermute, Ihr Laufwerk hat 234441658 Sektoren, aber Sicherungssektoren, die anstelle von fehlerhaften Sektoren neu zugeordnet wurden, zählen nicht zu dieser Zahl.
Gronostaj
Hmm, so dass ein Fehler in Sektor 235018779 einen Fehler in Sicherungssektoren bedeuten würde ... Ist das möglich?
Ivan Kovacevic
1
Backup-Sektoren können auch beschädigt sein. Andernfalls würden wir "unsterbliche" Festplatten nur aus Sicherungssektoren erstellen.
Gronostaj
:)… Nun, meine Argumentation war, dass Sicherungssektoren nicht verwendet werden (und daher sicher sind). Ich nahm an, dass die Festplattenoberfläche nur dann beschädigt werden kann, wenn der oder die Festplattenköpfe aufgrund eines Stromausfalls oder Ähnlichem eine unzulässige Aktion ausführen.
Ivan Kovacevic
1
Angenommen, der Sektor 235018779 ist ein Sicherungssektor. Das bedeutet, dass ich mindestens 235018779 - 234441658 = 577121 Sicherungssektoren haben sollte. Das sind fast 282 MB in Sicherungssektoren. Scheint mir viel (zu viel). Oder ist es? Nur laut denken, vielleicht ist es kein Backup-Sektor, sondern eine Panne in der SMART-Diagnose?
Ivan Kovacevic

Antworten:

15

Ein Sektor wird als ausstehend markiert, wenn ein Lesevorgang fehlschlägt. Der ausstehende Sektor wird als neu zugewiesen markiert, wenn ein nachfolgender Schreibvorgang fehlschlägt. Wenn das Schreiben erfolgreich ist, wird es aus den aktuell ausstehenden Sektoren entfernt und als in Ordnung angenommen. (Das genaue Verhalten kann geringfügig abweichen und ich werde später darauf eingehen, aber dies ist vorerst eine hinreichende Annäherung.)

Beim Ausführen badblocks -wwird jedes Muster zuerst geschrieben und dann gelesen. Es ist möglich, dass das Schreiben in den flockigen Sektor erfolgreich ist, der nachfolgende Lesevorgang jedoch fehlschlägt, wodurch er erneut zur Liste der ausstehenden Sektoren hinzugefügt wird. Ich würde versuchen, Nullen auf die gesamte Festplatte mit zu schreiben dd if=/dev/zero of=/dev/sda, den SMART-Status zu überprüfen, dann die gesamte Festplatte mit zu lesen dd if=/dev/sda of=/dev/nullund den SMART-Status erneut zu überprüfen.

Aktualisieren:

Aufgrund Ihrer früheren Ergebnisse mit badblocks -whätte ich erwartet, dass der ausstehende Sektor nach dem Beschreiben der gesamten Festplatte gelöscht wird. Aber da dies nicht geschehen ist, kann man mit Sicherheit sagen, dass sich diese Festplatte nicht wie erwartet verhält.

Sehen wir uns die Beschreibung der Anzahl der derzeit ausstehenden Sektoren an :

Anzahl der "instabilen" Sektoren (wartet wegen nicht behebbarer Lesefehler auf eine erneute Zuordnung). Wenn ein instabiler Sektor anschließend erfolgreich gelesen wird, wird der Sektor neu zugeordnet und dieser Wert verringert. Lesefehler in einem Sektor werden den Sektor nicht sofort neu zuordnen (da der richtige Wert nicht gelesen werden kann und der neu zuzuordnende Wert daher nicht bekannt ist und möglicherweise auch später lesbar wird). Stattdessen merkt sich die Firmware des Laufwerks, dass der Sektor neu zugeordnet werden muss, und ordnet ihn beim nächsten Schreiben neu zu. [29] Einige Laufwerke ordnen solche Sektoren beim Schreiben jedoch nicht sofort neu zu. Stattdessen versucht das Laufwerk zuerst, in den problematischen Sektor zu schreiben. Wenn der Schreibvorgang erfolgreich ist, wird der Sektor als gut markiert (in diesem Fall wird die Anzahl der Neuzuweisungsereignisse (0xC4) nicht erhöht).

Lassen Sie uns nun die wichtigen Punkte überprüfen:

... die Firmware des Laufwerks merkt sich, dass der Sektor neu zugeordnet werden muss, und ordnet ihn beim nächsten Schreiben neu zu. [29] Einige Laufwerke ordnen solche Sektoren beim Schreiben jedoch nicht sofort neu zu. Stattdessen versucht das Laufwerk zuerst, in den problematischen Sektor zu schreiben. Wenn der Schreibvorgang erfolgreich ist, wird der Sektor als gut markiert.

Mit anderen Worten, der ausstehende Sektor sollte entweder sofort neu zugeordnet worden sein oder das Laufwerk hätte versuchen sollen, in den Sektor zu schreiben, und eines von zwei Dingen hätte passieren müssen:

  1. Der Schreibvorgang ist fehlgeschlagen. In diesem Fall hätte der ausstehende Sektor neu zugeordnet werden müssen.
  2. Das Schreiben war erfolgreich. In diesem Fall hätte der ausstehende Sektor gelöscht werden müssen ("als gut markiert").

Ich habe dies bereits angedeutet, aber die Beschreibung des aktuellen ausstehenden Sektors in Wikipedia legt nahe, dass die aktuelle Anzahl ausstehender Sektoren nach einem vollständigen Festplattenschreibvorgang immer Null sein sollte . Da dies hier nicht der Fall ist, können wir den Schluss ziehen, dass entweder (a) Wikipedia falsch (oder zumindest falsch für Ihr Laufwerk) ist oder (b) die Firmware des Laufwerks diesen Fehlerzustand nicht richtig handhaben kann (was ich als Firmware-Fehler bezeichnen würde ).

Wenn ein instabiler Sektor anschließend erfolgreich gelesen wird, wird der Sektor neu zugeordnet und dieser Wert verringert.

Da die aktuelle Anzahl der ausstehenden Sektoren nach dem Lesen des gesamten Laufwerks immer noch unverändert ist, können wir annehmen, dass entweder (a) der Sektor nicht erfolgreich gelesen werden konnte oder (b) der Sektor erfolgreich gelesen und als gut markiert wurde, aber beim Lesen von a ein Fehler aufgetreten ist anderen Sektor. Da die Anzahl der neu zugewiesenen Sektoren nach dem Lesen immer noch 0 ist, können wir (b) als Möglichkeit ausschließen und daraus schließen, dass der anstehende Sektor immer noch nicht lesbar war.

An dieser Stelle ist es hilfreich zu wissen, ob das Laufwerk neue SMART-Fehler protokolliert hat. Mein nächster Vorschlag war zu prüfen, ob Seagate ein Firmware-Update für Ihr Laufwerk hat, aber es sieht so aus, als ob dies nicht der Fall ist .

Obwohl ich davon abraten würde, dieses Laufwerk weiterhin zu verwenden, scheinen Sie möglicherweise bereit zu sein, die damit verbundenen Risiken in Kauf zu nehmen (d. H., Dass es weiterhin fehlerhaft funktioniert und / oder sich weiter verschlechtert oder katastrophal ausfällt). In diesem Fall können Sie versuchen, Linux zu installieren, von einer Rettungs-CD zu booten und dann (bei nicht gemounteten Dateisystemen) den Dateinamen e2fsck -l verwenden , um den entsprechenden Block manuell als fehlerhaft zu markieren. (Stellen Sie sicher, dass Sie gute Backups haben!)

e2fsck -l Dateiname

Fügen Sie der Liste der fehlerhaften Blöcke die Blocknummern hinzu, die in der durch Dateiname angegebenen Datei aufgeführt sind. Das Format dieser Datei ist das gleiche wie das vom Programm badblocks (8) erzeugte. Beachten Sie, dass die Blocknummern auf der Blockgröße des Dateisystems basieren. Daher muss badblocks (8) die Blockgröße des Dateisystems zugewiesen werden, um korrekte Ergebnisse zu erhalten. Infolgedessen ist es viel einfacher und sicherer, die Option -c für e2fsck zu verwenden, da hierdurch sichergestellt wird, dass die richtigen Parameter an das badblocks-Programm übergeben werden.

(Beachten Sie, dass dies e2fsck -cvorzuziehen e2fsck -l filenameist und Sie es vielleicht sogar ausprobieren möchten. Aufgrund Ihrer bisherigen Ergebnisse bezweifle ich jedoch, dass e2fsck -c fehlerhafte Blöcke findet.)

Natürlich müssen Sie einige Berechnungen durchführen, um die LBA des fehlerhaften Sektors (wie von SMART bereitgestellt) in eine Dateisystemblocknummer zu konvertieren. Das Bad Blocks HowTo bietet eine praktische Formel:

  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.

Das HowTo enthält auch ein vollständiges Beispiel mit dieser Formel. Nach der Installation des Betriebssystems können Sie mithilfe von debugfs überprüfen, ob eine Datei den schuppigen Sektor belegt (detaillierte Anweisungen finden Sie im HowTo).

Eine andere Option: Partitionierung um den verdächtigen fehlerhaften Block Wenn Sie Ihr Betriebssystem installieren, können Sie auch versuchen, den Fehler zu partitionieren. Wenn ich richtig gerechnet habe, liegt der Fehler bei etwa 81,589 MB. Sie können also entweder eine kleine Partition erstellen / booten und die nächste Partition nach Sektor 167095 starten oder die ersten 82 MB oder so vollständig überspringen.

ABRT 235018779 Leider können wir bezüglich des ABRT-Fehlers im Sektor 235018779 nur spekulieren, aber die ATA8-ACS-Spezifikation gibt uns einige Hinweise.

Aus Working Draft AT Anhang 8 - ATA / ATAPI-Befehlssatz (ATA8-ACS) :

6.2.1 Abbruch (ABRT) Fehlerbit 2. Der Abbruch wird auf eins gesetzt, wenn der Befehl nicht unterstützt wird. Abbruch kann auf eins gesetzt werden, wenn das Gerät die vom Befehl angeforderte Aktion nicht ausführen kann. Abbruch wird auch auf Eins gesetzt, wenn eine Adresse außerhalb des Bereichs der vom Benutzer erreichbaren Adressen angefordert wird, wenn IDNF nicht auf Eins gesetzt ist.

Ein Blick auf die Befehle, die zum ABRT führen (mehrere READ SECTOR (S), gefolgt von Neukalibrierung und Neuinitialisierung) ...

Abbruch wird auf eins gesetzt, wenn der Befehl nicht unterstützt wird. - Das scheint unwahrscheinlich.

Abbruch kann auf eins gesetzt werden, wenn das Gerät die vom Befehl angeforderte Aktion nicht ausführen kann. - Möglicherweise verschiebt die P-Liste der neu zugewiesenen Sektoren die benutzerzugänglichen Adressen so weit, dass eine benutzerzugängliche Adresse in den Sektor 235018779 übersetzt wurde und der Lesevorgang nicht abgeschlossen werden konnte (aus welchem ​​Grund wir nicht wissen ...). Da jedoch kein CRC-Fehler aufgetreten ist, können wir meines Erachtens nicht den Schluss ziehen, dass Sektor 235018779 schlecht ist.

Abbruch wird auch auf Eins gesetzt, wenn eine Adresse außerhalb des Bereichs der vom Benutzer erreichbaren Adressen angefordert wird, wenn IDNF nicht auf Eins gesetzt ist. - Dies scheint mir am wahrscheinlichsten zu sein, und ich würde es wahrscheinlich als Ergebnis eines Software-Fehlers interpretieren (entweder Ihres Betriebssystems oder eines Programms, das Sie ausgeführt haben). In diesem Fall ist dies kein Anzeichen für einen bevorstehenden Untergang der Festplatte.

Nur für den Fall, dass Sie die laufende Diagnose noch nicht satt haben ...

Sie können smartctl -t long /dev/sdaerneut versuchen , festzustellen, ob das SMART-Protokoll weitere Fehler enthält, oder Sie können dieses Protokoll als ungelöste X-Datei belassen ;) und das SMART-Protokoll regelmäßig überprüfen, um festzustellen, ob es erneut auftritt. In jedem Fall gehen Sie bereits ein Risiko ein, wenn Sie das Laufwerk weiterhin verwenden, ohne dass es den ausstehenden Sektor neu zuweist oder löscht.

Verwenden Sie ein Prüfsummen-Dateisystem

Für ein wenig mehr Sicherheit sollten Sie ein Prüfsummen-Dateisystem wie ZFS oder btrfs verwenden, um sich vor Datenbeschädigungen auf niedriger Ebene zu schützen. Und vergessen Sie nicht, häufige Backups durchzuführen, wenn Sie etwas haben, das nicht einfach reproduziert werden kann.

rauben
quelle
Gute Idee, das werde ich gleich versuchen.
Ivan Kovacevic
1
Was ist mit dem Versuch, dies nur mit diesem schlechten Sektor 167095? :)
Woche
Naah das ist zu langweilig: D. Ich versuche es zuerst mit dem verdächtigen Sektor, auf jeden Fall ein kluger Rat. Wenn das nichts bringt, lasse ich es auf der gesamten Festplatte laufen, nur für den Fall…
Ivan Kovacevic,
@week, das sollte den Trick machen, aber es scheint, dass er Probleme hat, sich auf den fehlerhaften Sektor zu konzentrieren. Deshalb habe ich vorgeschlagen, nur die gesamte Fahrt zu machen.
Rob
1
Wenn nach dem Schreiben auf das gesamte Laufwerk noch ein Sektor aussteht, funktioniert die Neuzuordnung des fehlerhaften Sektors nicht ordnungsgemäß und Sie sollten das Laufwerk austauschen (oder, wenn Sie ein Glücksspieler sind, setzen Sie die Verwendung fort, in dem Wissen, dass es sich möglicherweise unregelmäßig verhält). .
Rob
5

Der Artikel Bad Sector Remapping gibt den verwendeten Algorithmus an.

Auf der Festplatte befinden sich zwei Fehlerlisten:

  • P-Liste sind Fehler, die während der Herstellung festgestellt wurden und auch als Primärfehler bezeichnet werden. Sie folgen der Reihe nach den normalen Sektoren. Ein fehlerhafter Sektor zeigt mit einer Schichtnummer auf seine Ersetzung (zuerst +1, dann +2 usw.).
  • G-List sind Defekte, die bei normaler Verwendung des Laufwerks auftreten und als gewachsene Defekte bezeichnet werden. Ihre Zuordnung unterliegt keinen Einschränkungen, und sie müssen den Fehlern in der P-Liste nicht nacheinander folgen. Ein fehlerhafter Sektor zeigt mit einer einfachen Sektornummer auf seine Ersetzung.

Daher bedeutet die Tatsache, dass Ihr fehlerhafter Sektor 577121 Sektoren über dem normalen letzten Sektor liegt, nicht, dass Sie 577121 fehlerhafte Sektoren haben, es sei denn, es handelt sich um einen P-List-Fehler. Ein G-List-Defekt kann überall platziert werden, sodass es durchaus möglich ist, dass die Firmware ihn am Ende des freien Sektorraums zuordnet.

Aus Wikipedia bekannte ATA SMART-Attribute :

Neu zugewiesene Sektoren zählen

Anzahl der neu zugewiesenen Sektoren. Wenn die Festplatte einen Lese- / Schreib- / Überprüfungsfehler findet, markiert sie diesen Sektor als "neu zugewiesen" und überträgt Daten in einen speziellen reservierten Bereich (Reservebereich). Dieser Vorgang wird auch als Neuzuordnung bezeichnet, und neu zugewiesene Sektoren werden als "Neuzuordnungen" bezeichnet. Der Rohwert gibt normalerweise die Anzahl der fehlerhaften Sektoren an, die gefunden und neu zugeordnet wurden.

Anzahl der aktuell ausstehenden Sektoren

Anzahl der "instabilen" Sektoren (wartet wegen nicht behebbarer Lesefehler auf eine erneute Zuordnung). Wenn ein instabiler Sektor anschließend erfolgreich gelesen wird, wird der Sektor neu zugeordnet und dieser Wert verringert. Lesefehler in einem Sektor werden den Sektor nicht sofort neu zuordnen (da der richtige Wert nicht gelesen werden kann und der neu zuzuordnende Wert daher nicht bekannt ist und möglicherweise auch später lesbar wird). Stattdessen merkt sich die Laufwerksfirmware, dass der Sektor neu zugeordnet werden muss, und ordnet ihn beim nächsten Schreiben neu zu.

In der Tat sind ausstehende Fehler viel schlimmer als neu zugeordnete, da der Fehler schwer genug ist, um das Lesen des Originalinhalts zum erneuten Zuordnen zu verhindern. In der Tat sind die Inhalte dieses Sektors wahrscheinlich für immer verloren.

Das Dokument MHDD Very low level Festplatten-Diagnosetool erläutert die Fehlercodes wie folgt:

UNC : data is uncorrectable
ABRT : command was aborted

Sektor 167095 ist daher nicht korrigierbar und das Lesen / Schreiben von 235018779 wurde abgebrochen.

Da sich durch das Schreiben in beide Sektoren der Status nicht von ausstehend auf neu zugeordnet geändert hat, erscheint mir der Ersatzsektor ebenfalls schlecht. Meine Theorie ist, dass Sektor 167095 dem Sektor 235018779 neu zugeordnet wurde, aber dass letzterer leider auch schlecht ist und dass die Firmware nicht weiß, wie fehlerhafte Ersatzsektoren neu zugeordnet werden sollen. Das Ergebnis ist ein nicht korrigierbarer fehlerhafter Sektor.

Harrymc
quelle
Schöner Artikel, ich habe definitiv was neues gelernt! Dies erklärt jedoch immer noch nicht, warum der in SMART-Protokollen gemeldete fehlerhafte Sektor sogar im Bereich des Ersatzsektors und nicht im normal nutzbaren Bereich gemeldet wird und warum der ausstehende Sektorzähler immer noch 1 ist und Sektorzähler 0 neu zugewiesen wird. Wenn alles so funktioniert hat, wie es sollte Diese beiden Zähler sollten ihre Werte invertiert haben.
Ivan Kovacevic
1
Siehe meine Bearbeitung oben.
Harrymc
Vielen Dank! Tolle Infos! Jetzt habe ich eine Frage: Da 167095 nicht neu zugeordnet wurde, ist es ratsam, diese Festplatte zu verwenden? Hat die Festplatte diesen Sektor nur als schlecht markiert und wird ihn in Zukunft nicht mehr verwenden. Grundsätzlich muss ich entscheiden: Kann ich fortfahren und Linux installieren, oder sollte ich diese Festplatte wegwerfen, eine neue kaufen und Linux installieren, oder kann ich etwas tun (einen Befehl ausführen), um diesen Sektor manuell als fehlerhaft zu markieren und Linux (my) zu installieren? Lieblingsoption).
Ivan Kovacevic
1
Eine große Festplatte mit nur zwei fehlerhaften Sektoren verdient es nicht, überflüssig zu werden. Als Badblocks erfolgreich waren, wurde dieser Sektor hoffentlich als schlecht eingestuft. Ich würde versuchen, Linux zu installieren, aber ein vollständiges Format erstellen, wenn Ihre Distribution dies während der Installation kann. Aber wenn dies für ein wichtiges Produktionssystem ist, würde ich die Festplatte für alle Fälle wechseln.
Harrymc