構築運用屋から見たHDD+αな話。

こちらのTogetterエントリ

サーバのディスクの話
http://togetter.com/li/238411


に、大量にはてブがついているのをみて、今までの私の話などを。


このエントリが、何故に多くの人の関心を寄せるか…というと、「RAIDの一般化」という部分が大きいと思います。
今じゃSATA(&SAS)RAIDが、Intelチップに機能として搭載され、数万円台の外部NASRAIDカードで、RAID5,6どころか1+0や50まで構築できる時代。
「Diskが壊れても、データは壊れない!」という売り文句は、非常に魅力的だったりします。

今ではSATAのRAID1(HDD2本でミラーするだけ)なら、数千円のレベルでカードが買えますね。
では、Intelチップセットや激安RAIDカードで、保護的RAIDを組んだ状況で、どれだけデータ保護が出来るかというと、
HDDの故障を救える確率と、ミラーが壊れてデータの不整合が発生する確率が、ほぼ同じ位になってしまう…というレベルでしょうか。
特に、安いRAIDの場合、ライトバックキャッシュの有効化は鬼門です。出来ればこれは無効にしないと、HDD物理障害を含む様々な要因でOSが不安定になった時に、データ不整合が簡単に発生してしまいます。


では、HDDの信頼性そのものはどうなのか?と言われると、確かに件のエントリに書かれている通りで、初期不良率が3%〜5%程度混じるレベルのブランドがあるのは確かだったり。
私の経験(15年前〜現在までの、単体〜中規模RAIDアレイがメインです)からみても、SCSIATA(現在ではSASSATA)の信頼度の違いは確実にありますし、それを束ねるRAIDにおいて、論理・物理障害によるデータ破壊の確率は、その束ねたHDDの数だけカーブを描いて上がります。

10年位前のサーバで、OSレベルのソフトウェアミラーRAIDを組んだ機器の保守運用もやっていたりしますが、壊れるのは殆どがATA系のHDDばかりで、SCSI系のHDDはほんとに壊れにくいです。
もちろん、「Diskがどれだけ実際にデータアクセスするか」によっても、故障率は左右される訳ですが…


HDDの信頼度を維持する為に、構築運用屋が検討し実施することといえば、
エージング(継続したランダムHDDアクセスをしばらく仕掛けて、初期不良品を弾いたり、長期利用可能であることを確認する)
■設置場所の温度維持(HDDは本当に湿気と温度変化によって、故障率が変ります)
■サーバorストレージ筐体の選定(HDDマウント部分及びエアフロー)
■ケーブリング(SATAのケーブルは、安物だと緩くてアウトなケースが。。)
■Microcodeの更新(HDDにもいわゆる「ファームウェア」がありますし、メーカーから訂正版が出ることが多々あります)
■ドライバの更新(FCカードやSCSI/RAIDカードのドライバの更新などは、ほんとに頻度が高いです。)
RAIDの組み方の検討(実用レベルならRAID1,5,6,10,50とホットスペアを検討して、パフォーマンスとデータ保持を天秤にかける必要があります)
■最終バックアップの取得と方法(ミラー&スプリット、テープ保管、差分保管等)
といった所でしょうか。
これだけみても判るとおり、ここの部分においては、構築運用経験が欠かせませんし、出来れば物理層のレベルでの知識も欲しい所ではあったりします。

サーバの保守運用といってもピンキリで、100万円以下のサーバをラックに積んで、小規模な社内向けサービスを組む程度から、億単位のストレージを運用する事まであるわけです。
考えなくてはいけない事は、「掛ける費用や人員と、データロスト時の被害レベル」を算出して、データ保護に掛ける費用と手間と責任範囲を明確にする事。
当然のようで、ここをなあなあにして運用を始めて、いざ事故が起きた時に責任の擦り付け合いになるケースが本当に多いです。


全般的に言えることとしては、「お金が掛かるのは、それだけの理由がある」という事。
どのようなメーカー製のサーバであれ、安いサーバHWと、高いサーバHWは、ちゃんとそれなりの理由があったりします。
HDDだけが、この例外から逃れられるわけもありません。

