Solstice DiskSuite 4.2.1 リファレンス

シンプルメタデバイス

シンプルメタデバイスは、スライスのみから構成されるメタデバイスで、そのまま使用するか、ミラーやトランスメタデバイスの基本構築ブロックとして使用します。シンプルメタデバイスには、連結方式メタデバイスストライプ方式メタデバイス、およびストライプ方式で連結したメタデバイスの 3 種類があります。

多くの場合は、連結方式メタデバイスとストライプ方式メタデバイスが初めに採用されます (ストライプ方式で連結したメタデバイスは、スライスを連結することによって最初の構成から拡張されたストライプ方式メタデバイスと考えることができます) 。

シンプルメタデバイスを使用すると、ディスクの記憶容量をすばやく簡単に拡張することができます。短所は、シンプルメタデバイスではデータの冗長性が提供されないという点です。ミラーや RAID5 メタデバイスでは、データの冗長性を保証します。 (シンプルメタデバイスで特定のスライスに障害が発生すると、そのスライスのデータは失われます。)

シンプルメタデバイスは、以下を除くファイルシステム用のスライスで構成することができます。


注 -

ルート (/) 、/usrswap/var、または /opt をミラー化すると、1 面のサブミラーとして機能する単純連結 (1 つのスライスで構成される単純連結) にファイルシステムが配置されます。この単純連結は、単純連結される他のサブミラーによってミラー化されます。


連結方式メタデバイス

連結方式メタデバイス (または単に単純連結) は、ディスクスライス上でデータを直列に配置させて編成したメタデバイスで、1 つの論理記憶ユニットを構成します。

連結方式メタデバイスは、複数のスライスの容量を論理的に結合させてディスク領域を増やすために使用します。領域が不足してきたら、スライスを追加することができます。

連結方式メタデバイスを使用すれば、オンラインの状態で、記憶容量やファイルシステムサイズを増やすことができます。連結方式メタデバイスでは、メタデバイスのスライスが使用中であっても、新しいスライスを追加することができます。


注 -

ストライプ方式メタデバイスの領域を増やすためには、ストライプ方式の連結を構築しなければなりません (「ストライプ方式の連結」を参照) 。


連結方式メタデバイスでは、システムを動作させたままで、動作中の、マウントされている UFS ファイルシステムを拡張することができます。一般に、連結方式メタデバイスの容量は、構成するすべてのスライスの合計サイズに等しくなります。単純連結に状態データベースの複製が含まれる場合には、複製用のスライスの領域を除いたすべてのスライスの合計サイズが、単純連結の容量となります。

連結方式メタデバイスは、1 つのスライスだけでも構築できます。1 つのスライスだけで連結方式メタデバイスを作成しておき、後で領域が不足してきたら、新たにスライスを追加することができます。

連結方式メタデバイスには、他のメタデバイスと同じような名前 (d0d1 など) が付けられます。メタデバイス名についての説明は、表 1-4 を参照してください。

連結方式メタデバイスの規約

例 - 連結方式メタデバイス

図 2-1 に、3 つのスライス (ディスク) から構成される連結方式メタデバイスの例を示します。

データブロック (チャンク) は、ディスク A のスライスからすべてのスライスに渡って直列に書き込まれます。ディスク A には、論理チャンク 1 〜 4 が書き込まれます。ディスク B には論理チャンク 5 〜 8、ディスク C には論理チャンク 9 〜 12 が書き込まれます。メタデバイス d1 の合計容量は、3 つのドライブの合計容量となります。各ドライブの容量が 2 G バイトであれば、メタデバイス d1 の容量は 6 G バイトになります。

図 2-1 連結方式メタデバイスの例

Graphic

ストライプ方式メタデバイス

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


注 -

ストライプ方式メタデバイスを単にストライプと呼ぶこともありますが、ストライプ方式で連結されたメタデバイスの構成ブロックをストライプと呼ぶこともあります。「ストライプ化する」といった場合には、ディスクをチャンクに分割して、これらのチャンクを仮想デバイス (メタデバイス) に割り当てることによって、入出力要求を複数のディスクに分散させることを意味します。ストライプ化は、単純連結と同じように、RAID レベル 0 として分類されています。


ストライプ化も単純連結も複数のディスクスライスにデータを分散する方法ですが、ストライプ化の場合は、各ディスクスライスのチャンクに交互にデータを格納します。単純連結の場合は、1 つのディスクスライスが満杯になってから、次のディスクスライスに次のデータを格納します。

連結方式メタデバイスに対して順次入出力操作を行うと、DiskSuite は先頭スライスからすべてのブロックを読み取り、次のスライスからすべてのブロックを読み取り、という処理を繰り返します。

