私の話は非常に単純に始まります。Arch Linuxを実行する軽量サーバーがあり、そのほとんどのデータを2つのSATAドライブで構成されるRAID-1に保存しています。約4ヶ月間問題なく動作していました。その後、突然、ドライブの1つで読み取りエラーが発生し始めました。常に、メッセージは次のようになりました。
Apr 18 00:20:15 hope kernel: [307085.582035] ata5.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Apr 18 00:20:15 hope kernel: [307085.582040] ata5.01: failed command: READ DMA EXT
Apr 18 00:20:15 hope kernel: [307085.582048] ata5.01: cmd 25/00:08:08:6a:34/00:00:27:00:00/f0 tag 0 dma 4096 in
Apr 18 00:20:15 hope kernel: [307085.582050] res 51/40:00:0c:6a:34/40:00:27:00:00/f0 Emask 0x9 (media error)
Apr 18 00:20:15 hope kernel: [307085.582053] ata5.01: status: { DRDY ERR }
Apr 18 00:20:15 hope kernel: [307085.582056] ata5.01: error: { UNC }
Apr 18 00:20:15 hope kernel: [307085.621301] ata5.00: configured for UDMA/133
Apr 18 00:20:15 hope kernel: [307085.640972] ata5.01: configured for UDMA/133
Apr 18 00:20:15 hope kernel: [307085.640986] sd 4:0:1:0: [sdd] Unhandled sense code
Apr 18 00:20:15 hope kernel: [307085.640989] sd 4:0:1:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Apr 18 00:20:15 hope kernel: [307085.640993] sd 4:0:1:0: [sdd] Sense Key : Medium Error [current] [descriptor]
Apr 18 00:20:15 hope kernel: [307085.640998] Descriptor sense data with sense descriptors (in hex):
Apr 18 00:20:15 hope kernel: [307085.641001] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Apr 18 00:20:15 hope kernel: [307085.641010] 27 34 6a 0c
Apr 18 00:20:15 hope kernel: [307085.641020] sd 4:0:1:0: [sdd] Add. Sense: Unrecovered read error - auto reallocate failed
Apr 18 00:20:15 hope kernel: [307085.641023] sd 4:0:1:0: [sdd] CDB: Read(10): 28 00 27 34 6a 08 00 00 08 00
Apr 18 00:20:15 hope kernel: [307085.641027] end_request: I/O error, dev sdd, sector 657746444
Apr 18 00:20:15 hope kernel: [307085.641035] ata5: EH complete
Apr 18 00:20:15 hope kernel: [307085.641672] md/raid1:md16: read error corrected (8 sectors at 657744392 on sdd1)
Apr 18 00:20:17 hope kernel: [307087.505082] md/raid1:md16: redirecting sector 657742336 to other mirror: sdd1
エラーごとに異なるセクター番号が表示され、ディスクにアクセスするユーザー(私)の数秒の遅延が発生しました。
smartctlの出力を確認したところ、次の出力が確認されました(無関係な部分はクリップされています)。
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 193 193 051 Pre-fail Always - 1606
5 Reallocated_Sector_Ct 0x0033 194 194 140 Pre-fail Always - 0
196 Reallocated_Event_Count 0x0032 162 162 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 51
ログを振り返ってみると、エラーは実際には数日間、主にバックアップ中に発生していましたが、非常に軽い使用中にも頻繁に発生していました(つまり、テキストファイルを保存しようとする5回おきに)。私のディスクは故障しており、RAID-1はそれを適切に処理しており、交換用ディスクを注文する時がきたと結論付けました。新しいディスクを注文しました。
驚いたことに、1日後、エラーが...停止しました。私はそれらを修正するために何もしませんでした。再起動したことも、ドライブをオフラインにしたこともありませんでした。しかし、エラーは停止しました。
その時点で、不良セクターがディスクのアイドル部分にあるかどうかを知りたくて、ディスクをRAIDから取り出し、RAIDに戻し、その後の完全な再同期を完了させました。9時間後、エラーなしで再同期が完了しました(2 TBのディスクには少し時間がかかります)。
また、smartctlの出力は次のように少し変更されています。
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 193 193 051 Pre-fail Always - 1606
5 Reallocated_Sector_Ct 0x0033 194 194 140 Pre-fail Always - 43
196 Reallocated_Event_Count 0x0032 162 162 000 Old_age Always - 38
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
ですから、私にとって奇妙なのは、もちろん「不良ディスクはいつ修復されるのですか」ということです。
ドライブの非常に小さな領域が自発的に不良になり、ドライブがセクター再割り当てコードが起動してディスクの不良領域にいくつかのスペアセクターをマッピングするまでに3日(!)かかった可能性があると思います...しかし、私は今までにそのようなことが起こるのを見たとは言えません。
他の誰かがこの種の行動を見たことがありますか?もしそうなら、その後のドライブ体験はどうでしたか?再び起こりましたか?ディスクは最終的に完全に故障しましたか?それとも、説明されないままになっている説明されていないグリッチだけでしたか?
私の場合、交換用ドライブを既に持っています(保証期間中に取得)ので、とにかくドライブを交換するだけです。しかし、私はこれをどういうわけか誤診したかどうか知りたいです。それが役立つ場合は、問題が発生したときからの完全な「smartctl -a」出力があります。ちょっと長いのでここには投稿しませんでした。