2017年8月3日木曜日

RAID 6 か RAID 10 か、ファイルサーバはどちらにする?

ファイルサーバにはどんなRAIDが適切か


ファイルサーバを構築するにあたってストレージをどうするかという点について考察てみたいと思います。

HCI を当たり前のように組める中堅企業以上であればいざ知らず、小規模から中小企業あたりであればファイルサーバにRAIDコントローラーを挿してHDD複数台でRAID運用、というケースが割と多いのではないかと思います。

故障や復旧の手間、コストなど全体的なバランスから最近ではRAID 6もしくはRAID 10あたりが良く使われているようです。

RAIDについては素晴らしい解説がされているブログなどもあり、ここでは細かいところに踏み込みませんが、今回自社に導入するにあたりかなり悩んだためその経過をメモしておこうかと。

そもそもなんでRAIDにするかといえば

「ディスクの故障を前提とした耐障害性」+「パフォーマンス向上」

を意図しているわけで。

RAIDが世に出た当初の目的からすれば、あまり高価でないディスクでも耐障害性を高めたいということなので、特に前者を意識してしまうのですが、数十人以上が同時アクセスするファイルサーバですからパフォーマンスもアップしたいところです。

RAID 6 はパリティ生成による書き込みパフォーマンスの低下が指摘されてる一方で、ストライピングによる読み込みパフォーマンスの向上が期待されるため、どちらかというと読み込みが多いシーンでは有利です。耐障害性も計算上ではRAID 10より高いですが、リビルド負荷が大きいのでリビルド中は全体のパフォーマンスが下がってしまうなど、ふだんはいいけれど復旧時が大変という印象。

RAID 10は書き込みはシンプルなためランダムアクセスでも速度が低下しにくく、というかむしろディスクを増やすごとにストライピングのメリットも効いてくるためRAID 6より有利です。逆にディスク台数が6台くらいまでであれば4台でストライピングされるRAID 6のほうが3台でストライピングされるRAID 10より読み込みが有利なのではないかということは理解できます。


ファイルサーバにどちらを採用するかという点で非常に悩みました。
今回使っている DELL PERCH730 は意外とRAID 6が速いという情報もあり、もともと容量小さいSASディスクを有効活用しようとするとRAID 6に気持ちが揺れます。

一方でファイルサーバとして複数が同時アクセスし続けるハードウエアのため、少しでもパフォーマンスが高いほうがありがたいというのもあります。それほど大きくないExcelファイルなどへのアクセスがほとんどで、ランダムRead、ランダムWriteがほとんどであると考えるとRAID 10のほうが実用環境で有利な感じがします。

故障時のディスク交換、リビルドに関してもRAID 10のほうがリビルド中の負荷が少なく、ホットスワップのメリットが活かしやすい。

思い悩んだ結論としては、やっぱりRAID 10かなと。
容量についてはあまりアクセス頻度が高くないデータはアーカイブ中心の別ファイルサーバに逃がすとして、比較的頻度が高いデータに絞れば数TBでも足りそうです。
(動画や巨大な画像等は使わない業種のため)

耐障害性としては同じグループのドライブ(3台)が同時にすべて故障するというかなりのレアケースでない限りはデータロスすることは無いので、実運用上問題なさそうです。リビルド負荷も低そうですし。

アーカイブ中心のファイルは別途SATAの大容量ディスクでRAID 1を組んだサーバに入れておきます。こちらはアクセス負荷が少ないのでパフォーマンスはあまり意識しなくても良いのでWesterm Digital の RED といった回転数抑え目ディスクで十分です。


今回のファイルサーバ構成
・起動用ドライブ HDD 2台の RAID 1 構成
・データ用ドライブ HDD 6台の RAID 10 構成
の2仮想ドライブにしてみました。

ついでにアーカイブを中心としたファイルサーバを併用しました。
アーカイブ用ファイルサーバの構成
・ドライブは SATA HDD 2 台の RAID 1 構成
・OSドライブとデータドライブはパーティションを分けて運用
といった1仮想をソフトウエアRAIDで組みます。


