Vous pouvez utiliser Logical Domains Manager pour établir des relations de dépendance entre les domaines. Un domaine ayant un ou plusieurs domaines dépendant de lui-même est appelé un domaine maître. Un domaine dépendant d'un autre domaine est appelé un domaine esclave.
Chaque domaine esclave peut définit jusqu'à quatre domaines maîtres en définissant la propriété master. Par exemple, le domaine esclave pine définit quatre domaines maîtres dans la liste séparée par des virgules suivante :
# ldm add-domain master=alpha,beta,gamma,delta pine
Les domaines maîtres alpha, beta, gamma et delta indiquent tous une stratégie de panne stop.
Chaque domaine maître peut définir ce qui se produit sur ses domaines esclaves en cas de panne du domaine maître. Par exemple, si un domaine maître est en panne, il peut demander à ses domaines esclaves de paniquer. Si un domaine esclave a plusieurs domaines maîtres, chaque domaine maître doit avoir la même stratégie de panne. Ainsi, le premier domaine maître à être en panne déclenche la stratégie de panne qu'il a définie sur tous ses domaines esclaves.
La stratégie de panne du domaine maître est contrôlée en définissant l'une des valeurs suivantes dans la propriété failure-policy :
ignore ignore tous les domaines esclaves
panic panique tous les domaines esclaves (à l'instar de l'exécution de la commande ldm panic)
reset arrête immédiatement puis redémarre tous les domaines esclaves (à l'instar de l'exécution de la commande ldm stop -f, puis de la commande ldm start)
stop arrête tous les domaines esclaves (à l'instar de l'exécution de la commande ldm stop -f)
Dans cet exemple, les domaines maîtres définissent leur stratégie de panne comme suit :
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
Vous pouvez utiliser ce mécanisme pour créer des dépendances explicites entre les domaines. Par exemple, un domaine invité dépend implicitement du domaine de service devant lui fournir ses périphériques virtuels. L'E/S d'un domaine invité est bloquée lorsque le domaine de service duquel il dépend n'est pas en état de fonctionnement. En définissant un domaine invité en tant qu'esclave de son domaine de service, vous pouvez définir le comportement du domaine invité lorsque son domaine de service est en panne. Lorsque cette dépendance n'est pas établie, un domaine invité attend simplement la reprise du service de son domaine de service.
Pour obtenir des exemples XML de dépendance de domaine, reportez-vous à l'Example 23–6.
Les exemples suivants montrent comment configurer les dépendances de domaine.
Exemple 17-1 Configuration d'une stratégie de panne à l'aide de dépendances de domaineLa première commande crée un domaine maître appelé twizzle. Cette commande utilise failure-policy=reset pour indiquer que les domaines esclaves se réinitialisent si le domaine twizzle est en panne. La seconde commande modifie un domaine maître appelé primary. Cette commande utilise failure-policy=reset pour indiquer que les domaines esclaves se réinitialisent si le domaine primary est en panne. La troisième commande crée un domaine esclave appelé chocktaw qui dépend de deux domaines maîtres, twizzle et primary. Le domaine esclave utilise master=twizzle,primary pour définir ses domaines maîtres. Si le domaine twizzle ou primary est en panne, le domainechocktaw se réinitialise.
primary# ldm add-domain failure-policy=reset twizzle primary# ldm set-domain failure-policy=reset primary primary# ldm add-domain master=twizzle,primary chocktawExemple 17-2 Modification d'un domaine pour assigner un domaine maître
Cet exemple montre comment utiliser la commande ldm set-domain pour modifier le domaine orange afin d'assigner le domaine primary en tant que domaine maître. La seconde commande utilise la commande ldm set-domain pour assigner orange et primary en tant que domaines maîtres pour le domaine tangerine. La troisième commande répertorie les informations sur tous ces domaines.
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,primaryExemple 17-3 Affichage d'une liste de domaines analysable
L'exemple suivant montre la liste d'exemples avec une sortie analysable :
primary# ldm list -o domain -p
Logical Domains Manager ne vous autorise pas à créer des relations de domaine qui créent un cycle de dépendance. Un cycle de dépendance est une relation entre deux domaines ou plus qui aboutit à une situation dans laquelle un domaine esclave dépend de lui-même ou un domaine maître dépend d'un de ses domaines esclaves.
Logical Domains Manager détermine si un cycle de dépendance existe avant d'ajouter une dépendance. Logical Domains Manager démarre sur le domaine esclave et effectue une recherche sur tous les chemins indiqués par la matrice maître jusqu'à ce que le chemin soit atteint. Tous les cycles de dépendance trouvés sur le chemin sont signalés comme des erreurs.
L'exemple suivant montre comment un cycle de dépendance peut être créé. La première commande crée un domaine esclave nommé mohawk qui définit le domaine maître en tant que primary. Par conséquent, mohawk dépend de primary dans la chaîne de dépendance illustrée dans la figure suivante.
Figure 17-1 Dépendance d'un domaine unique
La seconde commande crée un domaine esclave nommé primary qui définit son domaine maître en tant que counter. Par conséquent, mohawk dépend de primary, qui dépend de counter dans la chaîne de dépendance illustrée dans le schéma suivant :
Figure 17-2 Dépendance de plusieurs domaines
La troisième commande tente de créer une dépendance entre les domaines counter et mohawk, ce qui produirait le cycle de dépendance illustré dans le schéma suivant :
Figure 17-3 Cycle de dépendance de domaines
La commande ldm set-domain échouera avec le message d'erreur suivant :
# 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