« IntelチップセットのRAID1が遅い | トップページ | PSUが壊れた・・・ »

2014年6月13日 (金)

Hitachi HDS721050CLA360が壊れかかっていた・・・

前回の記事に書いた通り、IRST (Intel Rapid Storage Technology) によるRAID1のReadパフォーマンスがおかしい。いろいろ調べたり試したりした結果、Windows 8.1の記憶域スペース (Storage Space) を使った双方向ミラーに移行することにした。

データをバックアップした後アレイを解除する。こうすると全く同じ内容の単体ディスクが2台できる。それぞれATTOベンチマークを試すと明らかにおかしいのが1台見つかった。

Atto_disk1_unmirrored

なんだオマエか、足を引っ張っていたのは…。マトモならこうならなくてはいけない。

Atto_disk2_unmirrored

しかし特にエラーも出さずにReadが遅くなるだけの故障パターンは初体験である。どうなっているのか少し詳しく調べてみた。

/*-----------  -----------*/

S.M.A.R.T.情報は異常なしだが…

CDI (Crystal Disk Info) で問題のディスクを調べると「正常」と言われる。

Cdi_disk1

しかしよく見ると「リードエラーレート」の現在値が下がっている。このディスクは88だが、正常な方のディスクだと100である。

Cdi_disk2

「生の値」も正常な方はゼロだが問題のあるディスクは大きな値になっている。ただし「生の値」は3つの16ビットの値がパックされているように見える。つまり48ビット値0x00000021002Fではなく{0x0, 0x21, 0x2F}ではないかと言うこと。ただし各値の意味は不明だ。

「リードエラーレート」は英語だと「Raw Read Error Rate」でエラー訂正を行う前の「生の値」である。私が理解している限りでは、エラー訂正の標準ロジックははエラーがあってもなくても一定の時間で「エラーなし」、「エラー訂正済み」、または「エラー訂正不可能」の結果を返したはずだ。この通りならリードエラーレートが高くても訂正可能の範囲ならReadパフォーマンスは変わらない。このディスクの場合そうなっていない可能性を否定できないが、あまりありそうに無いことである。

しかしこのディスクのS.M.A.R.T.の実装はどうなっているのだろう。何回か試すと「リードエラーレート」の「生の値」と「現在値」が増減するのだが、「最悪値」も「現在値」に連動して増減してしまう。ちっとも「最悪」ではない。

 

ディスクの違う場所を調べる

ATTOやCDM (Crystal Disk Mark) など、ファイルを読み書きする方式のベンチマークはディスクの限られた場所のパフォーマンスを測っている。例えばファイルサイズ1GBでも、500GBのディスクの0.2%に過ぎない。これだとディスク上の場所 (アドレス、つまりLBA) によってパフォーマンスが異なっていても知ることができない。

ディスク上の場所によりパフォーマンスがどう変わるのか調べるにはHD Tuneが便利である。

Hdtune_cefg

問題のあるディスクと正常なディスクの結果をアニメーションにした。ブラウザによってはクリックして原寸画像を表示しないとアニメーションにならないかもしれない。

問題のあるディスクは酷くパフォーマンスが落ちている場所とあまりそうではない場所が混在しているようだ。バックアップの処理スピードが周期的に増減していたのだが、それとつじつまが合う。

前回の記事でHDS721050CLA360のRAID1のReadパフォーマンスが極端に悪かったのは、もっぱら今回問題が見つかったディスクを読んでいたからだと考えられる。もう一つのアレイを調べた結果からIRSTによるRAID1のReadパフォーマンスが単体ディスクより劣る場合があるのは、間違いないと思うが、前回記事のHDS721050CLA360の例はディスクの問題により必要以上に悪くなっていた。

HD Tuneの画面に表示されたReadパフォーマンスの最悪値は2.3MB/sである。これがゼロになると完全に故障、と言うことだろう。CDIの結果によれば約6,600の使用時間だ。使用期間は2年程度だったと思う。

 

内部の状態

問題のあるディスクはいつ完全に故障してもおかしくないから、さすがにもう使えない。ディスクを廃棄する時、データの漏えいを防ぐため解体することにしているから、ついでに内部がどうなっているのか写真を撮った。

Hitachi_internal

磁性膜に映った背景に焦点を合わせている。きれいなものだ。予想した通り目視で分かる異常は無かった。磁性膜の特性の経年変化の問題かもしれない。訂正できないエラーがあればセクターが代替されるはずだがその様子はないから、Readパフォーマンスは酷く劣化するが問題なくエラー訂正できる程度の経年変化、そんなことがあるのだろうか。

 

類似事例

