Zeigt ein fehlerhafter Sektor einen Datenträgerfehler an?


15

Mein Ubuntu 13.10-System hat in den letzten Tagen eine sehr schlechte Leistung gezeigt. In den Kernel-Protokollen sieht es so aus, als ob die <1 Jahr alte 3-TB-SATA-Festplatte Probleme mit einem bestimmten Sektor hat:

Nov  4 20:54:04 mediaserver kernel: [10893.039180] ata4.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov  4 20:54:04 mediaserver kernel: [10893.039187] ata4.01: BMDMA stat 0x65
Nov  4 20:54:04 mediaserver kernel: [10893.039193] ata4.01: failed command: READ DMA EXT
Nov  4 20:54:04 mediaserver kernel: [10893.039202] ata4.01: cmd 25/00:08:f8:3f:83/00:00:af:00:00/f0 tag 0 dma 4096 in
Nov  4 20:54:04 mediaserver kernel: [10893.039202]          res 51/40:00:f8:3f:83/40:00:af:00:00/10 Emask 0x9 (media error)
Nov  4 20:54:04 mediaserver kernel: [10893.039207] ata4.01: status: { DRDY ERR }
Nov  4 20:54:04 mediaserver kernel: [10893.039211] ata4.01: error: { UNC }
Nov  4 20:54:04 mediaserver kernel: [10893.148527] ata4.00: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180322] ata4.01: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180345] sd 3:0:1:0: [sdc] Unhandled sense code
Nov  4 20:54:04 mediaserver kernel: [10893.180349] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180353] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov  4 20:54:04 mediaserver kernel: [10893.180356] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180359] Sense Key : Medium Error [current] [descriptor]
Nov  4 20:54:04 mediaserver kernel: [10893.180371] Descriptor sense data with sense descriptors (in hex):
Nov  4 20:54:04 mediaserver kernel: [10893.180373]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180384]         af 83 3f f8
Nov  4 20:54:04 mediaserver kernel: [10893.180389] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180393] Add. Sense: Unrecovered read error - auto reallocate failed
Nov  4 20:54:04 mediaserver kernel: [10893.180396] sd 3:0:1:0: [sdc] CDB:
Nov  4 20:54:04 mediaserver kernel: [10893.180398] Read(16): 88 00 00 00 00 00 af 83 3f f8 00 00 00 08 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180412] end_request: I/O error, dev sdc, sector 2944614392
Nov  4 20:54:04 mediaserver kernel: [10893.180431] ata4: EH complete

Die kern.logDatei ist ungefähr 33MB groß, meistens voll mit dem oben genannten Fehler, und der Sektor scheint in den wiederholten Nachrichten nicht anders zu sein.

Ich führe zurzeit den folgenden Befehl auf der jetzt nicht bereitgestellten Festplatte aus, um zu testen und zu versuchen, etwaige Probleme auf der Festplatte zu beheben. Ich bin ungefähr 12 Stunden in und erwarte, dass es weitere 24/48 Stunden dauern wird, da die Festplatte so groß ist:

e2fsck -c -c -p -v /dev/sdc1

Meine Frage lautet: Fällt dieses Laufwerk aus, oder sehe ich hier ein häufiges Problem? Ich frage mich, ob es sinnvoll ist, fehlerhafte Sektoren zu reparieren oder zu ignorieren und ob ich die Festplatte im Rahmen der Garantie ersetzen soll, solange sie noch abgedeckt ist. Mein Wissen über den obigen Befehl ist etwas mangelhaft, daher bin ich skeptisch, ob er helfen wird oder nicht.

Schnelles Update!

e2fsck endete nach 2 Tagen mit vielen mehrfach beanspruchten Blöcken in Inode. Beim Versuch, das Dateisystem bereitzustellen, ist ein Fehler aufgetreten, der dazu geführt hat, dass das Dateisystem wieder schreibgeschützt ist:

Nov 11 08:29:05 mediaserver kernel: [211822.287758] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Nov 11 08:29:05 mediaserver kernel: [211822.301699] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: errors=remount-ro

Versuchen Sie den Sektor manuell zu lesen:

sudo dd count=1 if=/dev/sdc of=/dev/null skip=2944614392
dd: reading ‘/dev/sdc’: Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 5.73077 s, 0.0 kB/s

