ストレージよもや話第2段

気を取り直して再びハイエンドストレージなお話し。パソコンのHDDで性能を見る時は「インターフェース」「シークタイム」「容量」「回転数」「プラッタサイズ」なんかを見ると思いますが、ハイエンドストレージ製品の場合は、100台以上のHDDドライブをRAID組んでかつ、数GBのキャッシュ経由でアクセスするため「シークタイム」とか「プラッタサイズ」とかはあてになりません。つーかカタログには記載すらされていません。カタログによく書かれている売り文句としてよくあるのが、「10GB/Secのスループット」「50000IOPSのランダムアクセス処理」「5ms以下のレスポンスタイム」とか書かれていますが、所詮売り文句なので注意が必要です。
というのは、普通この手のストレージサーバーは、1TBの巨大な外付HDDとして使うことはほとんどなく、論理的に50GBのHDD20個を複数のサーバーから使うといったような使い方をするので、実際に性能に影響するのはこの論理ボリューム(LV)一個あたりの性能やRAIDコントローラー単位での性能のピーク(RAIDコントローラーは普通4個以上積んでます)、インターフェースあたりの処理能力、コントローラーCPU毎の処理能力、キャッシュヒット率とヒットした時しなかった時のレスポンスタイムなどの様々な要因があるので、カタログ上のピーク性能なんてまず出ません。
例えば、「最大50000IOPS」といっても実は「キャッシュ100%ヒット時に1FiberChannelあたり5000IOPS出るから、10本のインターフェース全部これだけでたら50000IOPS」なんていうありえない現実的にありえない前提条件だったりするので、製品を決める時はできるだけ詳細なパフォーマンス資料を出させた上で検討しなければとてつもない金をドブに捨てることになってしまいます。
また、読み書きのブロックサイズが違うとこれらのピーク性能は桁が変わるくらい差が出ます。DBMSを入れるのとデカイファイルを小量置くのと、大量の小さいサイズのファイルを置くのでは論理構成が全然違います。だから実際に使うとなればRead/Writeの比率だけでなく、各IOの中でのブロックサイズ毎の内訳やキャッシュヒット率を事前に分析して、特定のRAIDコントローラーやディスクに負荷が集中しないようにデータのレイアウトやインターフェースの配置を考えないといけません。LVあたりの処理能力だけではパフォーマンス要件を満たさない場合は、さらにOS上でのSoftwareStriping等で複数のLVにIOを分散させる必要もあります。
だからカタログのベンチマークだけ見せて「パフォーマンスアップを保証します!!」なんて言ってくる営業には殺意を覚えます。まぁ、その「保証」ってのも大抵裏があるので、そのまま信じて泣きを見る前に高い買物なんですから、ちゃんと然るべき所に相談してから決めましょう。
さて、次回は何を語ろうか。