Solaris ボリュームマネージャの管理

第8章 RAID 0 (ストライプ方式および連結方式) ボリューム (概要)

この章では、Solaris ボリュームマネージャで使用できる RAID 0 ボリューム (ストライプ方式と連結方式) について説明します。 関連する作業については、第9章「RAID 0 (ストライプ方式および連結方式) ボリューム (作業)」を参照してください。

この章では、次の内容について説明します。

RAID 0 ボリュームの概要

RAID 0 ボリュームは、ストライプ方式と連結方式のどちらも、スライスまたはソフトパーティションから構成され、ディスクの記憶容量を拡張するために使用されます。 RAID 0 ボリュームは、そのまま使用することも、RAID 1 (ミラー) ボリュームや、トランザクションボリューム、ソフトウェアパーティションの基本構成ブロックとして使用することもできます。 RAID 0 ボリュームには、次の 3 種類があります。


コンポーネントとは、別の論理ボリュームの中で使用されるすべてのデバイス (スライスからソフトウェアパーティションまで) を意味します。


ストライプ方式ボリュームは、データをストライプのすべてのコンポーネントに均一に分散しますが、連結方式ボリュームはデータを、使用可能な最初のコンポーネントに書き込み、そのコンポーネントが満杯になると、次の使用可能なコンポーネントに書き込みます。 ストライプ方式ボリュームの連結は、単に、コンポーネントの追加によって元の構成が拡張されたストライプ方式ボリュームです。

RAID 0 ボリュームでは、ディスクの記憶容量をすばやく簡単に拡張できます。 ただし、RAID 1 や RAID 5 ボリュームとは異なり、RAID 0 ボリュームにはデータの冗長性はありません。 したがって、RAID 0 ボリュームのコンポーネントに 1 つでも障害が発生すると、データは失われます。

1 つのスライスを含む RAID 0 ボリュームは、任意のファイルシステムに使用できます。

複数のコンポーネントを含む RAID 0 ボリュームは、次のファイルシステムを除く、任意のファイシステムに使用できます。


ルート (/)、 /usrswap/var、または /opt をミラー化する場合は、そのファイルシステムを 1 面の連結またはストライプ (1 つのスライスで構成される単純連結) に置いて、サブミラーとして機能させます。 そして、この 1 面の連結 (サブミラー) を別のサブミラーでミラー化します。このサブミラーも連結でなければなりません。


RAID 0 (ストライプ方式) ボリューム

RAID 0 (ストライプ方式) ボリュームは、データを 1 つまたは複数のコンポーネント上に分散させたボリュームです。 ストライプ方式では、同じサイズのデータセグメントが 2 つ以上のコンポーネントに順に配置され、1 つの論理記憶ユニットが構成されます。 これらのセグメントはラウンドロビン (巡回的な) 方式でインターリーブされ、領域は各コンポーネントからメタデバイスに交互に割り当てられます。

ストライプ方式では、複数のコントローラがデータに同時にアクセスできます (並列アクセス)。 並列アクセスではボリュームのほとんどのディスクが入出力要求の処理でビジーになるため、入出力スループットが向上します。

既存のファイルシステムをストライプに直接変換することはできません。 既存のファイルシステムをストライプに置くためには、ファイルシステムのバックアップをとり、ストライプを作成してから、ファイルシステムをストライプに復元する必要があります。

ストライプ方式で順次入出力操作を行うと、Solaris ボリュームマネージャは、先頭のコンポーネントからブロックセグメント (飛び越しと呼びます) 1 つ分のブロックを読み取り、次に 2 番目のコンポーネントのブロックセグメント 1 つ分のブロックを読み取るという処理を繰り返します。

連結方式の順次入出力操作では、Solaris ボリュームマネージャは、先頭のコンポーネントからすべてのブロックを最初に読み取り、次に 2 番目のコンポーネントのすべてのブロックを読み取るという処理を繰り返します。

連結方式でもストライプ方式でも、すべての入出力は並列に実行されます。

ストライプ方式の飛び越し値

飛び越し値は、ストライプ上の論理データセグメントのサイズに等しく、K バイト、M バイト、またはブロック数で表わされます。 アプリケーションによっては、飛び越し値を変えることによって性能が向上することがあります。 性能の向上は、入出力要求をいくつかのディスクアームを使って処理することによって達成されます。 性能の向上が期待できるのは、入出力要求が飛び越し値よりも大きい場合です。


RAID 5 ボリュームも飛び越し値を使用します。 詳細については、「RAID 5 ボリュームの概要」を参照してください。


飛び越し値は 、ストライプを作成するときに設定できます。あるいは、Solaris ボリュームマネージャのデフォルト値である 16K バイトを使用することもできます。 ただし、ストライプを作成した後では飛び越し値を変更できません。 飛び越し値を変更するときは、データのバックアップをとり、ストライプを削除し、新しい飛び越し値で新しいストライプを作成してから、データを復元します。

シナリオ RAID 0 (ストライプ方式) ボリューム

図 81 に、3 つのコンポーネント (ディスク) からなるストライプ方式ボリュームの例を示します。

Solaris ボリュームマネージャは、このボリュームのデータを各コンポーネントに書き込む場合、チャンク 1 のデータをディスク A、チャンク 2 のデータをディスク B、チャンク 3 のデータをディスク C にそれぞれ書き込みます。次に、チャンク 4 のデータをディスク A、チャンク 5 のデータをディスク B、チャンク 6 のデータをディスク C にそれぞれ書き込み、同じ処理を繰り返します。

飛び越し値は各チャンクのサイズと同じ値に設定されています。 このストライプ方式 d2 の合計容量は、最小コンポーネントのサイズにコンポーネント数を掛けた値です。 (次の例に示す各スライスのサイズが 2G バイトであれば、d2 は 6G バイトです) 。