RAID を運用するにあたって


RAID 運用をしている多くの人は故障時のことをあまり意識していないと思います。
まぁ、通常のリース期間ではRAID1以上を組んでいると意外とデータロスする確率が低いのでしょうが...

結局HDDが故障しても気が付かなくて、RAIDの冗長性が無くなった後にもう一台壊れて気づくなんてことであれば、初めからRAIDを組まなかったケースと比べて単にオシャカになるまでの時間が伸びただけです。(それはそれでメリットありますが)

RAIDを運用し始めたら故障時の交換を意識して運用すべきだと強く思います。
できれば運用開始前に一度意図的に1つディスクを引っこ抜いて、違うディスクで正常にリビルドできるかくらいを確かめたいところです。

HDDの故障だけを想定して4時間対応などの高い保守に入るくらいであれば、1本余計にディスクを買っておくのもありです。
SAS 2.5インチの容量大き目(1TB以上)あたりだとなかなか入手が困難だったりもしますので、多少高めでもメーカー純正品を手配しておくか、ディスク構成を見直してホットスペアにしておくことも要検討です。

私はいまのところ毎晩差分バックアップを取っておいて、障害発生時にはいったん直近の差分データを取ったうえでメーカー保守待ちという体制です。
当日午前1時に取得したバックアップからの差分だけであればそれほど時間がかからないので、メーカーの保守要員が到着するまではこれを頻繁に取得してデータロスを防ぎます。
RAIDディスク交換中にやらかしがあってもいいように、どちらにしてもバックアップを取ることになりますし。

この辺、大規模になってそんなこと現実的に無理な場合はやっぱり保守をがっちり入るのと、そもそものハードウエアをきちんと冗長化(HCIやら外部のバケモノディスクなどを使って)しておけば良いのでしょうね。



2017年8月2日水曜日

Windows 2016 でサーバ構築

Windows 2016 がやってきた

社内で Windows 2016 のサーバを購入することになったので、その構築メモ。
今回の全体像はこんな感じです。

  1. Windows Server 2008、Windows Server 2012 R2 で乱立しているサーバを整理
  2. Active Directory の刷新
  3. BCPを想定した二重化

1. Windows Server の役割見直し

今回の導入にあたり、まず最初に着手したことが、既存のサーバ群の役割整理です。
ドメインコントローラー、ファイルサーバはともかく、各種アプリケーションがいろいろなサーバ上で乱立して動いています。今後は仮想化サーバーで集約する予定のため、継ぎ足しで構築されてきた環境を整理して、安定した運用を見据えて再設計します。


2. Active Directory の刷新

現行の AD は会社がそれほど大きくなかった時点で設計したので、細かな ACL よりは使い勝手を優先しています。
利用者は増える一方、クライアントからのセキュリティ要件が厳しくなる一方なので、その背景に見合ったグループポリシー管理を行うため、Active Directory を再設計します。


3. BCP を想定した二重化

現行のシステムは遠隔地拠点との間で Active Directory のバックアップ運用だけは行っています。また、各種データはクラウド上へバックアップを取っています。
しかし、現状では障害発生時の復旧に時間がかかることが予想されますし、そもそも手順が多すぎます。
もっとユーザレベルでの意識もなく、罹災時にも迅速な復旧ができることを想定して構築する必要性が高まっていました。



今回の構築要件

  • なるべく社内のリソースと技術力で構成する
  • 想定ユーザ数は最大200名前後(平均的には100名以内)
  • 社内LAN内に設置(オンプレミス)
  • メインとバックアップはそれぞれ別拠点でVPN接続
  • 19インチラックマウント型
  • ADサーバは耐障害性をある程度担保、ファイルサーバはスピードと耐障害性をできる限り両立する。

今回のサーバ構成

1. ドメインコントローラー

