ハードシャットダウン後のハードドライブの障害またはコントローラーの不良


2

何百万回もデュアルモニターですべてを凍結した後、Macbook Proの電源を切る必要がありました(2010年半ば、fedora 24、SAMSUNG HN-M500MBBハードドライブ)。スライドをエビデンスで表示するだけで、IOに大きな負荷はかかりませんでした。

再起動時に、不良セクタに関するエラーを吐き出し、次のようなエラーでハングします。

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

たまに

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

そして

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 }

hdparmを使用して、不良セクタの後にいくつかのセクタを読み取ろうとした後のsmartctlの出力を次に示します。

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

保留中のセクターに注意してください...短い自己テストと長い自己テストの両方が、カーネルと同じ不良セクターを報告します。

Hdparmは奇妙なことにすべてを正常に読み取ることができますが、それは以下の編集を参照)一種のハングと言い

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

そして、最初の悪いセクターの後に200のセクターのようなもののためにそれを言います。私はhdparm --write-sectorでいくつかを書き直し、彼らは文句を言うのを止めました。現在、バックアップを行って新しいドライブを注文していますが、その間、何が起こったのかを理解し、おそらくこのドライブを修正したいと思います。

いくつかの悪いものを書き直した後、再割り当てされたセクターの数が増えていないことに注意してください。書き換え後は、何も起こらなかったように読み書きできますが、ファームウェアはそれらを不良セクタとして再マッピングしていないようです。

何か案が?ドライブを捨てるだけですか?

PS。別のパーティションのOSXはまだかなりうまく機能します。


編集:余波

バックアップの後、私はハードドライブで少し実験を始めました。

最初の不良セクターの後、同じ問題を抱えた約150人がいました。私はそれらを読んでみましたがdddd_rescue失敗しました。 hdparm --read-sector(上記のセンスエラーで)動作しましたが、一貫性のないデータを返しました(読み取りごとに異なる)。 hdparm --write-sectorそれらを修正するように思えたので、私はすべての失敗したセクターを書き直しました。

現在、smartctl0個の保留中のセクターと0個の再割り当てが報告され、短期および長期の自己テストはエラーなしで完了します。Linuxは正常に起動し、すべてのエラーが消えました。

私が殺した〜70kbについては少し心配していますが、LVMが実際に何を含んでいるかを理解するのは少し難しいです。その領域の周りに数MBをダンプしましたが、すべてゼロであるため、空き領域またはスワップのいずれかであると確信しています。

あまりにも早く祝福するにはまだですが、結果は有望に見え、何か新しいことが起こったら質問を更新します。


奇妙なことに、「不良セクタ」エラーではなく、タイムアウトエラーが発生します。したがって、おそらく、再割り当てマップが一貫していないため(または他の事柄が一貫していないため)、内部マイクロコントローラーが何らかの形で混乱していると思います。セクターを記述して再割り当てを強制すると、マップが変更されたときに、マップの一貫性が向上する場合があります。しかし、それはすべて盲目的な推測です。
-dirkt

1
興味深い実験は、バックアップを作成した後、直接書き込むか、HDDがサポートしている場合は「セキュリティ消去」でドライブを完全にゼロにし、それが修正されるかどうかを確認することです。
Dirkt

さて、バックアップができたので、実験を行います。最初に試したいのは、「不良」セクターを書き換えることです。hdparmがデータを読み取ることができるとすれば、ゼロではなく同じデータを書き換えることができるかどうか知っていますか?
フィリッポ

私が使用したいddか、dd_rescueその代わりのためにhdparm(私の知る限りはゼロだけを書き込むことができます)。
-Dirkt

私もそれらを使用します...残念ながら、hdparmは、これらのブロックから何でも読み取ることができる唯一の人です:
filippo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.