この章では、Solaris ボリュームマネージャで使用できる RAID-0 ボリューム (ストライプ方式と連結方式) について説明します。関連する作業については、第 9 章「RAID-0 (ストライプ方式および連結方式) ボリューム (作業)」を参照してください。
この章では、次の内容について説明します。
RAID-0 ボリュームは、スライスまたはソフトパーティションで構成されます。これらのボリュームによって、ディスク記憶容量を拡張できます。RAID-0 ボリュームは、そのまま使用することもできますが、RAID-1 (ミラー) ボリュームおよびソフトパーティションの構成要素として使用することもできます。RAID-0 ボリュームには、次の 3 種類があります。
ストライプ方式ボリューム
連結方式ボリューム
連結ストライプ方式ボリューム
コンポーネントとは、別の論理ボリュームの中で使用されるすべてのデバイス (スライスからソフトウェアパーティションまで) を意味します。
ストライプ方式ボリュームは、データをボリュームのすべてのコンポーネントに均一に分散させますが、連結方式ボリュームはデータを、使用可能な最初のコンポーネントに書き込み、そのコンポーネントが満杯になると、次の使用可能なコンポーネントに書き込みます。連結ストライプ方式ボリュームは、単に、コンポーネントの追加によって元の構成が拡張されたストライプ方式ボリュームです。
RAID-0 ボリュームでは、ディスクの記憶容量をすばやく簡単に拡張できます。ただし、RAID-1 や RAID-5 ボリュームとは異なり、RAID-0 ボリュームにはデータの冗長性はありません。したがって、RAID-0 ボリュームのコンポーネントに 1 つでも障害が発生すると、データは失われます。
ストライプ方式ボリュームで順次入出力操作を行うと、Solaris ボリュームマネージャは、先頭のコンポーネントからブロックセグメント (飛び越しと呼ぶ) 1 つ分のブロックを読み取り、次に 2 番目のコンポーネントのブロックセグメント 1 つ分のブロックを読み取るという処理を繰り返します。
連結方式ボリュームの順次入出力操作では、Solaris ボリュームマネージャは、先頭のコンポーネントからすべてのブロックを最初に読み取り、次に 2 番目のコンポーネントのすべてのブロックを読み取るという処理を繰り返します。
連結方式ボリュームとストライプ方式ボリュームはどちらも、すべての入出力操作が並行して行われます。
1 つのスライスを含む RAID-0 ボリュームは、任意のファイルシステムに使用できます。
複数のコンポーネントを含む RAID-0 ボリュームは、次のファイルシステムを除く、任意のファイシステムに使用できます。
ルート (/)
/usr
swap
/var
/opt
オペレーティングシステムのアップグレードやインストール時にアクセスされるファイルシステム
ルート (/)、/usr 、swap、/var、 /opt のミラーを作成する場合は、このファイルシステムをサブミラーとして機能する、1 面の連結またはストライプ (1 つのスライスで構成される単純連結) に置きます 。そして、この 1 面の連結 (サブミラー) を別のサブミラーでミラー化します。このサブミラーも連結でなければなりません。
RAID-0 (ストライプ方式) ボリュームは、1 つ以上のコンポーネントにデータが配置されるボリュームです。ストライプ方式では、同じサイズのデータセグメントが 2 つ以上のコンポーネントに順に配置され、1 つの論理記憶ユニットが構成されます。これらのセグメントはラウンドロビン (巡回的な) 方式でインターリーブされ、領域は各コンポーネントからメタデバイスに交互に割り当てられます。
ストライプ方式ボリュームの容量を拡張するためには、連結ストライプ方式ボリュームを作成する必要があります。「RAID-0 (連結ストライプ方式) ボリューム」を参照してください。
ストライプ方式では、複数のコントローラがデータに同時にアクセスできます (並列アクセス)。並列アクセスではボリュームのほとんどのディスクが入出力要求の処理でビジーになるため、入出力スループットが向上します。
既存のファイルシステムをストライプに直接変換することはできません。既存のファイルシステムをストライプ方式ボリュームに置くには、ファイルシステムのバックアップを取り、ボリュームを作成してから、ファイルシステムをストライプ方式ボリュームに復元する必要があります。
飛び越し値は、ストライプ方式ボリューム上の論理データセグメントのサイズで、K バイト、M バイト、またはブロック数で表わします。アプリケーションによっては、飛び越し値を変えることによって性能が向上することがあります。性能の向上は、入出力要求をいくつかのディスクアームを使って管理することによって達成されます。性能の向上が期待できるのは、入出力要求が飛び越し値よりも大きい場合です。
RAID-5 ボリュームも飛び越し値を使用します。詳細については、「RAID-5 ボリュームの概要」を参照してください。
飛び越し値は 、ストライプ方式ボリュームを作成するときに設定できます。あるいは、Solaris ボリュームマネージャのデフォルト値である 16K バイトを使用することもできます。ただし、ストライプ方式ボリュームを作成した後では飛び越し値を変更できません。飛び越し値を変更するときは、データのバックアップを取り、ストライプ方式ボリュームを削除し、新しい飛び越し値で新しいストライプ方式ボリュームを作成してから、データを復元します。
図 8–1 に、3 つのコンポーネント (スライス) からなるストライプ方式ボリュームを示します。ラウンドロビン方式で、飛び越し値に基づいてボリュームコンポーネントにデータを書き込む方法も示します。
Solaris ボリュームマネージャは、ストライプ方式ボリュームのコンポーネントにデータを書き込むときに、飛び越し値の幅のデータブロックを ディスク A (飛び越し 1)、ディスク B (飛び越し 2)、および ディスク C (飛び越し 3) に書き込みます。Solaris ボリュームマネージャはこのパターンをさらに繰り返して、ディスク A (飛び越し 4)、ディスク B (飛び越し 5)、ディスク C (飛び越し 6) に書き込みます (以下同様)。
飛び越し値によって、スライスに 1 回に書き込むデータのサイズが設定されます。ストライプ方式ボリュームの合計容量は、最小コンポーネントのサイズにコンポーネント数を掛けた値です。(次の例に示す各スライスのサイズが 2G バイトであれば、ボリュームは 6G バイトです) 。
RAID–0 (連結方式) ボリュームは、個々のコンポーネントにデータを隣接して順番に配置し、1 つの論理記憶ユニットを形成します。
連結方式ボリュームでは、いくつかのコンポーネントの容量を結合することによって記憶容量を拡張します。したがって、記憶容量の要件に応じてコンポーネントを連結方式ボリュームに追加できます。
連結方式ボリュームでは、記憶容量やファイルシステムのサイズをオンライン状態のまま動的に拡張できます。連結方式ボリュームにコンポーネントを追加するときは、他のコンポーネントがアクティブであってもかまいません。
また、連結方式ボリュームでは、システムを停止しなくても、マウントされている動作中の UFS ファイルシステムを拡張できます。通常、連結方式ボリュームの合計容量は、ボリューム内の全コンポーネントの合計サイズと同じです。ただし、連結方式ボリュームに状態データベースの複製を格納するスライスが含まれている場合には、ボリュームの合計容量は、コンポーネントの合計から複製に予約されている領域を差し引いたものです。
連結方式ボリュームは、1 つのコンポーネントから作成することもできます。記憶容量が必要になってから、ボリュームにコンポーネントを追加できます。
ルート (/)、swap、/usr、 /opt、または /var ファイルシステムをミラー化する場合は、連結方式ボリュームを使ってこれらのファイルシステムをカプセル化する必要があります。
図 8–2 に、3 つのコンポーネント(スライス) からなる連結方式ボリュームを示します。飛び越し値に基づき、各スライスに順番に書き込むことによって、ボリュームコンポーネントにデータを書き込む方法も示します。
データブロックは、スライス A から各コンポーネントに順次書き込まれます。スライス A には論理データブロック 1 から 4 があり、ディスク B には論理データブロック 5 から 8 が格納され、ドライブ C には論理データブロック 9 から 12 が格納されます。ボリュームの総容量は、3 つのスライスの容量の合計です。したがって、各スライスの容量が 2G バイトであれば、ボリューム全体の容量は 6G バイトになります。
RAID–0 (連結ストライプ方式) ボリュームは、コンポーネント (ストライプ方式) を追加することによって拡張されたストライプです。
連結ストライプ方式ボリュームの飛び越し値をストライプレベルで設定する場合は、Solaris 管理コンソール内の「拡張ストレージ」か metattach -i コマンドを使用します。連結ストライプ方式ボリュームの各ストライプには、別々の飛び越し値を設定することができます。連結ストライプ方式ボリュームを新たに作成する場合は、特定のストライプに飛び越し値を指定しないと、ボリュームに追加された直前のストライプの飛び越し値が使用されます。
図 8–3 に、3 つのストライプの連結である、連結ストライプ方式ボリュームを示します。
最初のストライプは 3 つのスライス (A から C) から構成され、飛び越し値は16K バイトです。2 つめのストライプは 2 つのスライス (D と E) から構成され、飛び越し値は 32K バイトです。最後のストライプは 2 つのスライス (F とG) から構成されています。このストライプには飛び越し値が指定されていないため、その前に追加されたストライプの飛び越し値 (32K バイト) が継承されます。データブロックはまず最初のストライプに順次追加されます。このストライプが満杯になると、2 つめのストライプにデータブロックが追加されます。さらに、このストライプが満杯になると、データブロックは 3 つめのストライプに追加されます。各ストライプでは、データブロックが、指定された飛び越し値に基づいてインタリーブされます。
RAID-0 ボリュームを使用するときは、次のことを考慮してください。
コンポーネントを異なるコントローラに置くと、同時に実行できる読み取りや書き込みの数が増します。
既存のファイルシステムまたはデータからストライプを作成しないでください。作成するとデータが破壊されます。代わりに、連結方式を使用します。(既存のデータからストライプを作成することは可能ですが、その場合には、データのバックアップを取り、それをボリュームに復元する必要があります。)
ストライプには、同じサイズのディスクコンポーネントを使用します。異なるサイズのコンポーネントをストライプに使用すると、ディスク領域が無駄になります。
システムやアプリケーションの入出力要求に合わせてストライプの飛び越し値を設定します。
ストライプ方式や連結方式には複製データが含まれないため、このようなボリュームのコンポーネントに障害が発生した場合には、そのコンポーネントを交換し、ストライプまたは連結を作成し直してから、バックアップのデータを復元する必要があります。
ストライプや連結を再作成する場合には、障害が発生したコンポーネントと同じサイズのコンポーネントを新しいコンポーネントとして使用します。
連結方式は、ストライプ方式ほど CPU サイクルを必要としません。連結方式は、小規模のランダム入出力や均一に分散された入出力に適しています。
可能であれば、ストライプ方式や連結方式のコンポーネントを異なるコントローラやバスに配置します。個々のストライプを異なるコントローラに置くと、同時に実行できる読み取りや書き込みの数が増えます。
ストライプが置かれているコントローラに障害が発生した場合、別のコントローラが使用可能であれば、ディスクをコントローラに移動し、ストライプを再設定することによって、ストライプを新しいコントローラに「移動」できます。
ディスクの数: ストライプの構成を性能要件に基づいて決める場合もあります。たとえば、特定のアプリケーションで 10.4M バイト/秒の性能を必要とする場合で、各ディスクの性能が約 4M バイト/秒であるとします。ストライプに必要なディスクスピンドルの数は、次の式で計算できます。
10.4 Mbyte/sec / 4 Mbyte/sec = 2.6
この例では、入出力操作を並行して行なうために 3 つのディスクが必要です。
RAID-0 ボリュームは、より複雑な記憶装置構成を実現する、またはミラーを構築するための基本構成ブロックになります。次の例では、第 5 章「Solaris ボリュームマネージャの構成と使用」のシナリオを使用して、記憶領域の拡張や既存のファイルシステム (ルート (/) を含む) のミラー化に RAID-0 ボリュームをどのように使用できるかを示します。
シナリオのシステムには、比較的小さい (9G バイト) ディスクの集合が与えられていますが、アプリケーションによっては、それ以上の記憶領域が必要です。領域を拡張する (そして性能を高める) には、複数のディスクに渡るストライプを作成します。たとえば、c1t1d0、c1t2d0、 c1t3d0、c2t1d0、 c2t2d0、および c2t3d0 を、これらのディスク全体にまたがるスライス 0 として構成できます。これによって、同じコントローラの 3 つのディスクからなるストライプはおよそ 27G バイトの記憶領域となり、アクセスも速くなります。2 つめのコントローラの 2 つめのストライプは、冗長性を確保する目的で使用できます。第 11 章「RAID-1 (ミラー) ボリューム (作業)」と、具体的には 「シナリオ—RAID-1 ボリューム (ミラー)」を参照してください。