ストライプ方式メタデバイスに対して順次的な入出力操作を行うと、DiskSuite は先頭スライスからブロックセグメント単位 (飛び越しと呼ばれます) ですべてのブロックを読み取り、次のスライスのブロックセグメントからすべてのブロックを読み取り、という処理を繰り返します。

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

ストライプ方式メタデバイスの規約


注 -

RAID5 メタデバイスも飛び越し値を使用します。詳しい説明は、「RAID5 メタデバイス」を参照してください。


例 - ストライプ方式メタデバイス

図 2-2 に、3 つのスライス (ディスク) から構成されるストライプ方式メタデバイスの例を示します。

DiskSuite がストライプ方式メタデバイスのデータを物理ディスクに書き込む場合には、チャンク 1 のデータをディスク A、チャンク 2 のデータをディスク B、チャンク 3 のデータをディスク C に書き込みます。次に、チャンク 4 のデータをディスク A、チャンク 5 のデータをディスク B、チャンク 6 のデータをディスク C に書き込み、同じ処理を繰り返します。

飛び越し値は各チャンクのサイズと同じ値に設定されています。ストライプ方式メタデバイス d2 の合計容量は、最小スライスのサイズにスライス数を掛けた値になります (図 2-2 の各スライスのサイズが 2G バイトであれば、メタデバイス d2 の容量は 6G バイトになります) 。

図 2-2 ストライプ方式メタデバイスの例

Graphic

ストライプ方式の連結

ストライプ方式の連結は、ストライプ方式メタデバイスに追加のスライス (ストライプ) を単純連結して拡張したメタデバイスです。

ストライプ方式の連結の規約


注 -

DiskSuite ツールを使用して、複数のスライスを既存のストライプ方式メタデバイスまでドラッグすると、それらのスライスを単純連結にするか、ストライプにするかを尋ねられます。metattach(1M) コマンドを使用して複数のスライスを既存のストライプ方式メタデバイスに追加する場合には、ストライプとして追加しなければなりません。


例 - ストライプ方式の連結

図 2-3 に、3 つのストライプを連結したメタデバイス d10 を示します。

ストライプ 1 は、3 つのディスク (A 〜 C) から構成されており、飛び越し値は 16 K バイトです。ストライプ 2 は、2 つのディスク (D と E) から構成されており、飛び越し値は 32 K バイトです。ストライプ 3 は、2 つのディスク (F と G) から構成されています。ストライプ 3 に対しては飛び越し値が指定されていないため、ストライプ 2 から飛び越し値 (この場合は 32 K バイト) を継承しています。まず、ストライプ 1 に、チャンク 1 〜 12 がストライプ方式で割り当てられます。ストライプ 1 が満杯になると、今度はストライプ 2 にチャンク 13 〜 20 が割り当てられます。最後に、ストライプ 3 にチャンク 21 〜 28 が割り当てられます。各ストライプでは、指定された飛び越し値にしたがって、データチャンクがインタリーブされます。

図 2-3 ストライプ方式の連結の例

Graphic

シンプルメタデバイスと開始ブロック

複数のスライスで構成されるシンプルメタデバイスを作成すると、先頭以外のスライスでは、スライスがシリンダ 0 から開始されている場合には、先頭のディスクシリンダは無視されます。たとえば、metastat(1M) コマンドで次のようなリストが出力されたとします。


# metastat d0
 
d0: Concat/Stripe
    Size: 3546160 blocks
    Stripe 0: (interface: 32 blocks)
        Device              Start Block  Dbase
        c1t0d0s0                   0     No
        c1t0d1s0                   1520  No
        c1t0d2s0                   1520  No
        c1t0d2s0                   1520  No
        c1t1d0s0                   1520  No
        c1t1d1s0                   1520  No
        c1t1d2s0                   1520  No

このリストを見ると、最初のスライス以外は、すべてブロック 1520 から開始されていることがわかります。これは、最初のスライス以外のすべてのスライスでは、ディスクセクターの先頭にディスクラベルを保存するためです。メタデバイスドライバは、ストライプ境界を越えてアクセスをマッピングする場合には、最初のディスク以外の少なくとも先頭セクターをスキップしなければなりません。先頭セクターのみをスキップすると、ディスクのジオメトリ (幾何学的配置) が不規則になるため、これらのディスクでは先頭シリンダ全体をスキップしています。こうすることで、上位レベルのファイルシステムソフトウェア (UFS) が、ブロック割り当てを正しく最適化できるようになります。このため、DiskSuite ではディスクラベルの上書きを禁止しており、先頭シリンダを意図的にスキップしています。

単純連結またはストライプにおいて、先頭シリンダをスキップしないスライスが存在しますが、この理由は UFS 側にあります。既存のファイルシステムから連結方式メタデバイスを作成して、後から領域を追加すると、データが失われます。これは、先頭シリンダがデータの開始位置として認識されているためです。