
Nachdem bei Nouveau zum millionsten Mal alles mit Dual-Monitor eingefroren war, musste ich mein MacBook Pro (Mitte 2010, Fedora 24, SAMSUNG HN-M500MBB-Festplatte) ausschalten. Ich habe nichts IO-intensives gemacht, sondern nur Folien mit Evince angesehen.
Beim Neustart gibt es Fehlermeldungen über einen fehlerhaften Sektor aus und bleibt mit Fehlermeldungen wie diesen hängen:
blk_update_request: I/O error, dev sda, sector 969158669
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x3c000000 SErr 0x0 action 0x6 frozen
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/08:d0:08:30:c4/00:00:39:00:00/40 tag 26 ncq dma 4096 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
ata1.00: status: { DRDY }
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/28:d8:c8:2f:c4/00:00:39:00:00/40 tag 27 ncq dma 20480 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
ata1.00: status: { DRDY }
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/38:e0:88:2f:c4/00:00:39:00:00/40 tag 28 ncq dma 28672 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
ata1.00: status: { DRDY }
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/78:e8:08:2f:c4/00:00:39:00:00/40 tag 29 ncq dma 61440 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
ata1.00: status: { DRDY }
ata1: hard resetting link
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: configured for UDMA/133
ata1.00: device reported invalid CHS sector 0
mit gelegentlichen
sd 0:0:0:0: [sda] tag#19 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 0:0:0:0: [sda] tag#19 Sense Key : Medium Error [current]
sd 0:0:0:0: [sda] tag#19 Add. Sense: Unrecovered read error - auto reallocate failed
sd 0:0:0:0: [sda] tag#19 CDB: Read(10) 28 00 39 c4 30 08 00 00 08 00
blk_update_request: I/O error, dev sda, sector 969158669
Buffer I/O error on dev dm-2, logical block 1, async page read
Und
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1.00: irq_stat 0x40000001
ata1.00: failed command: READ SECTOR(S) EXT
ata1.00: cmd 24/00:01:0d:30:c4/00:00:39:00:00/e0 tag 6 pio 512 in
res 51/40:01:0d:30:c4/00:00:39:00:00/e0 Emask 0x9 (media error)
ata1.00: status: { DRDY ERR }
ata1.00: error: { UNC }
Hier ist die Smartctl-Ausgabe nach dem Versuch, mit hdparm einige Sektoren nach dem fehlerhaften zu lesen:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 100 100 051 Pre-fail Always - 469
2 Throughput_Performance 0x0026 252 252 000 Old_age Always - 0
3 Spin_Up_Time 0x0023 086 086 025 Pre-fail Always - 4463
4 Start_Stop_Count 0x0032 092 092 000 Old_age Always - 8099
5 Reallocated_Sector_Ct 0x0033 252 252 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 252 252 051 Old_age Always - 0
8 Seek_Time_Performance 0x0024 252 252 015 Old_age Offline - 0
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 19382
10 Spin_Retry_Count 0x0032 252 252 051 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 980
12 Power_Cycle_Count 0x0032 092 092 000 Old_age Always - 8214
181 Program_Fail_Cnt_Total 0x0022 097 097 000 Old_age Always - 66246139
191 G-Sense_Error_Rate 0x0022 100 100 000 Old_age Always - 3820
192 Power-Off_Retract_Count 0x0022 100 100 000 Old_age Always - 20
194 Temperature_Celsius 0x0002 064 051 000 Old_age Always - 32 (Min/Max 15/49)
195 Hardware_ECC_Recovered 0x003a 100 100 000 Old_age Always - 0
196 Reallocated_Event_Count 0x0032 252 252 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 15
198 Offline_Uncorrectable 0x0030 252 252 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0036 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x002a 100 100 000 Old_age Always - 255
223 Load_Retry_Count 0x0032 100 100 000 Old_age Always - 980
225 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 1583719
Beachten Sie die ausstehenden Sektoren ... Sowohl der kurze als auch der lange Selbsttest melden denselben fehlerhaften Sektor wie der Kernel.
Hdparm schafft es seltsamerweise, alles erfolgreich zu lesen, aber es (siehe die Bearbeitung unten) hängt irgendwie und sagt
reading sector 969158769: SG_IO: bad/missing sense data, sb[]: 70 00 03 00 00 00 00 0a 00 51 e0 01 11 04 00 00 a0 71 00 00 00 00 00 00 00 00 00 00 00 00 00 00
succeeded
Und es wird für etwa 200 Sektoren nach dem ersten fehlerhaften Sektor angezeigt. Ich habe ein paar mit hdparm --write-sector neu geschrieben und sie haben aufgehört, sich zu beschweren. Jetzt mache ich ein Backup und habe ein neues Laufwerk bestellt, aber in der Zwischenzeit würde ich gerne verstehen, was passiert ist, und vielleicht versuchen, das hier zu reparieren.
Beachten Sie, dass die Anzahl der neu zugewiesenen Sektoren nicht erhöht wird, nachdem ich einige fehlerhafte Sektoren neu geschrieben habe, was das Ganze noch seltsamer macht. Nach dem Neuschreiben lesen und schreiben sie einwandfrei, als wäre nichts passiert, aber die Firmware scheint sie nicht als fehlerhafte Sektoren neu zuzuordnen.
Irgendeine Idee? Soll ich das Laufwerk einfach wegwerfen?
PS: OSX funktioniert in einer anderen Partition immer noch ziemlich gut.
EDIT: Nachwirkungen
Nach einem Backup habe ich angefangen, ein bisschen mit der Festplatte zu experimentieren.
Nach dem ersten fehlerhaften Sektor gab es noch etwa 150 weitere mit denselben Problemen. Ich habe versucht, sie mit dd
und zu lesen dd_rescue
, aber es ist fehlgeschlagen.
hdparm --read-sector
hat funktioniert (mit dem oben genannten Fehler), hat aber inkonsistente Daten zurückgegeben (bei jedem Lesen anders). hat
hdparm --write-sector
sie anscheinend behoben, also habe ich einfach alle fehlerhaften Sektoren neu geschrieben.
Meldet jetzt smartctl
0 ausstehende Sektoren und 0 Neuzuweisungen, sowohl kurze als auch lange Selbsttests werden ohne Fehler abgeschlossen. Linux bootet einwandfrei, alle Fehler sind verschwunden.
Ich mache mir ein wenig Sorgen um die ~70 KB, die ich gelöscht habe. Mit LVM ist es etwas schwierig herauszufinden, was sie wirklich enthielten. Ich habe ein paar MBs in diesem Bereich abgelegt und es sind alles Nullen, also bin ich sicher, dass es entweder leerer Speicherplatz oder Swap ist.
Zum Feiern ist es noch zu früh, aber das Ergebnis sieht vielversprechend aus. Die Frage wird aktualisiert, wenn sich etwas Neues ergibt.