IAサーバーに限らず,一般的に,最もボトルネックになりやすいコンポーネントとしてディスク・サブシステム(ハード・ディスク・ドライブを含むコンポーネント)がある。ハード・ディスク・ドライブはサーバーの中で数少ない機械仕掛けで動作する,最も低速なサブシステムである。そのため,適切なチューニングを行っていないと,データの処理スピードが遅くなってしまう。逆に,適切なチューニングを施してディスク・サブシステムを高速化することにより,劇的なパフォーマンス改善を図れることが多い。ハードウエア・チューニングにおいては最も注意を払うに値するコンポーネントだ。
ここで,このコンポーネントだけディスク“サブシステム”と記述している理由について説明しておく。サーバーでは,ATAハード・ディスク・ドライブや SCSIハード・ディスク・ドライブを単体で使用するのではなく,後述するRAIDを用いて複数の物理ディスクを1つの論理ディスクとして扱うことで,パフォーマンスの向上と耐障害性の確保(冗長化)を行うのが一般的である。
ゆえに,ここではRAIDコントローラとハード・ディスク・ドライブによって構成されたディスク・サブシステムを対象として説明する。また,ディスクのインタフェースは,一部のローエンド機を除きサーバー・マシンではSCSIが一般的なため,SCSIでの情報のみ掲載し,ATAについては割愛させていただいた。
まずはディスク・サブシステムの負荷状況を調べる方法やディスク・アクセスの特性を解説し,その後ディスク・サブシステム高速化技術であるRAIDの技術やRAIDレベルの選定方法を述べる。さらに,ディスクI/OとアプリケーションI/Oの最適化方法も紹介する。
ディスク・サブシステムの負荷を調べる
ディスク・サブシステムの負荷状況は,以下のように調べる。
(1)iostat
ディスク・サブシステムの統計情報を収集するためのコマンドである(図1)。各列の内容は表1の通り。
表1●iostatの表示内容 |
![]() |
(2)vmstat
vmstatコマンドは,前にも述べた通り仮想メモリーの統計情報を取得するためコマンドだが,ディスク・サブシステム関連の統計情報も取得できる(第1回の図2)。ディスクサブシステムの負荷状況は以下の項目で把握できる。
● io
bi: ブロック・デバイスに送信されたブロック数(blocks/秒)。
bo: ブロック・デバイスから受信したブロック数(blocks/秒)。