この章では、共有ディスクについて解説します。次の表を参考にして、必要な箇所を探してください。
共有ディスクセット (または単にディスクセット) とは、排他的に共有できる (同時に 1 台のホストのみが使用できる) メタデバイスやホットスペアを含む共有ディスクドライブの集まりです。現時点では、SPARCstorage Array ディスクでのみ、ディスクセットをサポートしています。
ディスクセットは、データの重複性と可用度を高めます。1 台のホストが故障しても、他のホストが故障したホストのディスクセットを引き継ぐことができます。
各ホストはディスクセットを制御できますが、他のホストの制御下にあるディスクセットをアクセスすることはできません。
ディスクセットは、Solstice HA の他、サポートされている他社製の HA フレームワークで使用することを目的としています。 DiskSuite 単独で耐障害性を実現するために必要な機能のすべてを提供しているわけではありません。
共有ディスクセットに加えて、各ホストはローカルディスクセットを持っています。ローカルディスクセットは、共有ディスクセットに含まれないホストのすべてのディスクから構成されます。ローカルディスクセットは、特定のホストに属します。ローカルディスクには、そのホストの構成を記録したメタデバイス状態データベースが格納されます。
共有ディスクセット上のメタデバイスおよびホットスペア集合は、そのディスクセットのドライブのみから構成されます。ディスクセットに作成したメタデバイスは、物理スライスと同じように使用できます。しかしディスクセットでは、/etc/vfstab ファイルによるファイルシステムのマウントをサポートされません。
同じように、ローカルディスクセット上のメタデバイスやホットスペア集合は、ローカルディスクセットのドライブのみから構成されます。
ディスクセットにディスクを追加すると、DiskSuite はディスクセット上に状態データベースの複製を自動的に作成します。ディスクセットにドライブを追加すると、DiskSuite は、ディスクセットの状態データベースの複製をそのドライブに配置できるように、ドライブのパーティションを切り直します。ドライブのパーティションが切り直されるのは、スライス 7 が正しく設定されていない場合のみです。各ドライブでは、スライス 7 用に少しずつ領域が予約されています。残りの部分はスライス 0 に割り当てられます。パーティションを切り直すと、ドライブ上の既存のデータは失われます。ディスクセットにドライブを追加すると、スライス 7 については変更できませんが、他の部分については必要に応じて改めてパーティションを切り直すことができます。
ローカルディスクセットを管理する場合とは異なり、ディスクセットのメタデバイス状態データベースを手作業で作成したり削除したりする必要はありません。DiskSuite は、適切な数の状態データベースの複製 (スライス 7 に常駐) を、ディスクセットのすべてのドライブに分散させます。必要であれば、状態データベースの複製を手作業で管理することもできます (『Solstice DiskSuite 4.2.1 ユーザーズガイド』を参照) 。
ディスクセットはローカルな (二重に接続されていない) 使用形態を対象とはしていません。
ディスクセットには、次の形式で名前が付けられます。
/dev/md/setname
共有ディスクセット上のメタデバイスには、次の形式で名前が付けられます。
/dev/md/setname/{dsk | rdsk}/dnumber
setname はディスクセット名で、number はメタデバイス番号 (通常は 0 〜 127) です。
ホットスペア集合名は setname/hspxxx で、xxx は 000 〜 999 の数値です。
ローカルディスクセット上のメタデバイスには、DiskSuite の標準メタデバイス命名規則が適用されます (表 1-4 を参照) 。
ディスクセットの最大数は 32 個 (デフォルトは 4 個) です。実際の共有ディスクセット数は、構成値より 1 つ少なくなります (ローカルディスクセットの分を差し引くため) 。
現時点では、ディスクセットは SPARCstorage Array ドライブでのみサポートされています。SCSI ドライブではサポートされていません。
ディスクセットを構成しているドライブの過半数が動作していないとディスクセットはアクセス不能になるため、3 つ以上の SPARCstorage Array を使用してください。
共有ディスクに接続されている 2 つのホストは、「対称的」でなければなりません。共有ディスクドライブも同じでなければなりません (次の項目を参照してください) 。
共有ディスクドライブには、両方のホストで同じデバイス番号 (c#t#d#) を付けなければなりません。ディスクドライブのメジャー/マイナー番号も同じでなければなりません。両方のホストでマイナー番号が異なっていると、ディスクセットにドライブを追加した時点で、 "drive c#t#d# is not common with host xxxx" というメッセージが表示されます。また、共有ディスクは、同じドライバ名 (ssd) を使用しなければなりません。ディスクセットで共有ディスクドライブを設定する方法については、『Solstice DiskSuite 4.2.1 ユーザーズガイド』を参照してください。
シングルホスト構成でもディスクセットはサポートされていますが、ディスクセットの「予約」と「解放」を手作業で行わなければなりません (「ディスクセットの管理」を参照) 。HA 以外の環境では、この操作は非常に面倒です。
x86 プラットフォームでのディスクセット
x86 プラットフォームでは、ディスクセットはサポートされていません。
ディスクセットを作成するには、root をグループ 14 に登録するか、各ホストの /.rhosts ファイルに他のホストを指定したエントリを作成する必要があります。
/etc/vfstab ファイルを介した、ディスクセットのメタデバイス上にあるファイルシステムのブート時のマウント
ディスクセットのメタデバイス上にあるファイルシステムを /etc/vfstab ファイルを介してブート時にマウントすることはできません。必要なディスクセット RPC デーモン (rpc.metad および rpc.metamhd) が、ブートプロセス中の (このようなマウントを行うために) 必要なタイミングで起動しないためです。また、リブート中にはディスクセットの所有権も失われます。
図 5-1 に、2 つのディスクセットを使用した構成の例を示します。
この構成では、ホスト A とホスト B がディスクセット A および B を共有しています。どちらのホストも、共有していないローカルディスクセットを持っています。ホスト A が故障すると、ホスト B がホスト A の共有ディスクセット (ディスクセット A) の制御を引き継ぎます。同じように、ホスト B が故障すると、ホスト A がホスト B の共有ディスクセット (ディスクセット B) の制御を引き継ぎます。
ディスクセットの作成と構成は、DiskSuite のコマンド行インタフェース (metaset(1M) コマンド) を使用して行わなければなりません。ディスクセットを作成した後は、DiskSuite ツールまたはコマンド行ユーティリティを使用して、ディスクセット上の状態データベースの複製、メタデバイス、およびホットスペア集合を管理することができます。
ディスクセットにドライブを追加したら、ホストはディスクセットを予約 (確保) したり解放したりすることができます。ホストによってディスクセットが予約されると、他のホストはそのディスクセットのデータをアクセスできなくなります。ディスクセットを管理するためには、ホストがそのディスクセットを所有しているか、もしくは予約していなければなりません。ディスクセットに最初にドライブを追加したホストには、暗黙の所有権が与えられます。
現在のホストがディスクセットを独占できるように、各ドライブに対して SCSI の reserve コマンドが発行され、各ドライブが予約されます。ディスクセットの各ドライブは、予約が継続しているかどうかを毎秒調べられます。
ホストが予約してあるはずのドライブが予約されていないと判断された場合、ホストはパニックを起こします。こうすることで、2 つのホストが同時に同じドライブをアクセスすることによって生じるデータの消失が最小限に抑えられます。
ホストがディスクセットのドライブを使用するためには、そのディスクセットをまず予約しなければなりません。ホストは、2 とおりの方法でディスクセットを予約できます。
安全予約 − ディスクセットを安全に予約すると、DiskSuite は他のホストがそのディスクセットを予約しているかどうかをチェックします。他のホストがすでに予約している場合には、予約を要求したホストはそのディスクセットを予約することはできません。
強制予約 − ディスクセットを強制的に予約すると、DiskSuite は、他のホストがそのディスクセットを予約しているかどうかには関係なく、そのディスクセットを予約します。この方法は、ディスクセットをすでに予約しているホストがダウンしたか、通信不能になった場合に使用します。ディスクセットのすべてのディスクは新しいホストに引き継がれ、フェイルファースト (FailFast) が有効になります。メタデバイス状態データベースは、予約を行ったホストに読み取られ、ディスクセットで構成されている共有メタデバイスがアクセス可能になります。この時点で他のホストがディスクセットを予約していた場合には、予約が失われたためにパニックになります。
通常は、ディスクセットを共有する 2 つのホストが協調して、同時点では 1 つのホストがディスクセットのドライブを予約するようにします。通常の状況とは、両方のホストが動作していて、互いに通信している状態を意味します。
ディスクセットの解放が必要になる場合があります。ディスクセットのドライブに対して保守を実行する場合などは、ディスクセットを解放しておくと便利です。解放されたディスクセットは、ホストからアクセスできなくなります。ディスクセットを共有しているホストが両方ともディスクセットを解放すると、どちらのホストもそのディスクセットのドライブをアクセスできなくなります。