簡易メタデバイス

簡易メタデバイスはスライスだけから構成されるメタデバイスで、直接使用したりミラーやトランスメタデバイスの基本構築ブロックとして使用します。簡易メタデバイスには次の 3 種類があります。連結メタデバイスストライプ化メタデバイス連結ストライプ化メタデバイスです。

実際には、2 つの基本的な簡易メタデバイスである連結メタデバイスとストライプ化メタデバイスが代表的です。(連結ストライプは、スライスを連結して本来の構成から「応用化」されたストライプ化メタデバイスにすぎません。)

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

次を除いて、どのファイルシステムにも複数のスライスを含む簡易メタデバイスを使用できます。


注 - ルート (/)、/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 番目のストライプに指定されます。各ストライプのデータチャンクは、指定したインタレース値に従ってインタリーブされます。

 

簡易メタデバイスと開始ブロック

複数スライスの簡易メタデバイスを作成する場合、スライスがシリンダ 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 に関係しています。既存のファイルシステムから連結メタデバイスを作成してさらに容量を追加する場合は、最初のシリンダがデータの開始する位置になるためデータが失われます。