図 81 RAID 0 (ストライプ方式) の例

3 つの物理スライスから交互にとられた 6 つの飛び越し幅が、単一の論理ボリュームとしてまとめられています。

RAID 0 (連結方式) ボリューム

連結方式ボリューム (または連結) は、個々のコンポーネント内にデータを順番に隣接して配置し、1 つの論理記憶ユニットを構成します。

連結方式では、いくつかのコンポーネントの容量を結合することによって記憶容量を拡張します。 したがって、記憶容量の要件に応じてコンポーネントを追加できます。

連結方式では、記憶容量やファイルシステムのサイズをオンライン状態のまま動的に拡張できます。 連結方式ボリュームにコンポーネントを追加するときは、他のコンポーネントがアクティブであってもかまいません。


ストライプの容量を拡張するためには、ストライプを連結する必要があります。 「RAID 0 (ストライプ方式の連結) ボリューム 」を参照してください。


また、連結方式では、システムを停止しなくても、動作中の、マウントされている UFS ファイルシステムを拡張できます。 通常、連結方式ボリュームの合計容量は、すべてのコンポーネントの合計サイズと同じです。 ただし、このボリュームに状態データベースの複製を格納するスライスが含まれている場合には、連結の合計容量は、コンポーネントの合計から複製に予約されている領域を引いたものです。

連結方式ボリュームは、1 つのコンポーネントから作成することもできます。 後で記憶容量が必要になったら、新たにコンポーネントを追加することができます。


ルート (/)、swap/usr /opt、または /var ファイルシステムをミラー化する場合は、連結方式を使ってこれらのファイルシステムをカプセル化する必要があります。


シナリオ RAID 0 (連結方式)

図 82 に、3 つのコンポーネント (スライス) からなる連結の例を示します。

データブロック (チャンク) は、ディスク A から始まる個々のコンポーネントに順次、書き込まれます。したがって、ディスク A には論理チャンク 1 から 4 が、ディスク B には論理チャンク 5 から 8 が、ディスク C には論理チャンク 9 から 12 がそれぞれ書き込まれます。ボリューム d1の合計容量は 3 つのドライブの合計容量です。 したがって、各ドライブの容量が 2G バイトであれば、合計容量は 6Gバイトになります。

図 82 RAID 0 (連結方式) ボリュームの例

最初のスライスからすべての幅、次のスライスからすべての幅という順序でスライス 3 つからとられた飛び越し幅が、単一ボリュームとしてまとめられています。

RAID 0 (ストライプ方式の連結) ボリューム

ストライプ方式の連結は、コンポーネント (ストライプ) の追加によって容量が拡張されるストライプです。

ストライプ方式の連結の飛び越し値をストライプレベルで設定する場合は、Solaris 管理コンソール内の「拡張ストレージ」か metattach -i コマンドを使用します。 ストライプ方式の連結の各ストライプには、別々の飛び越し値を設定することができます。 ストライプ方式の連結を新たに作成する場合は、特定のストライプに飛び越し値を指定しないと、直前のストライプの飛び越し値が使用されます。

例 RAID 0 (ストライプ方式の連結) ボリューム

図 83 に、3 つのストライプを連結した d10 の例を示します。

最初のストライプは 3 つのスライス (A から C) から構成され、飛び越し値は16K バイトです。 2 つめのストライプは 2 つのスライス (D と E) から構成され、飛び越し値は 32K バイトです。 最後のストライプは 2 つのスライス (F とG) から構成されています。 このストライプには飛び越し値が指定されていないため、その前のストライプの飛び越し値 (32K バイト) が継承されます。 データチャンクはまず最初のストライプに順次、書き込まれます。このストライプが満杯になると、 チャンクは 2 つめのストライプに書き込まれます。 さらに、このストライプが満杯になると、チャンクは 3 つめのストライプに書き込まれます。 各ストライプでは、データチャンクが、指定された飛び越し値に基づいてインタリーブされます。

図 83 複雑な RAID 0 (ストライプ方式の連結) の例

複数のストライプが連結されて、大型の単一論理 RAID 0 ボリュームとして提示されています。

RAID 0 ボリュームを作成するための背景情報

RAID 0 ボリュームの要件

RAID 0 ボリュームを使用するときは、次のことを考慮してください。

RAID 0 ボリュームの指針

シナリオ RAID 0 ボリューム

RAID 0 ボリュームは、記憶領域の結合やミラーの構築に必要な基本構築ブロックとして使用されます。 次の例では、第5章「Solaris ボリュームマネージャの構成と使用」のサンプルシステムを使用して、記憶領域の拡張や既存のファイルシステム (ルート (/) を含む) のミラー化に RAID 0 ボリュームをどのように使用できるかを示します。

サンプルシステムには比較的小さい (9G バイト) ディスク群がありますが、アプリケーションによっては、これよりも大きい記憶領域が必要になる場合があります。 領域を拡張する (そして性能を高める) ためには、複数のディスクに渡るストライプを作成する必要があります。 たとえば、c1t1d0c1t2d0c1t3d0 c2t1d0c2t2d0、および c2t3d0 を、これらのディスク全体に渡るスライス 0 として構成できます。 これによって、同じコントローラの 3 つのディスクからなるストライプはおよそ 27G バイトの記憶領域となり、アクセスも速くなります。 2 番目のコントローラに属する 2 番目のストライプは冗長性を確保するために使用できます。これについては第11章「RAID 1 (ミラー) ボリューム (作業)」を、具体的には 「シナリオ RAID 1 ボリューム (ミラー)」を、それぞれ参照してください。