この節では、単純連結、ストライプ、ミラー、RAID5 メタデバイス、状態データベースの複製、およびメタデバイス上のファイルシステムを構築するためのガイドラインを示します。
単純連結はストライプほど CPU 時間を必要としません。
単純連結は小規模のランダム入出力に適しています。
ディスクジオメトリ (幾何学的配置) が異なる物理ディスクを使用してはなりません。
ディスクジオメトリとは、ディスクドライブの各シリンダでのセクターとトラックの編成を意味します。UFS は、ディスクジオメトリを効率よく使用するように、ファイルシステムを編成します。連結方式メタデバイスの各スライスが異なるディスクジオメトリを持っている場合、DiskSuite は先頭スライスのジオメトリを使用します。この結果、UFS ファイルシステムの効率が低下します。
ゾーンビット記録 (ZBR) 方式を使用しているディスクでは、スピンドルからの距離によって各シリンダのデータ量が異なるため、ディスクジオメトリの違いは問題にはなりません。現在では、ほとんどのディスクが ZBR 方式を使用しています。
単純連結を構築する場合には、異なるコントローラとバス上にスライスを分散させます。複数のコントローラやバスにスライスを分散させることによって、全体の入出力負荷を均一にすることができます。
ストライプの飛び越し値を適切に設定しなければなりません。
ストライプ方式メタデバイスの物理ディスク数が多いほど、入出力パフォーマンスが向上します (ただし、平均故障間隔が短くなるため、ストライプ方式メタデバイスのミラー化を考慮する必要があります) 。
ストライプ方式メタデバイスでは、サイズの異なるスライスを混在させてはなりません。ストライプ方式メタデバイスでは、すべてのスライスにおいて利用可能なサイズが制限を受け、最小のスライスのサイズと同じになってしまいます。
ディスクジオメトリが異なる物理ディスクを使用してはなりません。
ストライプ方式メタデバイスは、異なるコントローラとバスに分散させます。
既存のファイルシステムに対してストライプを構築することはできません。
ストライプは、大規模な順次敵入出力や、入出力が均等にならない場合に適しています。
ストライプは、単純連結より CPU 時間を必要としますが、そのコストに見合うだけの効果があります。
ストライプでは、データの冗長性は提供されません。
ミラーは、スレッド化された入出力または非同期入出力の場合のみ、読み取りパフォーマンスが向上します。メタデバイスからシングルスレッドの読み取りしか行わない場合には、パフォーマンスは向上しません。
ミラーは、1 回の論理的書き込みを完了させるために、データのコピーを 2 つ書き込まなければならないため、書き込みパフォーマンスが 15 〜 50% 程度低下します。書き込みが集中しているアプリケーションでは、ミラーは全体のパフォーマンスを低下させます。しかし、ミラーによる書き込みパフォーマンスの低下は、RAID5 によるパフォーマンス低下 (約 70%) より少なくなっています。図 7-1 を参照してください。
UNIX オペレーティングシステムでは、ファイルシステムキャッシュを実装しています。読み込み要求はこのキャッシュで満たされる場合が多いので、ファイルシステムを介した物理的入出力の読み書きの比率は、書き込みの方に極端に偏ります。
たとえば、あるアプリケーションの読み書きの比率が、読み取り 80% 、書き込み 20% であるとします。しかし、多くの読み取り要求はファイルシステムキャッシュで満たされるため、物理的な入出力の読み書きの比率は、読み取り 60% 、書き込み 40% というように、まったく異なる値になることがあります。多くのメモリーがバッファーキャッシュに割り当てられている場合には、読み書きの比率が (読み取り 80% 、書き込み 20% が、読み取り 40% 、書き込み 60% といった具合に) 逆転する場合もあります。
RAID5 は、1 つのデバイスの故障にしか対応しません。
ミラーメタデバイスは、複数デバイスの故障に対応する場合もあります (障害の発生したデバイスがすべて同じサブミラー上である場合など) が、RAID5 メタデバイスは 1 つのデバイスの故障にしか対応しません。ストライプ方式および連結方式メタデバイスは、1 つでもデバイスが故障すると動作できません。
RAID5 メタデバイスは、エラーが発生していない状態では、読み取りパフォーマンスが向上しますが、エラー状態では読み取りパフォーマンスが低下します。
RAID5 メタデバイスのデバイスが故障すると、複数の入出力操作によって既存のドライブのデータとパリティ情報からデータを再生成しなければならないため、読み取りパフォーマンスが低下します。ミラーメタデバイスの場合は、デバイスが故障しても、このようなパフォーマンスの低下はありません。
RAID5 メタデバイスでは、書き込みパフォーマンスが低下します。
RAID5 メタデバイスでは、パリティを計算して、データとパリティの両方を書き込まなければならず、そのためには複数の入出力操作が必要になるため、RAID5 メタデバイスでは書き込みパフォーマンスが低下します。ミラーメタデバイスでは、データを複数のミラーに書き込むために書き込みパフォーマンスが低下しますが、書き込みが多いアプリケーションでは、ミラーのほうが RAID5 メタデバイスより高い書き込みパフォーマンスを提供します。
RAID5 メタデバイスは、ミラー化より安いハードウェアコストで構築できます。
ミラー化では、2 面ミラーであれば通常の 2 倍のディスク領域を必要とします。したがって、ミラー化より RAID5 メタデバイスのほうが、ハードウェアコストが安くなります。RAID5 メタデバイスでパリティを格納するのに必要なディスク領域は、「ディスク数分の 1」です。
既存のファイルシステムに対して RAID5 メタデバイスを構築することはできません
既存のファイルシステムを RAID5 メタデバイスでカプセル化することはできませんので、ファイルシステムのバックアップを取ってから復元させなければなりません。
構成が変更されると、すべての複製が書き込まれます。
ミラーのダーティー領域ビットマップに対しては、 (1 つのミラーに対して) 2 つの複製のみが更新されます。
適切な平均値は、3 つのミラーに対して 2 つの複製です。
書き込みが多いアプリケーションでは、1 つのミラーに対して 2 つの複製を使用してください。
読み取りが多いアプリケーションでは、10 個のミラーに対して 2 つの複製を使用してください。
newfs(1M) コマンドに対するデフォルトの i ノード密度の値 (-i オプション) は、大規模なファイルシステムには最適ではありません。newfs コマンドで新規のファイルシステムを作成する際は、i ノード密度を、デフォルトの 2 KB のファイル領域につき 1 i ノードではなく、8 KB につき 1 i ノード (-i 8192) に設定してください。現在、一般的なファイルのサイズは、1980 年頃の 1 KB ではなく、64 KB 以上になっています。
8 G バイトを超える大きなメタデバイスでは、次のコマンドのように、シリンダグループのサイズを 256 シリンダに増やす必要がある場合もあります。
# newfs -c 256 /dev/md/rdsk/d114 |
Solaris 2.3 および 2.4 のマニュアルページでは、最大サイズが 32 シリンダ/シリンダグループであると記述していますが、誤りです。
可能であれば、ファイルシステムのクラスタサイズを、ストライプ幅の整数倍に設定します。
たとえば、順次入出力に対して次のパラメータを設定します。
maxcontig = 16 (16 * 8 ブロック = 128 K バイトクラスタ)
飛び越し値を 32K バイトに指定した 4 方向ストライプを使用すると、ストライプ幅は 128 K バイトになり、パフォーマンスが向上します。
飛び越しサイズ = 32 K バイト (32 K バイトのストライプユニットサイズ * 4 ディスク = 128 K バイトのストライプ幅)
ファイルシステムの maxcontig パラメータを設定することによって、ファイルシステムの入出力クラスタサイズを制御することができます。このパラメータは、回転待ちを挿入する前に順次して割り当てられる (1 つのファイルに属する) ブロックの最大数を指定します。
ファイルシステムの入出力クラスタサイズがストライプ幅の整数倍であると、パフォーマンスが向上する場合があります。たとえば、maxcontig パラメータを 16 に設定すると、128 K バイトのクラスタ (16 ブロック * 8 K バイトのファイルシステムブロックサイズ) になります。
mkfs(1M) コマンドのオプションを使用すれば、デフォルトの minfree、i ノード密度、シリンダ/シリンダグループ、maxcontig の設定を変更できます。maxcontig と minfree の設定は、tunefs(1M) コマンドでも変更できます。
詳しい説明は、mkfs(1M)、tunefs(1M)、newfs(1M) コマンドのマニュアルページを参照してください。
利用できるディスクドライブ間で入出力の負荷を均一に分散させるように、データを物理ドライブに割り当てます。
もっとも頻繁にアクセスされるデータを調べて、ミラー化またはストライプによって、そのデータに対するアクセスバンド幅を広げます。
ストライプ方式メタデバイスと RAID5 メタデバイスは、どちらも複数のディスクドライブにデータを分散させて、入出力負荷を均一に保ちます。入出力負荷の均衡を保つためには、ミラー化も有効です。
DiskSuite ツールのパフォーマンスモニタ機能や、iostat(1M) などの OS ツールを使用して、もっとも頻繁にアクセスされるデータを調べます。該当するデータが見つかったら、ミラー化、ストライプ、または RAID5 を使用して、そのデータへのアクセスバンド幅を広げます。