Ich versuche, ihm zu schreiben:

sudo dd count=1 if=/dev/zero of=/dev/sdc seek=2944614392
dd: writing to ‘/dev/sdc’: Input/output error
1+0 records in
0+0 records out
0 bytes (0 B) copied, 2.87869 s, 0.0 kB/s

In beiden Punkten Reallocated_Sector_Ctblieb der 0.

Das Laufwerk geht ziemlich oft in den Ruhezustand. Ich denke jetzt, dass dies ein Dateisystemproblem sein könnte? Ich bin nicht 100%.


4
Es ist fast / mit Sicherheit / ein Zeichen dafür, dass Ihre Backups in Ordnung sind und überprüfen Sie dann Ihre Hardware.
Shadur

Hmm. Sie sind ein bisschen veraltet, aber sie sind trotzdem da. Sehr frustrierend, da dieses Laufwerk ein anderes fehlerhaftes Laufwerk ersetzt.
MrNorm


2
... Wenn dieses Laufwerk ein fehlerhaftes Laufwerk ersetzt, besteht die Möglichkeit, dass es sich eher um den Controller als um das Laufwerk handelt.
Shadur

Antworten:


16

Fehlerhafte Sektoren sind immer ein Hinweis auf eine fehlerhafte Festplatte. In der Tat haben Sie in dem Moment, in dem Sie einen E / A-Fehler wie diesen sehen, wahrscheinlich bereits einige Daten verloren oder beschädigt. Erstellen Sie ein Backup, falls noch keines vorhanden ist, führen Sie einen Selbsttest durch smartctl -t long /dev/diskund überprüfen Sie die SMART-Daten smartctl -a /dev/disk. Holen Sie sich einen Ersatz, wenn Sie können.

Fehlerhafte Sektoren können nicht repariert, sondern nur durch Reservesektoren ersetzt werden, was die Festplattenleistung beeinträchtigt, da bei jedem Zugriff zusätzliche Suchvorgänge für die Reservesektoren erforderlich sind. Das Markieren solcher Sektoren als fehlerhaft auf der Dateisystemebene hilft, da dann niemals auf sie zugegriffen werden kann. Es ist jedoch schwierig zu bestimmen, welche Sektoren bereits von der Festplatte neu zugeordnet wurden, sodass das Dateisystem möglicherweise nicht weiß, welche Region betroffen ist.


Vielen Dank. Wirklich hilfreich zu wissen, da es für mich immer eine Grauzone war. Ich werde das Laufwerk auf Null stellen und es zurückschicken, da es innerhalb der Garantie liegt.
MrNorm

1
Nicht so. Schlechte Sektoren weisen nur auf einen hohen Verkehrsaufkommen in einem Sektor hin. In den meisten Fällen weist dies auf eine fehlerhafte Festplatte hin. Sie können Ihre Suchgeschwindigkeit so einstellen, dass langsamere Antworten als schlecht markiert werden. Es ist jedoch zu komplex, um es immer zu sagen.
RobotHumans

2
Lesefehler können auch bei einem Dateisystem auftreten, das aus irgendeinem Grund größer als die tatsächliche Festplatte ist.
Thorbjørn Ravn Andersen

@ Frostschutz was bedeutet das Get a replacement if you can.? Meinen Sie, ersetzen Sie die Festplatte?
Flugzeug

10

Damit das Laufwerk die Sektoren neu zuordnet, müssen Sie normalerweise etwas in sie schreiben. Allerdings dd( D isk D estroyer) funktioniert nicht immer, und ist sehr unsicher: wenn Sie die verwirren skipund seekOptionen, Sie leicht selbst in den Fuß von schießen kann skipping die Nersten Blöcke /dev/zerovon dem „Offset“ und das Schreiben eines Blocks über die Sektor 0 Ihrer Festplatte .

Wenn Sie wirklich wissen, dass der Sektor mit Nullen überschrieben werden soll, sollten Sie Folgendes verwenden hdparm:

% sudo hdparm --read-sector 833192656 /dev/sda
/dev/sda:
reading sector 833192656: FAILED: Input/output error