今回問題を起こしたディスクを使い始める前は、同じ用途にSeagate ST3500418ASを使っていた。使用中にアラームが出て調べたら故障直前だったので今回問題が見つかったディスクと交換し、今まで保管していた。保管している間、何回か状況確認のために動作させたことがある。

キッカケはIRSTが「S.M.A.R.T.イベント」を通知したことだ。その時調べてみたら、2台中1台で「代替処理済のセクター数」の現在値が閾値を割っていた。今調べると代替処理済セクター数が上限の0xFFF = 4095に到達している。またリードエラーレートとシークエラーレートも悪い値になっている。

Seagate500g_failed_cdi

「S.M.A.R.T.イベント」が通知された時、Readパフォーマンスの低下には気付かなかったが、もう一方のディスクでも結構な数セクター代替が発生していたので、2台まとめて交換した。

Seagate500g_degraded_cdi

コチラもリードエラーレートとシークエラーレートが悪い値になっている。

インターネットで調べると、リードエラーレートとシークエラーレートの悪化の後セクター代替が発生して故障に至る事例が多く見つかる。どうやらこのディスクの典型的故障パターンらしい。

Readパフォーマンスがどうなているのか気になるところである。HDS721050CLA360と同じようにHD Tuneの結果をアニメーションにした。

Hdtune_prev_cefg

外周15%程度にパフォーマンスの低下がみられるが、それ以外では目立った変化はない。内部を見てもHDS721050CLA360同様に特に異常は見当たらない。

ST3500418ASは500GBプラッターを採用した最初のモデルだったと思う。買ったのは発売開始間もない2009年だ。同時に買った2台とも同じような問題が出ているので、この時期の製品は磁性膜の耐久性に問題があった可能性が高い。

HDS721050CLA360も500GBプラッターを採用した最初のモデルだったはずだ。コチラは発売開始後約3年経過してから買っている。今のところ問題が出ているのは2台中1台なので、当該個体の問題、つまりハズレを引いてしまったと考えるべきだろう。

 

今回のまとめ

ハードディスクは消耗品だから遅かれ早かれ壊れるのは仕方がないが、あまりに早く壊れてしまうのは問題だ。しかし一番問題なのは何の前触れもなく壊れてしまう場合があること。単体ディスクだとデータを失ってしまうからミラーリングを行っている訳である。

今回記事にしているのは事前に故障を検知できた事例である。ST3500418ASの場合のように2台とも大同小異の状況になっている事が案外と多いので、ミラーリングを行っていても故障を事前に検知できれば慌てずに済む。

ST3500418ASはIRSTのS.M.A.R.T.機能でアラームが出た。これに対してHDS721050CLA360はReadパフォーマンスが酷く劣化してもアラームが出ず、問題が分かったのは偶然によるところが大きい。

問題の原因となった現象が異なっている場合も考えられ、もしそうなら表に現れる挙動が異なっても仕方がないだろう。しかし同じ現象に対して異なった挙動を示したのだとしたら、さらにそれが設計によるものだとしたら、セクター代替とS.M.A.R.T.の挙動はHDS721050CLA360よりもST3500418ASの方が好ましいと言える。

いずれにせよS.M.A.R.T.を継続的に監視する価値はある。すべての問題を事前に検知できる訳ではないが、何割かでも検知できるなら実施すべきだと思う。メーカーの決めた閾値以下にならないか監視するのがS.M.A.R.T.の標準的な方法だが、これだと故障の兆候を見逃す場合がある。その一方で、閾値に依らない監視の指標によく使われる代替処理済セクター数は一旦増加した後に長期間安定する場合もあるから、時々グラフで変化がないか調べるのが良い。

Cdi_graph

今回話題にしたタイプの問題は以下の項目を監視することで兆候がつかめると思う。

  • リードエラーレート
  • シークエラーレート
  • 代替処理済セクター数

最初の2つの項目の「生の値」はその意味が正確にわからない場合がある。また累積や最悪値のように一旦出た悪い値が引き継がれるのか、常に現在値に更新されるのかどうかマチマチなのようなので判断材料になりにくい。「現在値」と「最悪値」で判断する必要があるが、HDS721050CLA360のように正しい「最悪値」を示さない場合はベンチマークなどで負荷をかけながら調べる必要がある。多くの場合これら2つの項目はグラフで見るのは難しいと思う。

HD Tuneで時々Readパフォーマンスを調べるとS.M.A.R.T.を補うことができる可能性がある。しかしそれでも突然故障する場合はあるから、ミラーリングも必要である。

|

« IntelチップセットのRAID1が遅い | トップページ | PSUが壊れた・・・ »

パソコン・インターネット」カテゴリの記事

趣味」カテゴリの記事

IT」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Hitachi HDS721050CLA360が壊れかかっていた・・・:

« IntelチップセットのRAID1が遅い | トップページ | PSUが壊れた・・・ »