Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

Exchange 2003のストレージ構成見積 - IOPSを測ってみる。

これは2006年に投稿したエントリーで、以前のブログから引き継いだものです。

昨日のエントリに引き続き、Exchange 2003のストレージ構成見積もりをやってみようという魂胆。
すでにExchangeを導入している環境でその更新や移行を実施する場合には、実環境のI/Oを計測してみるのが一番確実です。じゃあ、新規導入する場合、もとあるメール・サーバー、例えばsendmail + qmailなどの環境から移行する場合には?実際のメール使用量から見繕ってみても良いですが、全く概念の異なるシステム。机上の空論覚悟で、理屈を元に計測してみましょう。


まず、データベース(以下DB)に対するIOPSの基準値。

=====[ 低負荷 ]=====
IOPS = 0.18

[目安]
・一日あたりの送受信数: send/receive = 10/50
・メール・ボックス・サイズ = 50MB未満

=====[ 平均的負荷 ]=====
IOPS = 0.4

[目安]
・一日あたりの送受信数: send/receive = 20/100
・メール・ボックス・サイズ = 50MB

=====[ 高負荷 ]=====
IOPS = 0.75

[目安]
・一日あたりの送受信数: send/receive = 30/100
・メール・ボックス・サイズ = 100MB

DBに対する総IOPSは

IOPS x メール・ボックス数

となります。かなり高負荷な環境で500のメール・ボックスが動作している環境であれば、

総IOPS = 0.75 x 500 = 375

ここで、そのDBを構成するストレージのRAIDを考慮します。一度の書き込み要求に対して、RAID環境では複数回のI/Oが発生します。そのI/O回数をRAIDペナルティとして加味しなければなりません。そのペナルティは、RAID構成により下記のように値が異なります。

RAID0の場合:1
RAID1、01の場合:2
RAID5の場合:4

これらの値を加味するに当たって、メール・ボックスのread/write比が必要となります。下記の範囲を想定します。ちなみに、ひらめき同然の全くの適当な値。でも、大体そんなもんだと思うんだよね。

read:write = 3:1 ~ 2:1

公式はこんな感じ。

(IOPS × read比) + (IOPS × write比) × RAIDペナルティ

RAID01構成で、read:write = 2:1の場合を想定すると、

総IOPS = (375 x 2/3) + (375 x 1/3) x 2 = 500

DBを構成するストレージは500IOPSをさばくことの出来る構成にしなくてはならないということ。
最近の大規模ストレージに利用されているHDDだと、大体10,000~15,000rpmでしょうか。それくらいのスペックのHDDが1本当たり100IOPSを処理できると仮定すると、

500/100 = 5

少なくとも、DBを構成するストレージはHDD、5本以上で構成した方が良いという事ですね。RAID01の場合、構成本数は偶数になりますから1本加算して、最終的には6本必要という計算です。そこで、昨日のストレージ構成を確認すると...

drive - 3: 146GB HDD x 7 = 438GB (RAID01 + Hot spare)

お!幸いにも昨日のザックリした見積もりは、実はかなりドンピシャだったということが分かります。
適当な項目がいくらかあるけれども、曖昧な部分を調整しながら構成を見積もりすれば、ざっくりした見積もりに、いくらか根拠のようなものを与えることが出来ますね。

少なくとも、実際にストレージを構成するまでには至らずとも、オーバー・スペック気味に見積もりして、HDDを余分に実装できるくらいの空きスペースを設けられる機器構成を想定しておけば、後からパフォーマンスが足りなくなったときでも、それほど慌てずに対応できるでしょう。
最初から、パフォーマンスの低い見積もりを出しておいて、後からより高いパフォーマンスが求められることが判明したら、最悪の場合、再構成の上、再見積もりという対応をしなければなりません。

次回は、これらの作業を可能な限り自動化する話題です。