サーバーのサイジングにおいて,ディスクのI/O性能は極めて重要になる。Part4では,IOPS(I/O per Second)の概念を解説しよう。

 サーバーのサイジングにおいてディスクのI/O性能は,システム全体のI/O処理性能を見積もる際の要となる。特性をしっかり理解しておきたい。以下ではまず,サイジングにきわめて重要なIOPS(I/O per Second)の概念を解説する。

 IOPSは,ディスクが1秒当たりに処理できるI/Oアクセスの数である。IOPSが高ければ高いほど,高性能なディスクと言える。1回のI/O処理にかかる時間は,平均アクセス時間とデータ転送時間を足した数値。このI/O処理が1秒当たり何回実行できるかがIOPSである(図10)。

図10●ディスク性能を見積もる概念としてのIOPS
図10●ディスク性能を見積もる概念としてのIOPS
ディスク単体の性能を,1秒当たりに処理できるI/O数で示したものが「IOPS」である。DBサーバーなど頻ぱんにディスクにアクセスする用途では,IOPSが高いディスクほど性能が良い

 データ転送時間には,ディスクから磁気ヘッドがデータを読み書きする平均メディア転送速度やインタフェースの転送速度,ドライブの信号処理とデータ転送を制御するCPUの処理時間などが加味される。

 実は,これらの値は公開されていないため,正確なデータ転送時間は分からない。ただし,4Kバイトや16Kバイトなど,OSの読み書き単位程度の大きさであれば,数10マイクロ秒から長くても1ミリ秒程度であり,誤差の範囲である。

 仮に,4Kバイトのデータを書き込むために必要なデータ転送時間を1ミリ秒とする。平均アクセス時間6ミリ秒のディスクにデータを4Kバイト単位で書き込むとする。このディスクのIOPSは,「1/(6ミリ秒+1ミリ秒)=142IOPS」となる。つまり,4Kバイトのデータを毎秒142回書き込めるディスクということになる。

 ここで,142IOPSのディスクをDBサーバーのトランザクション・ログの書き込み専用に使うと,単純に毎秒142トランザクションのログを記録できると推測できる。

 ファイル・サーバーなどの場合は,もっと長いデータの読み書きを連続して行うため,データ転送時間をもう少し厳密に計算しなければならない。場合によっては,実機で実験して実測データを取得する必要がある。

 ディスクは,ディスク単体でディスク・キャッシュも搭載している。メイン・メモリーを使ったディスク・キャッシュも重要だが,ディスクが内蔵するキャッシュも極めて重要だ。ファイル・サーバーやDBサーバーなどデータがディスク上に分散する場合は,ディスク・キャッシュが性能向上に役立つ。キャッシュ容量が大きければキャッシュのヒット率も上がるため,読み出し性能の大幅な改善を見込める。

 一方,データベースのトランザクション・ログ,メールやプリント・サーバーのスプールなど書き込み主体の用途では,キャッシュの有効性は下がる。書き込み時のアクセスはランダム・アクセスではないため,バッファとしての意味しかない。

ディスク・インタフェースの違い

  耐障害性と高速性を両立するためには,ディスク・インタフェースも適切なハードウエア選定が必要である。現在の選択肢としては,主としてデスクトップ向けに開発されたSerial ATA(SATA)とサーバー向けに開発されたSerial Attached SCSI(SAS)の二つが挙げられる。RAIDなどはこれら物理層のインタフェースの選択による論理的な構成制限などはないが,選択したインタフェースのチップセットやコントローラ・ボードによるサポートの有無など,製品レベルでの違いが生じることがある。

 SATAとSASはいずれもシリアル・インタフェースで,高速化については,ディスク本体の機械的なメカニズムによって左右される要素が多い。また,いずれもピア・ツー・ピア接続でディスクとインタフェース間は1対1なので他のドライブとのアクセス競合などがなく,ドライブ数を増やしてもインタフェースによる性能低下はない。ただ,一般にSATAでは,1日8時間稼働を前提に想定された信頼性や平均故障率を基に設計されたドライブであるのに対し,SASでは24時間365日の連続稼働を想定した設計になっていると言われる。インタフェースの優劣ではないが,こうした製品間の違いがインタフェースの違いとして区別されることも多いので,用途に応じたインタフェースの選択は重要だ。