Ja, der Sektor 833192656 hat auch bei Smart-Tests versagt. Verwenden Sie zum Schreiben von Nullen --write-sector:

% sudo hdparm --write-sector 833192656 /dev/sda
/dev/sda:
Use of --write-sector is VERY DANGEROUS.
You are trying to deliberately overwrite a low-level sector on the media.
This is a BAD idea, and can easily result in total data loss.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

hdparmSchreiben Sie aus Sicherheitsgründen nichts, es sei denn, Sie übergeben den --yes-i-know-what-i-am-doingSchalter an hdparm:

% sudo hdparm --yes-i-know-what-i-am-doing --write-sector 833192656 /dev/sda
/dev/sda:
re-writing sector 833192656: succeeded
% sudo hdparm --read-sector 833192656 /dev/sda                              

/dev/sda:
reading sector 833192656: succeeded
0000 0000 0000 0000 0000 0000 0000 0000
[      ... more zeroes here...        ]
0000 0000 0000 0000 0000 0000 0000 0000

%

Obwohl dies eine alte Frage ist, frage ich mich wirklich, was Sie mit "dd funktioniert nicht immer" meinen. Schlagen Sie vor, dass es möglicherweise nicht möglich ist, Daten wie angewiesen zu schreiben? Es geht nicht darum, etwas besonders Störanfälliges zu tun, sondern nur Daten zu kopieren. Mit zwei Zeilen in fast jeder Programmiersprache können Sie das gleiche Ergebnis erzielen.
TooTea

7

Nein, fehlerhafte Sektoren sind nicht immer ein Hinweis auf ein fehlerhaftes Laufwerk. Wenn zum Zeitpunkt eines Stromausfalls ein Schreibvorgang ausgeführt wird, sind die Daten im Sektor manchmal beschädigt, was zu einem Fehler führt, wenn Sie versuchen, sie zu lesen. Der Versuch, neue Daten in den Sektor zu schreiben, funktioniert möglicherweise einwandfrei, da physikalisch nichts daran falsch ist.

badblocks -nAuf dem Laufwerk können Sie jeden Sektor lesen und neu schreiben. In Ihrem Fall können Sie ddauch Nullen schreiben, da Sie die Nummer des betreffenden Sektors bereits kennen . Sie können die SMART-Statistiken mit überprüfen smartctl -a. Sie sollten sehen, dass die ausstehende neu zugewiesene Anzahl angibt, wie viele Sektoren nicht gelesen werden konnten. Nach dem Versuch, den Sektor zu schreiben, sinkt diese Anzahl. Die neu zugewiesene Anzahl von Sektoren steigt möglicherweise an. In diesem Fall war sie physisch fehlerhaft und wurde dem Ersatzpool erneut zugeordnet. Dies kann ein Zeichen dafür sein, dass das Laufwerk auf dem Weg nach draußen ist. Wenn nicht, dann war es nur durcheinander und sollte jetzt in Ordnung sein.

Versuchen Sie zuerst, den Sektor zu lesen:

dd count=1 if=/dev/sda of=/dev/null skip=nnnn

Wenn das fehlschlägt, dann haben Sie die richtige Nummer, dann können Sie es mit nullen:

dd count=1 if=/dev/zero of=/dev/sda seek=nnnn

Stellen Sie sicher, dass Sie den Befehl genau eingegeben haben, bevor Sie die Eingabetaste drücken.


Es ist interessant, dass Sie das sagen, weil ich nach Ihren Befehlen einige interessante Informationen erhalten habe. Ich habe meine Frage oben geändert.
MrNorm

Unterstützt Ihr Laufwerk SMART aus irgendeinem Grund nicht oder warum haben Sie das noch nicht überprüft?
Frostschutz

1
@frostschutz "In beiden Punkten blieb der Reallocated_Sector_Ct bei 0." Scheint die OP hat SMART geprüft.
einen Lebenslauf vom

@MrNorm, bitte fügen Sie smartctl -aIhrer Frage die vollständige Ausgabe hinzu.
Psusi

2
Bitte verwenden Sie dies nicht (es funktioniert nicht immer), und wenn Sie überspringen und suchen verwirren, überschreiben Sie stattdessen Ihren MBR. Siehe meine Antwort
Antti Haapala
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.