ドメインコントローラーは Windows 2016 で刷新します。ドメインコントローラーに障害が発生すると社内ネットワークへ一切のアクセスができなくなることもあるため、最低の2台構成です。
ハードウエア自体はデータが消えてしまうと困るのですが、二重化していますし、他の役割を兼務させないので予算との兼ね合いで最低限のスペックで構築します。
今回は DELL PowerEdge R230 を選びました。
電源の冗長性が無いので故障時に停止する必要がありますが、その時は二重化されたドメインコントローラー側にアクセスされるので、どちらかというとコスト重視です。

メイン側は 10,000RPM の SAS HDD で PERC H330 による RAID 1+1(RAID 1の2セット)、サブ側は SATA 1TB で PERC S130 のソフトウエアRAID1です。
予算があればメインとサブは同じ構成がいいと思いますが、今回は検証用でも使ったハードウエアをそのまま本番運用に昇格します。

おおむね200名程度であれば1CPU程度のサーバであれば十分なパフォーマンスが得られるといわれています。

個人的にはうちのような小規模企業レベルであれば、ドメインコントローラーは本社にオンプレミスでサーバ機を1台、バックアップ用として既存の適当なサーバ上で Hyper-V を動かして1台、または余っているPCを専用に流用して1台でも良いかなと。

ふだんアクセスさせないのであればあまりパフォーマンスを意識する必要がありません。PC流用の場合は電源等の信頼性を考慮して夜間は電源切っておいたほうが良いですが、そんな運用ができるのであれば、無理してサーバ機を2台そろえる必要もないのかなと。
(あくまでもバックアップ用途なので、クライアント側からはアクセスさせない。メイン機が完全に故障したときのみアクセスさせる程度で考えています)


2. ファイルサーバー

ファイルサーバはスピードと安定性、コストの兼ね合いから 10K RPM の SAS ドライブで構築します。15K RPMやSSDは魅力ですがまだまだ容量と価格のバランスが(小規模企業には)厳しいので。スピードと容量、安全性を考慮して、今回はディスク6つをRAID 6で運用します。比較的アクセス頻度の高いものをこちらに集約し、アクセス頻度の低いものや部門単独で利用するものは別サーバに分けます。

ディスクの信頼性やスピードについては一般的には SAS > SATA であるといわれていますが、運用の仕方次第でその差を低くできます。
SAS 15K RPM の RAID 1 より、SATA 5400RPM を10台使った RAID10 のほうが(コントローラ等がまともであれば)早いですし、重要なデータを運用するサーバでホットスペア無しで RAID 5 なんて怖いですし。

逆にファイルサーバではメモリやCPUのスペックについてはそれほど不要という意見がありますが、余裕のあるメモリはキャッシュに使われるということもあり、32GB程度積んでおきます。メモリは予算内で詰めるだけ積んでおいたほうがいいですね。
購入や長期リースの場合は、近い将来にファイルサーバを増強・入替なんかが生じた際に、別の用途に流用できる可能性もありますので。
大規模企業や官公庁であれば途中で計画が変わることはほぼ無いと思うのですが、小規模から中小企業レベルであれば3年先に同じサーバで十分な状況は望ましくないですから。

また、集中してアクセスされるサーバであることから、将来性も考慮してネットワークアダプタをインテル 10Gbps のものを増強します。(当面は 1Gbps で運用)


3. ファイルバックアップサーバ

ファイルサーバのバックアップ側です。
予算があればメインと同一の構成にしてミラーしておけば良いですが、コストの問題もあるので、こちらは SATA のディスク中心に構築しています。

故障時には一時的にではあってもメインに格上げされるサーバなので、メインのサーバよりちょっと下のスペックくらいにしておくと万全です。
今回は予算の関係もあり、こちらもテストで使っていたサーバのディスクを入れ替えて流用することにします。

運用イメージとしては本当に最低限の運用ができるように、という感じです。



おおむね上記のような構成で社内ネットワークを作っていきます。