2008年09月17日

低温環境でのHDDの動作

はてなブックマークに登録

あるデータセンターに導入したサーバーの初期セットアップ時に今までに経験したことのないHDDトラブルに見舞われました。今回はそのトラブルの原因究明と解決に至るまでのお話です。

HDDの故障?

7月、新データセンターでの初期セットアップ時にHDDの書き込み速度がやたら遅いディスクがあるという話が出てきました。 話を聞くと1台だけでなく複数台に発生しているとの事です。 その時の測定値は次のような感じでした。

実際の測定値

# dd if=/dev/zero of=/mnt/p0/test bs=1M count=2048
(RAIDカードの0番ポートにあるディスク)
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 43.8163 seconds, 49.0 MB/s
# dd if=/dev/zero of=/mnt/p1/test bs=1M count=2048
(RAIDカードの1番ポートにあるディスク)
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 514.409 seconds, 4.2 MB/s
# dd if=/dev/zero of=/mnt/p2/test bs=1M count=2048
(RAIDカードの2番ポートにあるディスク)
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 515.813 seconds, 4.2 MB/s
# dd if=/dev/zero of=/mnt/p3/test bs=1M count=2048
(RAIDカードの3番ポートにあるディスク)
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 43.2759 seconds, 49.6 MB/s

今回のサーバは4台のHDDをもっておりそれぞれRAIDカードにつながっています。 そして、調査を行った結果、これらのサーバのうち数台で上記測定値のようにHDD4台のうち2台ないしは1台の書き込み速度が極端に遅いことがわかりました。 何度測定を行ってみても書き込みが遅いことは変わらなかったため、最終的にHDDの故障である可能性が高いと判断し、購入元(いつもお世話になっている協力会社さん)に調査をお願いしました。

データ保護機能 RAW(Read After Write)

1ヵ月後、協力会社さんから衝撃的な連絡が入ります。 なんと「データセンターの温度が低すぎる」というのです。 温度が高すぎるとHDDの故障しやすいなどはよく聞く話ですが、逆に温度が低すぎてHDDに影響がでるというのは初耳です。

協力会社さんの話によると、今回導入した Seagate製の Barracuda ES(SATA高耐久)シリーズには、RAW(Read After Write)という機能があり、その機能が働いて遅くなっているとの事でした。 このRAWというのは、ある温度を閾値として(58℃以上 または 18℃以下)有効になる機能です。 この機能が有効になると、データを書き込む際はブロックにデータを書き込みした直後にそのブロックを読み出し正確に書き込みができているかチェックするようになります。 この読み込みで、もしエラーが確認された場合は再度同じ手順で書き込みを行います。

つまり、低温時でのデータ書き込みには、通常の温度では発生しない「読み込み」と「書き込み内容の確認」処理が追加された結果、本来の1/10以下のパフォーマンスしか発揮できなくなったのです。 しかも、メーカー側からの回答によるとこの機能はOFFにすることができないとの事でした。

では、なぜこの温度(18度)を閾値にしてこのような機能を実装しているのでしょうか。

これはおそらく、HDDの記録媒体として利用されている磁性体の特性を考慮していると考えられます。 一般的なHDDに使われている磁性体は低温で保磁力が高く(磁力が抜けにくく)なります。 その結果、読み込みは問題ないが、書き込みをしてもそれが記録できていない状態が発生する可能性が出てくるため、Seagate 社はこのような処理をする事でデータの正確性を確保しようとしているのでしょう。 そして、おそらくは利用している磁性体で確実に書き込みできる最低温度が18度なのでしょう。

ちなみに、過酷な条件下で使われることが前提となるカーナビのHDDの場合は、低温でも保持力が高くならない磁性体を利用しており、氷点下でも利用ができるようになっているようです(デメリットとして記録できる容量が少なくなっています)。

事の顛末

では、実際の温度はどれくらいなのか調べてみました。

HDDの温度

# for i in `seq 0 3` ; do smartctl -d 3ware,$i -a /dev/twa0|grep Temp ; done
194 Temperature_Celsius     0x0022   020   040   000    Old_age   Always       -       20 (Lifetime Min/Max 0/16)
194 Temperature_Celsius     0x0022   017   040   000    Old_age   Always       -       17 (Lifetime Min/Max 0/15)
194 Temperature_Celsius     0x0022   017   040   000    Old_age   Always       -       17 (Lifetime Min/Max 0/15)
194 Temperature_Celsius     0x0022   018   040   000    Old_age   Always       -       18 (Lifetime Min/Max 0/15)

見事に、閾値の前後の温度となっています。 となると、この状態を改善するにはサーバの温度を上げるしかありません。

サーバの温度を下げる対応を行うことはあっても、上げるための対応などなかなか行うことはありませんのでかなり苦労しました。 ただ単純にサーバのFANを止めたりして冷却能力を下げると、CPUの温度が上昇した時に問題となる可能性があります。 そこで、FANの回転数を温度によって制御するモードに変更を行い高負荷時以外は回転数を落とすよう変更したり、ラック全体の冷却性能を落とすため、冷気の入ってくるラック下部に棚板を設置し空気の流れをさえぎる対応を行いました。

こうした対応の結果、各HDDの温度は閾値より高いものになり、すべてのHDDで期待したパフォーマンスを発揮できる状態となりました。

まとめ

今回、われわれにとって問題となったRAWという機能ですが、調べる限りSeagate社のみの機能のようで、他のHDDメーカーは実装していないようです。 これは、利用している磁性体の違いなのか、それともメーカーとしてのポリシーの違いなのかは残念ながらわかりません。 また、18度付近でのエラー率などの情報もありません。 今後、このような情報を各HDDメーカーが公開して下さる事を期待します。


^.*k0y.*$

klab_gijutsu2 at 13:44│Comments(0)TrackBack(2)運用 

トラックバックURL

この記事へのトラックバック

1. よいデータセンターとは? Part2  [ StarPlatinum.jp ]   2009年11月23日 14:13
window.google_analytics_uacct = "UA-957092-2"; よいデータセンターとは? Part1の続きです。 /.のいいところは、トピックに対してちゃんと批判的な意見も書き込まれて議論として成立している点にあります。それも、その方面の専門知識や実経験を持った技術者...
2. よいデータセンターとは? Part2  [ StarPlatinum.jp ]   2009年11月23日 14:14
window.google_analytics_uacct = "UA-957092-2"; よいデータセンターとは? Part1の続きです。 /.のいいところは、トピックに対してちゃんと批判的な意見も書き込まれて議論として成立している点にあります。それも、その方面の専門知識や実経験を持った技術者...

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント