RAID0 ボリューム

RAID0 ボリュームはスライスだけから成るボリュームで、直接使用したり、RAID1 ボリューム (ミラー) やトランザクションボリュームの基本構築ブロックとして使用します。RAID0 ボリュームには次の 3 種類があります。連結ストライプ連結ストライプです。

実際には、2 種類の RAID0 ボリューム、連結ボリュームとストライプ化ボリュームが代表的です。(連結ストライプは、スライスを連結して本来の構成から「応用化」されたストライプ化ボリュームにすぎません。)

RAID0 ボリュームにより、ディスクの記憶容量をすばやく簡単に拡張できます。RAID0 ボリュームの欠点はデータに冗長性がないことです。ミラーや RAID5 ボリュームはデータを冗長化することができます。 (RAID0 ボリュームでは 1 つでもスライス障害が発生するとデータが失われます。)

次を除いて、どのファイルシステムにも複数のスライスを含む RAID0 ボリュームを使用できます。


注 - ルート (/)、/usr、swap、/var、または /opt をミラー化する場合は、サブミラーとして動作する一方向の連結 (単一スライスの連結) にファイルシステムを配置します。この一方向の連結は、他の連結で構成されたサブミラーによってミラー化されます。


連結ボリューム (連結)

連結ボリューム連結とも呼ばれ、データがディスクスライスに直列に隣接して配置され 1 つの論理記憶領域単位を構成しているボリュームです。

連結ボリュームを使用すると複数のスライスの容量が論理的に連結され、記憶容量が増加します。記憶容量を増やしたいとき、連結ボリュームにさらにスライスを追加できます。

連結ボリュームにより、オンラインのまま記憶容量やファイルシステムのサイズを動的に拡張できます。連結ボリュームで、他のスライスが現在使用中でもスライスを追加できます。


注 - ストライプ化ボリュームの容量を増やすには、連結ストライプを構築する必要があります (連結ストライプを参照)。


連結ボリュームでは、マウントされている使用可能な UFS ファイルシステムをシステムを停止させず拡張することもできます。一般に、連結ボリュームの総容量は連結ボリュームの全スライスの合計サイズと同じです。連結に状態データベース複製のスライスが含まれている場合、連結の総容量はスライス合計から複製用の領域を差し引いたものです。

1 つのスライスから連結ボリュームを作成することもできます。たとえば、単一スライスの連結ボリュームを作成することもできます。さらに容量が必要なときは、後からこの連結ボリュームにスライスを追加できます。

連結には他のボリューム (d0、d1 など) と同じような名前があります。ボリュームの名前については、「ボリュームの規則」を参照してください。

連結ボリュームの規則

連結ボリュームはいつ作成するか

既存のデータセット (ファイルシステムなど) の容量を拡大する場合に作成します。

連結は、小規模のランダム I/O や均等に分散している I/O で効果を発揮します。

連結に制限があるか

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

連結ボリュームはどのくらいの容量にできるか

最大 1 テラバイトです。

ストライプ化ボリューム (ストライプ)

ストライプ化ボリュームストライプとも呼ばれ、複数のスライスにデータを配列するボリュームです。ストライピングは複数のスライスで同じサイズのデータセグメントが交互に切り替わって 1 つの論理記憶容量単位を構成します。これらのセグメントはインタリーブ式ラウンドロビンになっており、連結された容量は各スライスから代わるがわるに構成されます。その結果、トランプを混ぜて切ったような状態になります。


注 - ストライプ化ボリュームは「ストライプ」と呼ばれることがあります。また「ストライプ」はストライプ化連結の構成要素ブロックを表すこともあります。「ストライプ化する」とは、ディスクの一部をチャンクしたり、チャンクを仮想デバイス (ボリューム) にマップしてディスクの I/O 要求を展開することです。また、ストライピングは連結と同様に RAID レベル 0 として分類されます。


ストライピングも連結もディスクスライスにデータを分散させる方法ですが、ストライピングはディスクスライスにデータチャンクを交互に配置し、連結はデータをディスクスライスの「端から端まで」に分散します。

連結ボリュームの逐次 I/O 操作では、拡張ストレージは最初のスライスから全ブロックを読み取り、次に 2 番目のスライスから全ブロックを読み取り、以下同じように読み取ります。

ストライプ化ボリュームの逐次 I/O 操作では、拡張ストレージは最初のスライスのブロックセグメント (インタレース と呼ばれる) の全ブロックを読み取り、次に 2 番目のスライスのブロックセグメントの全ブロックを読み取り、以下同じように読み取ります。

連結ボリュームでもストライプ化ボリュームでも、I/O はすべて並列で発生します。

ストライプ化ボリュームの規則

ストライプ化ボリュームを作成する理由

並列でデータにアクセスするとパフォーマンスが向上し、容量も増大するからです。新しいファイルシステムやデータセットには必ずストライプ化ボリュームを使用してください。

ストライピングにより、複数のコントローラでデータに同時にアクセスできます (並列アクセス)。並列アクセスでは、ボリュームの全ディスクは I/O 要求へのサービスでほとんどビジー状態になるので I/O スループットが向上します。

ストライピングは、大規模な逐次 I/O や 不均等に分散している I/O で効果を発揮します。

ストライピングの制限

既存のファイルシステムを直接ストライプ化ボリュームに変換することはできません。ファイルシステムをストライプ化ボリュームに配置する必要がある場合は、ファイルシステムのバックアップを取り、ストライプ化ボリュームを作成してから、ファイルシステムをストライプ化ボリュームに戻します。

ストライプ作成時には、異なるサイズのスライスを使用しないでください。未使用のディスクスペースが作成されてしまいます。

インタレース値とは何か

ストライプ化ボリュームの論理データチャンクのサイズで、単位は K バイト、M バイト、ブロックです。アプリケーションによりますが、様々なインタレース値を使うことによって、設定のパフォーマンスが向上させることが可能です。パフォーマンスは I/O を行う複数のディスクアームによって向上します。I/O 要求がインタレースサイズよりも大きいとパフォーマンスが向上します。

拡張ストレージのデフォルトのインタレース値

16K バイトです。

インタレース値は設定できるか

設定できます。ストライプ化ボリュームを新規作成する場合、コマンド行か拡張ストレージツールで設定します。ストライプ化ボリュームを作成すると、インタレース値は変更できません。

既存のストライプ化ボリュームにインタレース値は設定できるか

設定できません。(ただし、データをバックアップしてストライプ化ボリュームを削除し、新しいインタレース値を設定したストライプ化ボリュームを新規作成してから、データを復元することはできます。


注 - RAID5 ボリュームもインタレース値を使用します。RAID5 ボリュームを参照してください。


連結ストライプ

連結ストライプとは、追加スライス (ストライプ) を連結して拡張されたストライプ化ボリュームです。

連結ストライプの規則

連結ストライプを使用する理由

既存のストライプ化ボリュームはこの方法でしか拡張できないからです。


注 - 拡張ストレージツールで既存のストライプ化ボリュームに複数のスライスをドラッグすると、スライスを連結化したりストライプ化できます。metattach(1M) コマンドを使って既存のストライプ化ボリュームに複数のスライスを追加する場合は、ストライプとして追加されます。


連結ストライプにインタレース値を設定する方法

ストライプレベルで、拡張ストレージの「ストライププロパティ」ウィンドウを使用するか、metattach(1M) コマンドの -i オプションを使用します。連結ストライプのストライプには、それぞれ独自のインタレース値が設定できます。連結ストライプを最初から作成する場合、特定のストライプにインタレース値を指定しなければ、以前のストライプのインタレース値を引き継ぎます。

例 - 連結ストライプ

最初のストライプはディスク A から C の 3 つのスライスで構成されており、インタレース値は 16K バイトです。2 番目のストライプはディスク D と E の 2 つのスライスで構成されており、インタレース値は 32K バイトです。最後のストライプはディスク F と G の 2 つのスライスで構成されています。3 番目のストライプにはインタレースが指定されていないので、その前のストライプの値を引き継ぎます。この場合は 32K バイトです。逐次データチャンクのアドレスは、最初のストライプの容量がなくなるまでは最初のストライプに指定されます。チャンクの次のアドレスは 2 番目のストライプに指定されます。このストライプの容量がなくなると、チャンクのアドレスは 3 番目のストライプに指定されます。各ストライプのデータチャンクは、指定したインタレース値に従ってインタリーブされます。

簡易ボリュームと開始ブロック

複数スライスの RAID0 ボリュームを作成する場合、スライスがシリンダ 0 で始まると、スライスは最初のディスクシリンダをスキップします。ただし最初のスライスは例外です。たとえば、metastat(1M) コマンドで次のように出力されるとします。

# metastat d0

d0: Concat/Stripe
サイズ:3546160 blocks
ストライプ 0:(interface:32 blocks)
デバイス           開始ブロック  Dbase
c1t0d0s0                   0     No
c1t0d1s0                   1520  No
c1t0d2s0                   1520  No
c1t0d2s0                   1520  No
c1t1d0s0                   1520  No
c1t1d1s0                   1520  No
c1t1d2s0                   1520  No

この例では、最初のスライス以外はストライプ d0 の各スライスの開始ブロックは 1520 です。これは、最初のスライスを除いた全スライスの最初のディスクセクターにディスクラベルを保存するためです。メタディスクドライバは、マッピングがストライプ境界を越えてアクセスする場合は少なくともディスクの最初のセクターをスキップする必要があります。最初のセクターだけをスキップすると不規則なディスクジオメトリが作成されるので、ディスクの最初のシリンダはすべてスキップされます。これにより、高レベルのファイルシステムソフトウェア (UFS) でブロック割り当てを適切に最適化できます。このように、拡張ストレージはディスクラベルが上書きされないようにし、最初のシリンダを意図的にスキップします。

連結やストライプの全スライスでは最初のシリンダをスキップしない理由は UFS に関係しています。既存のファイルシステムから連結ボリュームを作成してさらに容量を追加する場合は、データが開始する位置が最初のシリンダなのでデータが失われます。