
Ich sehe einige seltsame Fehler im Syslog. Ich verwende Debian 7.9. Hat das schon mal jemand gesehen und/oder weiß jemand, was los sein könnte? Ist meine Festplatte defekt? Ich habe neulich beim Booten ein fsck ausgeführt und es gab keine Meldungen, die darauf hinwiesen. Es handelt sich um eine externe, per USB verschlüsselte Festplatte (LUKS), die beim Booten entschlüsselt/gemountet wird. Auf dem Computer sind keine RAIDs oder ähnliches eingerichtet. Ich habe zwei andere Laufwerke ähnlich eingerichtet und ohne Probleme.
Ich habe mir die Smart-Daten des Laufwerks angesehen und dort steht, dass es den „Gesamtzustandstest“ bestanden hat. Gibt es sonst noch etwas, das ich überprüfen/tun kann, um mir ein Bild von seinem Zustand zu machen? Warum erhalte ich diese Fehler?
Sep 24 02:49:03 centaur kernel: [ 1429.377929] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 02:49:03 centaur kernel: [ 1429.377933] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 02:49:03 centaur kernel: [ 1429.377939] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 80 16 08 00 00 08 00
Sep 24 02:49:03 centaur kernel: [ 1429.377950] end_request: I/O error, dev sdb, sector 947918344
Sep 24 11:41:19 centaur kernel: [32752.064706] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 11:41:19 centaur kernel: [32752.064710] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 11:41:19 centaur kernel: [32752.064715] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 f6 08 00 00 08 00
Sep 24 11:41:19 centaur kernel: [32752.064727] end_request: I/O error, dev sdb, sector 943781384
Sep 24 13:00:15 centaur kernel: [37487.599035] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:00:15 centaur kernel: [37487.599040] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:00:15 centaur kernel: [37487.599045] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 e1 68 00 00 08 00
Sep 24 13:00:15 centaur kernel: [37487.599056] end_request: I/O error, dev sdb, sector 943776104
Sep 24 13:55:44 centaur kernel: [40816.471962] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:55:44 centaur kernel: [40816.471967] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:55:44 centaur kernel: [40816.471972] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 6b e0 00 00 08 00
Sep 24 13:55:44 centaur kernel: [40816.471984] end_request: I/O error, dev sdb, sector 943746016
Sep 24 14:26:37 centaur kernel: [42670.078961] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:26:37 centaur kernel: [42670.078965] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:26:37 centaur kernel: [42670.078971] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 00 25 20 00 00 08 00
Sep 24 14:26:37 centaur kernel: [42670.078983] end_request: I/O error, dev sdb, sector 939533600
Sep 24 14:57:41 centaur kernel: [44533.796981] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:57:41 centaur kernel: [44533.796987] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:57:41 centaur kernel: [44533.796992] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 76 08 00 00 08 00
Sep 24 14:57:41 centaur kernel: [44533.797003] end_request: I/O error, dev sdb, sector 943748616
Infos von smartctl:
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-4-amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda LP
Device Model: ST32000542AS
Serial Number: 6XW135W4
LU WWN Device Id: 5 000c50 01f01e7ee
Firmware Version: CC34
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Fri Sep 25 00:18:47 2015 MDT
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
See vendor-specific Attribute list for marginal Attributes.
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: ( 623) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
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: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x103f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
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 118 099 006 Pre-fail Always - 178542268
3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 085 085 020 Old_age Always - 15977
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 065 060 030 Pre-fail Always - 81661499813
9 Power_On_Hours 0x0032 045 045 000 Old_age Always - 48686
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 69
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 099 000 Old_age Always - 4295032833
189 High_Fly_Writes 0x003a 083 083 000 Old_age Always - 17
190 Airflow_Temperature_Cel 0x0022 052 040 045 Old_age Always In_the_past 48 (0 174 52 30)
194 Temperature_Celsius 0x0022 048 060 000 Old_age Always - 48 (0 14 0 0)
195 Hardware_ECC_Recovered 0x001a 042 020 000 Old_age Always - 178542268
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 208202834670158
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 1107416570
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 361340835
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
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.
Ich habe mir auch angesehenDiese Seiteund einer der Poster ändert seine sysctl.conf wie unten eingefügt, aber meine ist bereits so eingestellt …
/etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
Antwort1
Zuerst eine Sicherungskopie erstellen
Stellen Sie vor der Fehlerbehebung sicher, dass alle benötigten Daten auf der betroffenen Festplatte ( /dev/sdb
) gesichert sind.
Probleme beim Sichern?
Wenn Sie auf E/A-Fehler stoßen, die nicht das Ergebnis einer Beschädigung des Dateisystems sind (Sie haben angegeben, dass Ihre fsck
Ergebnisse sauber waren) und Ihre Daten tatsächlich wichtig für Sie sind, ist die sicherste Möglichkeit für Sie, das wiederherzustellen, was Sie können, die Verwendung vongddrescue
(oderdd_rescue
, wenn Sie das bevorzugen).
Hier ist ein Beispiel mit gddrescue
:
ddrescue -Svv /dev/sdb /somewhere/else/rescue.img /somewhere/else/ddrescue.log
… wo /somewhere/else
ist der Pfad zu einem Mount, der mehr freien Speicherplatz hat als die Größe von /dev/sdb
.
gddrescue
Die Protokolldatei unter /somewhere/else/ddrescue.log
kann Ihnen auch dabei helfen, die nicht lesbaren Bereiche Ihrer Festplatte zu ermitteln.
Sobald ein vollständiges Image des Laufwerks erstellt wurde, können Sie den Großteil der Daten wiederherstellen, die wiederherstellbar sein sollten, indem Sie andere Tools verwenden, wieTestDiskoder kpartx -av /somewhere/else/rescue.img
und cryptsetup luksOpen
, aber diese liegen außerhalb des Rahmens Ihrer Frage.
Beantwortung Ihrer Fragen
Hat das schon einmal jemand gesehen und/oder weiß, was passiert sein könnte?
Ich habe in meiner relativ kurzen Zeit, in der ich mit Festplatten arbeite, eine Vielzahl von Hardwareproblemen bei Festplatten gesehen. Obwohl ich kein Experte bin, ist es dennoch schwierig, genau zu bestimmen, welche Art von Fehler bei Ihrer spezifischen Festplatte auftreten kann.
Ist meine Festplatte defekt?
Ihr Laufwerk ist sich seines Ausfalls nicht bewusst.
Je mehr Sie versuchen, daraus zu lesen, desto mehr Probleme können entdeckt oder verursacht werden. Und je nachdem, welche Art von Schaden vorliegt, können Schreibvorgänge den Zustand manchmal verschlechtern.
Ich habe neulich beim Booten ein „fsck“ ausgeführt und es gab keine entsprechenden Meldungen.
Hardware-Lesefehler können den Inhalt von Dateien beeinträchtigen, jedoch nicht das Dateisystem selbst.
Gibt es sonst noch etwas, das ich überprüfen/tun kann, um mir ein Bild von seinem Zustand zu machen?
Ja, ich habe versucht, unten eine umfassende Anleitung für Sie zu schreiben.
Warum erhalte ich diese Fehler?
Es gibt viele Ursachen für E/A-Probleme auf der Festplatte.
Ein häufiges Problem ist, dass das Laufwerk während des Gebrauchs fallen gelassen oder zu heftig bewegt wird. Dies passiert bei externen Festplatten wie Ihrer häufig.
Ein weiterer Grund ist, dass Sie eine Seagate Barracuda haben, die tendenziell unzuverlässig ist:
(Klicken Sie auf das Bild oben, um einen Testbericht zur Festplattenzuverlässigkeit anzuzeigen.)
Es kann sich auch um zufällige Probleme handeln, die nur einen kleinen Teil des Laufwerks betreffen oder letztendlich zu einem Totalschaden führen.
Fehlerbehebung
Die Befehle in diesem Abschnitt sind nicht destruktiv.
Einzelne lesenBranchen
Ihr erster Hinweis auf ein Problem waren die E/A-Fehler, die der Kernel protokollierte. Versuchen Sie herauszufinden, ob diese Sektoren lesbar sind:
time hdparm --read-sector 947918344 /dev/sdb
… wobei 947918344
die im Kernel-Protokoll aufgezeichnete Sektornummer und /dev/sdb
das vermutlich problematische Laufwerk gemeint sind.
Die meisten Festplatten versuchen, den Sektor zu lesen, daher kann es einige Zeit dauern. Wenn sofort ein E/A-Fehler auftritt, bedeutet dies, dass das Laufwerk sicher wusste, dass der Sektor gesperrt ist, und nicht einmal versucht, ihn zu lesen. Wenn es einige Sekunden dauert, bis ein E/A-Fehler auftritt, hat das Laufwerk wahrscheinlich versucht, den Sektor zu lesen, und es ist ihm nicht gelungen. Hier ist ein Beispiel für einen E/A-Fehler, der sofort aufgetreten ist:
root@node51 [~]# time hdparm --read-sector 947918344 /dev/sdb
/dev/sdb:
reading sector 947918344: FAILED: Input/output error
real 0m0.038s
user 0m0.000s
sys 0m0.002s
Hier ist ein Beispiel für eine erfolgreiche Lesung:
root@node51 [~]# time hdparm --read-sector 947918344 /dev/sdb
/dev/sdb:
reading sector 947918344: succeeded
c193 76f6 7ae7 2dfa f121 b9ef 04da 2f82
4f6f 90af 6593 f215 d098 8857 2cfb d191
c6b1 245a 746c c1b8 bde9 f8f2 b3d2 ea68
3740 935d ce98 7fc6 bfef 41a5 f6b5 94e8
0833 6d39 3137 9b38 717d d310 f33d d508
d72d b504 77e5 7c8b 4496 6ac1 20f9 f49e
1224 8def df01 1163 d855 ae2b c6a8 eee5
3a22 04ae 012e bdd2 b5e9 94a4 3454 16ff
6000 81bc 356c a412 4b11 a875 588a 8394
37e5 310b f9eb afb6 4be1 0307 74f2 fce4
0f82 da8b 954f 4181 a544 ebff bfb5 4f1a
bcf9 e0be a912 fd78 e68d 9f76 424a 563f
0cc8 70ab 187e b7b1 b45d 732d 734d 0d7b
bb79 1e0c 8406 3fd9 5608 a6d4 9cd7 4167
ddb2 1972 7283 57bb 175e 1724 b3e4 9c07
0ba1 058d d8c9 b873 3e60 17e8 ab38 fad6
e9da b4e6 82f5 fb04 2316 b2ac 6cb3 05e1
7158 5a91 e21e 6333 f73e d839 e174 53bc
2f12 47dd 5dd2 d6d0 3d6d 7a6f a61c 7431
9e5f e3a2 55c5 1542 6efd 8b34 c40c 5382
a297 4627 2b64 1dc1 23bd 1442 f863 b1b1
767b c463 1936 ab96 b74c b899 7cae 632d
262d cef2 3088 2958 4d27 0f1b 9c44 ed30
f4ce 1d20 9a7e 2dca e99e 65bd 4686 2a8f
d3f4 f74a 35d3 e034 8473 9006 08d0 2372
0053 78fa d7ef 3f1a bcfd f702 376b c000
6517 3b41 5fb0 ff4c 87bb f79b 40ba 7bdf
c597 0246 663b 0ece 256d 26bd f806 e0f9
70b2 a1c8 ba4a 365d 69c6 e551 44d3 c840
7f9e 006d c1bc 07e5 c7df 5ca7 b37c 1de8
8d86 f118 e594 ede7 04b0 cc10 fac5 4070
a2a2 cd43 9ac6 fbd1 5790 eb60 fe65 f32d
real 0m0.014s
user 0m0.000s
sys 0m0.000s
Sie haben ein Problem, wenn vorhandene Sektoren einen Eingabe-/Ausgabefehler zurückgeben. Dies könnte auf eine Datenbeschädigung hinweisen.
Erweiterter SMART-Selbsttest
Sie können einenErweiterter SMART Offline-Selbsttestmit diesem Befehl:
smartctl -t long /dev/sdb
Erfahren Sie, wie Sie den Fortschritt eines Tests überprüfen könnenHier.
Sobald der Test abgeschlossen ist, können Sie seinen Status mit diesem Befehl überprüfen:
smartctl -l selftest /dev/sdb
Hier ist ein Beispiel von einer Festplatte, die ich „repariert“ habe (Erklärung folgt):
root@node51 [~]# smartctl -l selftest /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
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% 23316 -
# 2 Extended offline Completed: read failure 30% 22068 1475120744
# 3 Extended offline Completed without error 00% 19943 -
# 4 Short offline Completed without error 00% 19940 -
1 of 1 failed self-tests are outdated by newer successful extended offline self-test # 1
Früher 1475120744
konnte ein Sektor nicht gelesen werden und der Test schlug sofort fehl. Einige Zeit später war der Sektor jedoch repariert. Lesen Sie weiter, um zu erfahren, wie das sein kann.
„Reparieren“ Ihres Laufwerks
Beim Versuch, diese Befehle auszuführen, können Daten verloren gehen. Stellen Sie sicher, dass Sie über ausreichende Backups verfügen.
Fehlerhafte Sektoren neu zuordnen
Wenn wiederholte Versuche hdparm --read-sector
Ihr Laufwerk immer weiter verlangsamen und nach einiger Zeit einen E/A-Fehler zurückgeben, werden die Daten wahrscheinlich nie wiederhergestellt. Sie können der Festplatte sagen, dass sie den betroffenen Sektor einem freien Sektor zuordnen soll, wodurch der Sektor aus Ihrer Sicht vollständig gelöscht wird:
hdparm --yes-i-know-what-i-am-doing --write-sector 947918344 /dev/sdb
… wobei 947918344
die Sektornummer steht, die Sie überschreiben möchten.
Es ist möglich, dass die Ersatzsektoren ausgehen. Wenn das passiert, ist Ihr Laufwerk jedoch defekt und Sie sollten es ersetzen. (Beispiel)
Scan und Reparatur
Ein Laufwerk kann nur dann von fehlerhaften Sektoren erfahren, wenn es diese sieht. Sie können mit folgendem Befehl nach fehlerhaften Sektoren suchen badblocks
:
badblocks -b 512 -s /dev/sdb
Fehlgeschlagene Lesevorgänge werden wie zuvor im Kernelprotokoll protokolliert und von ausgegeben badblocks
. Sie können diese Informationen verwenden, um Sektoren mithilfe von neu zuzuordnen hdparm --write-sector
.
Sicheres Löschen von ATA
Wenn Sie nicht warten badblocks
oder etwas zum Neuzuordnen von Sektoren skripten möchten, können Sie alle fehlerhaften Sektoren löschen(sowie alle Ihre anderen Daten)auf einmal.
Notiz:Diese Anweisungen funktionieren möglicherweise nicht über eine USB-Schnittstelle.
hdparm --security-set-pass password /dev/sdb
time hdparm --security-erase password /dev/sdb
Neu zuordnen und löschen mitdd
Sie können Sektoren auch neu zuordnen, indem SieLöschen Ihres Laufwerksmit dd
:
dd conv=noerror if=/dev/zero of=/dev/sdb bs=2M
Neu zuordnen und löschen mit dd
LUKS und beibehalten
Alternativ, wenn Ihr LUKS-Gerät hier entschlüsselt ist /dev/mapper/your-luks-device
:
dd conv=noerror if=/dev/zero of=/dev/mapper/your-luks-device bs=2M