Logical Domains Manager を使用して、ドメイン間の依存関係を確立できます。依存する 1 つ以上のドメインを持つドメインは、マスタードメインと呼ばれます。別のドメインに依存するドメインは、スレーブドメインと呼ばれます。
master プロパティーを設定することによって、各スレーブドメインに最大 4 つのマスタードメインを指定できます。たとえば、次に示すコンマで区切られたリストでは、pine スレーブドメインに 4 つのマスタードメインを指定しています。
# ldm add-domain master=alpha,beta,gamma,delta pine
alpha、beta、gamma、および delta マスタードメインはすべて、stop の失敗ポリシーを指定します。
各マスタードメインには、マスタードメインに障害が発生した場合のスレーブドメインの動作を指定できます。たとえば、マスタードメインに障害が発生した場合、そのスレーブドメインでパニックを発生させる必要があることがあります。スレーブドメインに複数のマスタードメインがある場合は、各マスタードメインが同じ失敗ポリシーを持つ必要があります。そのため、失敗した最初のマスタードメインは、定義済みの失敗ポリシーをそのすべてのスレーブドメインでトリガーします。
マスタードメインの障害ポリシーは、failure-policy プロパティーに次のいずれかの値を設定することによって制御できます。
ignore は、すべてのスレーブドメインを無視します
panic は、すべてのスレーブドメインにパニックを発生させます (ldm panic コマンドを実行することと似ています)
reset は、すべてのスレーブドメインをただちに停止して再起動します (ldm stop -f コマンド、ldm start コマンドの順に実行することと似ています)
stop は、すべてのスレーブドメインを停止します (ldm stop -f コマンドを実行することと似ています)
この例では、マスタードメインの障害ポリシーが次のように指定されています。
primary# ldm set-domain failure-policy=ignore apple primary# ldm set-domain failure-policy=panic lemon primary# ldm set-domain failure-policy=reset orange primary# ldm set-domain failure-policy=stop peach primary# ldm set-domain failure-policy=stop alpha primary# ldm set-domain failure-policy=stop beta primary# ldm set-domain failure-policy=stop gamma primary# ldm set-domain failure-policy=stop delta
このメカニズムを使用して、ドメイン間の明示的な依存関係を作成できます。たとえば、ゲストドメインが、サービスドメインに暗黙に依存し、その仮想デバイスを提供しているとします。ゲストドメインが依存しているサービスドメインが実行されていない場合、ゲストドメインの入出力はブロックされます。ゲストドメインをサービスドメインのスレーブドメインとして定義することによって、サービスドメインが停止した場合のゲストドメインの動作を指定できます。このような依存関係が確立されていない場合、ゲストドメインはサービスドメインが使用可能になるのを待機します。
ドメインの依存関係の XML の例は、Oracle VM Server for SPARC 3.4 開発者ガイド の ドメインの情報 (ldom_info) リソースを参照してください。
次の例は、ドメインの依存関係を構成する方法を示します。
使用例 77 ドメインの依存関係を使用した障害ポリシーの構成最初のコマンドは、twizzle というマスタードメインを作成します。このコマンドは、failure-policy=reset を使用して、twizzle ドメインに障害が発生した場合にスレーブドメインをリセットするように指定します。2 つめのコマンドは、primary というマスタードメインに変更を加えます。このコマンドは、failure-policy=reset を使用して、primary ドメインに障害が発生した場合にスレーブドメインをリセットするように指定します。3 つめのコマンドは、2 つのマスタードメイン twizzle と primary に依存する、chocktaw というスレーブドメインを作成します。このスレーブドメインは、master=twizzle,primary を使用して、マスタードメインを指定します。twizzle または primary のいずれかのドメインに障害が発生した場合、chocktaw ドメインはリセットされます。
primary# ldm add-domain failure-policy=reset twizzle primary# ldm set-domain failure-policy=reset primary primary# ldm add-domain master=twizzle,primary chocktaw使用例 78 マスタードメインを割り当てるためのドメインの変更
この例は、ldm set-domain コマンドを使用して orange ドメインに変更を加え、primary をマスタードメインとして割り当てます。2 つめのコマンドは、ldm set-domain コマンドを使用して、orange および primary を tangerine ドメインのマスタードメインとして割り当てます。3 つめのコマンドは、これらすべてのドメインに関する情報を一覧表示します。
primary# ldm set-domain master=primary orange primary# ldm set-domain master=orange,primary tangerine primary# ldm list -o domain NAME STATE FLAGS UTIL primary active -n-cv- 0.2% SOFTSTATE Solaris running HOSTID 0x83d8b31c CONTROL failure-policy=ignore DEPENDENCY master= ------------------------------------------------------------------------------ NAME STATE FLAGS UTIL orange bound ------ HOSTID 0x84fb28ef CONTROL failure-policy=ignore DEPENDENCY master=primary ------------------------------------------------------------------------------ NAME STATE FLAGS UTIL tangerine bound ------ HOSTID 0x84f948e9 CONTROL failure-policy=ignore DEPENDENCY master=orange,primary使用例 79 解析可能なドメインリストの表示
次に、解析可能な出力を使用した一覧表示の例を示します。
primary# ldm list -o domain -p
Logical Domains Manager では、依存サイクルを作成するようなドメインの依存関係は作成できません。依存サイクルとは、スレーブドメインが自身に依存したり、マスタードメインがそのスレーブドメインのいずれかに依存したりすることになる、2 つ以上のドメイン間の関係です。
Logical Domains Manager は、依存関係を追加する前に、依存サイクルが存在するかどうかを確認します。Logical Domains Manager は、スレーブドメインから検索を開始し、マスターアレイによって指定されているすべてのパスに沿って、パスの最後に到達するまで検索を行います。途中で依存サイクルが見つかると、エラーとして報告されます。
次の例は、依存サイクルがどのように作成されるかを示します。最初のコマンドは、mohawk というスレーブドメインを作成します。このドメインは、マスタードメインに primary を指定します。その結果、mohawk は、次の図に示すような依存関係の連鎖で primary に依存します。
図 26 単一のドメインの依存関係
2 つめのコマンドは、primary というスレーブドメインを作成します。このドメインは、マスタードメインに counter を指定します。その結果、次の図に示すような依存関係の連鎖で、mohawk が primary に依存し、primary が counter に依存します。
図 27 複数のドメインの依存関係
3 つめのコマンドは、counter ドメインと mohawk ドメインとの間に依存関係の作成を試みます。これによって、次の図に示すような依存サイクルが生成されます。
図 28 ドメインの依存サイクル
次のエラーメッセージが表示されて ldm set-domain コマンドが失敗します。
# ldm add-domain master=primary mohawk # ldm set-domain master=counter primary # ldm set-domain master=mohawk counter Dependency cycle detected: LDom "counter" indicates "primary" as its master