DiskSuite 構成に不備があると、パフォーマンスが低下することがあります。この節では、DiskSuite を使用して高いパフォーマンスを得るためのヒントを紹介します。
ディスクとコントローラ - ドライブは、別のドライブパス上のメタデバイスに置きます。SCSI ドライブの場合、これは別のホストアダプタを意味します。IPI ドライブの場合、これは別のコントローラを意味します。入出力の負荷を複数のコントローラに分散すれば、メタデバイスのパフォーマンスと可用性が向上します。
SPARCstorage Array の場合、可能ならば、異なるシャーシ上のミラーに含まれるドライブを使用してください。このような構成では、すべてのミラーデータが SPARCstorage Array のシャーシ障害に耐えることができます。ドライブを異なるシャーシに分散できない場合、異なるトレイに含まれるドライブを使用します。これによって、ミラーをオンライン状態に保ったままで、サブミラーをオフラインにし、保守のためにトレイを停止したり除去することができます。
たとえば、2 面のミラーで、各サブミラーが 3 つの SPARCstorage Array ディスクの連結によって構成されるものとします。一方のサブミラーは、トレイ 1 に含まれる 3 つのディスクから構成され、他方のサブミラーは、トレイ 2 に含まれるドライブから構成されます。この構成を初期化するためのコマンド行インタフェースは、次のようになります。
# metainit d1 3 1 c0t0d0s2 1 c0t0d1s2 c0t0d2s2 d1: Concat/Stripe is setup # metainit d2 3 1 c0t2d0s2 1 c0t2d1s2 c0t2d2s2 d2: Concat/Stripe is setup # metainit d0 -m d1 d0: Mirror is setup # metattach d0 d2 d0: Component d2 is attached |
文字列 t0 と t1 はトレイ 1 に含まれ、t2 と t3 はトレイ 2 に含まれ、t4 と t5 はトレイ 3 に含まれます。したがって、上述のコマンドでは、異なるトレイにサブミラーを作成するため、最初のサブミラーに文字列 t0 を使用し、2 番目のサブミラーに文字列 t2 を使用します。
システムファイル - /etc/lvm/mddb.cf ファイルや /etc/lvm/mdo.cf ファイルについては、編集も除去も行わないでください。
これらのファイルは、定期的にバックアップしてください。
スライスがメタデバイスとして定義および起動されたら、これを他の目的に使用しないでください。
不良ディスクの再フォーマットが必要となる場合に備えて、prtvtoc(1M) コマンドの出力のハードコピーを保存しておきます。
メタデバイスの一部となるスライス上に状態データベースの複製が置かれた場合、メタデバイスの容量は、複製によって占有される領域分だけ減少します。複製によって使用される領域は次のシリンダ境界まで切り上げられ、この領域はメタデバイスによってスキップされます。しかし、状態データベースの複製のデフォルトサイズは 1034 ブロックにすぎないため、複製とメタデバイスをこのように結合することは、実際に DiskSuite のきわめて効果的な使用法となります。
ストライプは、(他のメタデバイスではなく) スライスからのみ作成されます。
ディスクジオメトリ (幾何学的配置) の異なるディスクのスライスを使用しません。
スライスは、同じコントローラ上でもかまいませんが、別のディスクのものを使用します。それぞれ別のコントローラ上に置かれたストライプを使用する場合、同時に実行できる読み書きの数が増大します。
システムやアプリケーションからの入出力要求に適合するように、ストライプの飛び越し値を設定します。
単一のディスク上にあるパーティションを使用したストライプ化を行いません。これは、同時アクセスができなくなり、パフォーマンス上の障害となるからです。
同じサイズのディスクコンポーネントを使用します。異なるサイズのディスクコンポーネントでストライプ化すると、ディスク領域に使用不可能な部分が生まれます。
ストライプ化する際に異なるサイズのスライスを使用した場合、ディスク容量は最小サイズのスライスの倍数に制限されます。
連結は、(他のメタデバイスではなく) スライスからのみ作成されます。
ディスクジオメトリ (幾何学的配置) の異なるスライスを使用しません。
可能ならば、連結方式メタデバイスのコンポーネントを、異なるコントローラとバス上に分散配置します。
連結では、ストライプ化よりも CPU サイクルが短いので、小さなランダム入出力や均一な入出力分布の場合でも、うまく機能します。
上記のストライプと連結のガイドラインを参照してください。
ディスクとコントローラ - サブミラーのスライスは、サブミラーごとに異なるディスクとコントローラ上に保持します。同じミラー中の複数のサブミラーのスライスが、同じディスクに置かれている場合、データの保護能力は著しく低下します。同様に、コントローラとそれに接続しているケーブルは、ディスクよりも故障する傾向が高いため、サブミラーは異なるコントローラにまたがって構成します。これによってミラーのパフォーマンスも改善されます。
同じディスク - 同じディスク上にはミラーを定義しません。同じドライブへの書き込みは同じ資源をめぐって競合し、1 つのドライブに障害が発生すると、すべてのデータが失われることになります。
読み書きパフォーマンス - ミラー化により、読み取りパフォーマンスは向上することがありますが、書き込みパフォーマンスは必ず低下します。ミラー化によって読み取りパフォーマンスが向上するのは、スレッド化された入出力や非同期入出力の場合に限られます。メタデバイスからシングルスレッド読み出しだけが行われる場合、パフォーマンスの向上は得られません。
同じサイズのサブミラー - 同じサイズのサブミラーを使用します。異なるサイズのサブミラーでは、ディスク領域に使用不可能な部分が生まれます。
同じタイプのディスクとコントローラ - 1 つのミラーでは同じタイプのディスクとコントローラを使用します。特に、古い SCSI や SMD の記憶装置の場合、モデルやブランドの異なるディスクやコントローラ間で、パフォーマンスが大幅に異なることがあります。1 つのミラーに異なるパフォーマンスレベルの製品が混在すると、パフォーマンスが著しく低下することがあります。
サブミラーに対する読み書きオプションの設定 - ミラーの読み取りオプションを試してみると、パフォーマンスが向上することがあります。たとえば、デフォルトの読み取りモードでは、ディスク間の読み取りをラウンドロビン方式 (巡回式) で切り替えます。この方法は、UFS のマルチユーザー・マルチプロセスアクティビティでは最適なことが多いため、デフォルトとなっています。
場合によっては、ジオメトリック (幾何学的配置) オプションを使用すると、ヘッドの移動時間とアクセス時間を最小限に抑えることによって、パフォーマンスが向上することもあります。このオプションが最も有効なのは、ディスクあたり 1 つのスライスしかない場合、一度に 1 つのプロセスだけがスライス / ファイルのシステムを使用する場合、入出力パターンがきわめて連続的に行われる場合、すべてのアクセスが読み取りである場合です。
ミラーオプションを変更するには、「ミラーのオプションの変更方法 (DiskSuite ツール)」を参照してください。
ミラーのマウント - 必ずミラーデバイスを直接マウントしてください。オフラインであって読み取り専用でマウントされている場合を除いて、サブミラーを直接マウントしてはなりません。サブミラーの一部であるスライスも直接マウントしてはなりません。これを行うと、データの破壊やシステムクラッシュが発生することがあります。
swap のミラー化 - すべての swap デバイスをチェックするには、swap -l を使用します。swap と指定されたスライスは、別々にミラー化しなければなりません。
20% 書き込みのルールに従う - パリティ計算が複雑であるため、書き込みがおよそ 20% を超えるメタデバイスは、RAID5 メタデバイスのデバイスとはなりません。データの冗長性が必要な場合は、ミラー化を検討してください。
「スライス消費型」RAID5 メタデバイスの欠点 - RAID5 メタデバイスに含まれるスライスが増大するほど、コンポーネントが故障した場合に読み書き操作の時間が長くなります。
RAID5 メタデバイスはミラー化できません。
RAID5 メタデバイスとストライプ化のガイドライン - ストライプ化のガイドラインは、RAID5 メタデバイスの構成にも適用されます。「ストライプ化のガイドライン」を参照してください。
異なるコントローラを使用する - RAID5 デバイスを作成する場合、コントローラとそれに接続しているケーブルはディスクに比べて故障する可能性が高いため、個々のコントローラにまたがってスライスを使用します。これにより、ミラーのパフォーマンスも向上します。
同じサイズのスライスを使用する - 同じサイズのディスクスライスを使用します。異なるサイズのスライスから成る RAID5 メタデバイスを作成すると、ディスク領域に使用不可能な部分が生まれます。
飛び越し値 - これはメタデバイスの作成時に設定できます。その後では、値を変更することはできません。デフォルトの飛び越し値は 16K バイトです。これは多くのアプリケーションに対して適当な値です。RAID5 メタデバイス内のさまざまなスライスがさまざまなコントローラに置かれており、メタデバイスに対するアクセスが主に多量の順次アクセスである場合、32K バイトの飛び越し値を指定するとパフォーマンスが向上することがあります。
RAID5 メタデバイスへの連結 - 既存の RAID5 に新しいスライスを連結すると、連結によるデータは連続しているため、メタデバイス全体のパフォーマンスに影響を与えます。データは、すべてのコンポーネントを通じてストライプ化されません。メタデバイスの元のスライスでは、すべてのスライスを通じてデータとパリティがストライプ化されます。連結方式スライスではこのストライプが失われるが、コンポーネントの入出力中にはパリティが使用されるため、データはエラーから回復することができます。
連結方式スライスの場合、どの領域でもパリティをストライプ化しないという意味で、事情が異なります。したがって、スライスの内容全体をデータに使用できます。
スライスが連結されると、多量の書き込みや順次書き込みに対するパフォーマンス上のメリットが失われます。
ロギングデバイスとマスターデバイスの場合 - 同じトランスメタデバイスに属するロギングデバイスとマスターデバイスを、異なるドライブとコントローラに置きます。
トランスメタデバイスと共有ロギングデバイスの場合 - トランスメタデバイスは、メタデバイスのロギングデバイスを共有できます。しかし、きわめて負荷の重いファイルシステムには、別のログをもたせてください。
小規模なファイルシステム - 読み取り操作が大部分の小規模なファイルシステムでは、おそらくログに記録する必要はありません。
ロギングデバイスのミラー化 - 可能な限り、すべてのロギングデバイスをミラー化します。デバイスエラーによってログ中のデータが失われると、ファイルシステムが不整合な状態となり、fsck(1M) を使用しても、ユーザーの介入なしでは修復できない可能性があります。
大きなロギングデバイスを使用すると、大きな多重度 (concurrency) が得られます。
一時的な修復手段としてのホットスペア - ホットスペアは、そのまま永続的に構成中に組み込まれて使用されるように設計されていません。修復が済んだスライスや新しいスライスと交換する必要があります。
ホットスペアと状態データベースの複製 - ホットスペアには状態データベースの複製を置くことができません。
コントローラをまたがった割り当て - 理想的には、ホットスペア集合に追加するスライスは、異なるコントローラに接続します。これによって、コントローラのエラーや障害に対するデータの可用性を保証します。
不適切なサイズのホットスペア - 不適切なサイズのホットスペアを、サブミラーや RAID5 メタデバイスに関連付けしないでください。
使用中とマークされたホットスペア - ホットスペア集合内のすべてのホットスペアに「使用中」のマークがないことを確認してください。
1 面のミラーとホットスペア - 1 面ミラーに含まれるサブミラーには、ホットスペア集合を割り当てないでください。
ホットスペアは適合した順に使用される - 異なるサイズのホットスペアをホットスペア集合に追加する場合は、小さなスライスから追加していきます。
メタデバイスの配下にあるスライスには、ファイルシステムをマウントしないでください。任意のメタデバイスにスライスが使用された場合、そのスライスをファイルシステムとしてマウントしてはなりません。可能ならば、メタデバイスとして使用する予定の物理デバイスは、起動する前にマウント解除します。たとえば、UFS 用のトランスメタデバイスを /etc/vfstab ファイルに作成した場合、そのトランスメタデバイス名はマウントおよび fsck を行うデバイスとして指定します。
すべての物理デバイスにはディスクラベルが必要であり、通常は install、format、fmthard などのプログラムによって作成されます。このラベルは、ラベルに定義された複数の論理パーティションに表示できます。ラベルを含んだ物理パーティションは、ラベルを含んだブロックに対するユーザーの書き込みを許してはなりません。通常、これはブロック 0 である。UNIX のデバイスドライバでは、ユーザーがこのラベルに上書きできます。
DiskSuite は、システム上で実行できるメタデバイスの再構成に対しては、監査トレールを提供しません。つまり、DiskSuite は C2 セキュリティをサポートしません。