ぶっちゃけ、どんなメーカーの製品であれ、100万以下で買えるPCサーバには、メーカーは大して長期運用を目指した設計なぞしていません。
 安ケミコンぶち込んで、コンデンサのお腹がパンパンだぜぇ…
 廃熱計算もせずにGPUチップのせたら、DC環境下でも異常高温で50日に1回程度勝手にOS停止
 CPU横付けにしたら、ヒートシンクの重みでソケット足がゆがんだ
 稼動チェックしない大容量メモリを積んで、10%弱の不良品を出荷
 RAIDカードとバッテリを一体化したら、バッテリが膨れてRAID基盤が歪んだ
 2重化電源なのに、故障した電源ユニットを抜いたら筐体停止
 1年電源ON稼動で、ファン故障率5割越え
など、など。もちろんそれぞれメーカーは異なります。HP,旧COMPAQ,IBM,DELL,SUN,富士通,NEC,日立。どこのものでも「ありえます」。
ストレージメーカーから人員を出すレベルのシステムであれば、ストレージ設計自体を引き渡す事も可能ですし、対障害レベルについて、ヒアリングの段階から任せる事が出来たりもしますが、某メーカーだと、出してくる人員のスキルが…ゴニョゴニョ…とか。(汗)


そして何より、RAID故障よりも頻発する障害は、「運用でデータが壊れるor消える」こと。
人的ミスやOS・アプリケーションのバグによるデータロストは、HWの故障などよりもずっと多くありますし、それに耐える運用(バックアップ頻度とリストア手順・時間の検討)をしなければなりません。

先ほどのエントリでは、「メールサーバとSATAを組み合わせるな」というような話がありますね。
メールサーバというより、「特定のディレクトリに、大量のファイル作成・削除が発生する運用が前提のアプリケーション」というべきかもしれません。
LinuxWindowsなどの、既存のFileSystemにおいては、1つのディレクトリ直下に、数千を越えるファイルを置くような運用をすると、ファイル読み出しだけで目に見えてレスポンスが悪くなりますし、ディレクトリファイルそのものが壊れて、データの論理異常が発生する確率があがります。
メールキューファイルやメールボディファイルを、1つのディレクトリ直下に置くような運用をせず、アプリ側でディレクトリを分散させる方法を考えるべきですね。


こんな事を考えていくと、「データ保護には何が必要なのか」という命題に対して、RAIDレベルやHDDの信頼性というような部分よりも前に、まず考える事があるのに気付くかと思います。
以下に挙げてみますが、会社のデータが入る機器であれば、メーカー問わず利用形態問わず、最低限検討すべき内容かと思います。


1)HDD及びストレージの中に入るデータが、どれだけ貴重で、ロストしたときにどのような手を打てるか。
定期的に、データの更新を止めて、そのバックアップを取れるシステムであれば、それこそ安いサーバでソコソコのRAIDを組んでおけば良いという判断はありですし、それがコストパフォーマンス上も正しい判断です。
但し、必ず復旧すべきデータなのであれば、その手順と対応コストも加味しなければなりません。
2)アクセスパフォーマンスの確保
DBサーバ、流通量の多いメールサーバ、コンテンツサーバなど、1日にテラ単位でデータが更新される事がありえるサーバであれば、RAID1+0以上の検討やキャッシュ設定、メンテナンスしやすいように特定部分だけを外出ししたり、その部分のHDDの寿命を短めに見積もったり、など。
最近ではSSDの検討なども必要になるでしょうか。
3)サーバの利用を止めて定期メンテナンス出来る日程と、緊急メンテナンスが必要となった場合の承認フローの作成
PCサーバレベルであれば、最低でも月1で6h程度のメンテナンス時間は確保したい所です。(OSのアップデート、microcode適用等)
更に、稼動状態でバックアップが取れないようなシステムであれば、頻度とバックアップ時間も確保する必要があります。
※ここが一番難しいというか、なあなあにしてしまって、一回痛い目を見てから再検討となる事が多いですね。。
4)どれだけ費用と運用時間を掛けられるのか
「絶対データは保護しろ、24h365d稼動させろ、金は出来るだけ掛けるな」というのが案件になる事、多いですよね。もしくはこれが暗黙の了解になっているケース。
9割は上手く行くのかもしれませんが、残り1割が発生したときの事を考えるのが、構築運用屋に必要なスキルです。
中のデータ、システムが生み出す利益との兼ね合いですが、まずは中のデータの重要性とサービス要求レベルをほぐしてみる事から始める必要があります。


どのようなストレージ製品を使い、HDDのRAIDレベルをどうするかという検討は、少なくともこれらを決めた"後"の話。
これらをきちんと細かく検討していれば、それほど悩む事ではない…と、私は思いますし、データセンター構築レベルの仕事でない限りは、十分だと思います。