Oracle Solaris サービス管理機能 (SMF) フレームワークは、システムサービスおよびアプリケーションサービスを管理します。SMF は、システムの操作に不可欠な重要なシステムサービスを管理し、データベースや Web サーバーなどのアプリケーションサービスも管理します。SMF は、ハードウェアまたはソフトウェアの障害が発生した場合でも、不可欠なシステムサービスおよびアプリケーションサービスが継続して実行できるように確保して、システムの可用性を高めます。
ゾーンの SMF サービスには、ゾーンのブート順序の優先順位付け、並列でブートするゾーンの数のしきい値設定、および障害管理アーキテクチャー (FMA) との統合の提供を行うメカニズムがあります。
ゾーンの依存関係を構築する一連の Oracle Solaris サービス管理機能 (SMF) 障害管理リソース識別子 (FMRI) は、smf-dependency リソースで定義されます。依存関係は、name、fmri、および grouping プロパティーで構成されます。svc:/system/zones:default サービスの依存関係は次のとおりです。
ゾーンの依存関係を構築する一連の SMF FMRI は、zonecfg コマンドの smf-dependency リソースで定義されます。
依存関係の設定の詳細については、Oracle Solaris Zones Configuration Resources の 第 1 章, Non-Global Zone Configuration Command and Resourcesを参照してください。
使用例 1 ゾーンの SMF 依存関係の設定依存関係の説明:
require_all: svc:/application/list:default
require_any: svc:/system/zones/zone:appfirewall
require_any: svc:/3rdparty/my-firewall:default
exclude_all: svc:/system/zones/zone:dataload
global$ pfbash zonecfg -z my-zone zonecfg:my-zone> add smf-dependency zonecfg:my-zone:smf-dependency> set fmri=svc:/application/list:default zonecfg:my-zone:smf-dependency> end zonecfg:my-zone> add smf-dependency zonecfg:my-zone:smf-dependency> set name=firewall zonecfg:my-zone:smf-dependency> set fmri=svc:/system/zones/zone:appfirewall zonecfg:my-zone:smf-dependency> set grouping=require_any zonecfg:my-zone:smf-dependency> end zonecfg:my-zone> add smf-dependency zonecfg:my-zone:smf-dependency> set name=firewall zonecfg:my-zone:smf-dependency> set fmri=svc:/3rdparty/my-firewall:default zonecfg:my-zone:smf-dependency> end zonecfg:my-zone> add smf-dependency zonecfg:my-zone:smf-dependency> set fmri=svc:/system/zones/zone:dataload zonecfg:my-zone:smf-dependency> set grouping=exclude_all zonecfg:my-zone:smf-dependency> end zonecfg:my-zone> exit
smf-dependency リソースの詳細は、Oracle Solaris ゾーン構成リソースおよび zonecfg(8) のマニュアルページを参照してください。
ゾーンの SMF インスタンスのサービス状態は、ゾーンの milestone/goals 状態によって決定されます。milestone/goals 目標サービスは、システムが起動して実行されていると判断できる、明確な地点を提供します。
ゾーンリスタータには、milestone/goals サービスをサポートしている各非大域ゾーンについて、そのサービスの状態が通知されます。各非大域ゾーンのゾーン SMF インスタンスの状態は、ゾーンの milestone/goals の状態に一致します。
ゾーンの委任リスタータに、milestone/goals を無視して zoneadm boot コマンドの成功に基づいてゾーン SMF インスタンスをオンラインに移行させるように指示できます。ブート操作が失敗した場合、ゾーン SMF インスタンスは保守状態になります。このスイッチは、ゾーンの委任リスタータサービスの下で、次の SMF プロパティーグループによって制御されます。
PG name=config type=application
config/track-zone-goals = true | false
svc.zones コマンドでは、サービス管理業務の一環として、管理対象ゾーンの SMF インスタンスごとに状態マシンを実装します。このマシンの状態は、smf(7) のマニュアルページで説明されている状態で構成されます。これらの状態の説明を次に示します。
ゾーンの SMF インスタンスは online 状態に到達しましたが、zoneadmd は複数回失敗しました。デーモンは実行されていません。
ゾーンは停止されており、ゾーンリスタータによってブートできません。
maintenance 状態の原因を調べるには、svcs -vx コマンドの出力を使用してください。maintenance 状態にあるゾーンの SMF インスタンスでは、無効化イベントで maintenance 状態はクリアーされません。次の理由で、ゾーンの SMF インスタンスは maintenance 状態になっている可能性があります。
ブートの試行に失敗しました。
ゾーンがブート不可の状態です
管理アクションなしでゾーンの milestone/goals 依存関係を満たすことができません。
ゾーンの SMF インスタンスは有効ですが、その SMF 依存関係は満たされていません。
ゾーンが実行中であり、milestone/goals に達しました。milestone/goals をサポートしていないゾーンでは、ゾーンがブートし始めるとすぐに online 状態に達します。
milestone/goals は、システムが起動して実行されていると判断できる、明確な地点を提供します。milestone/goals の依存関係は、システムにとってミッションクリティカルなサービスに合致するように構成されるべきです。milestone/goals のデフォルトの依存関係は次のとおりです。
svc:/milestone/multi-user-server:default
milestone/goals の詳細は、Oracle Solaris 12 でのシステムサービスの開発 の Creating a Goal Serviceを参照してください。
対応するゾーンはまだ svc.zones で処理されていません。
目標サービスは、ゾーンが想定どおりに機能するために実行する必要のある、一連のサービスを定義します。システム起動時にこれらのサービスのいずれかが実行されていない場合、目標サービスはユーザーに通知します。
milestone/goals 目標サービスは、システムが起動して実行されていると判断できる、はっきりと明確に定義された地点を提供します。milestone/goals の依存関係は、システムにとってミッションクリティカルなサービスを表すように構成されるべきです。milestone/goals のデフォルトの依存関係は svc:/milestone/multi-user-server:default です。
システム管理者は、目標サービスを使用することで、システムが起動し、その本来の目的で機能しているときに実行されているべき一連の期待されるサービスを定義できます。目標サービスは、goals svcadm サブコマンドを使用して管理されます。
目標サービスは、そのすべての依存関係を介入なしで満たすことを期待されています。依存関係が満たされるために管理者の介入が必要な場合、目標サービスは maintenance 状態に置かれます。maintenance 状態にある目標サービスは、その依存関係が満たされると、その状態から自動的に抜けます。
通常、実際の作業を行うサービスには goal service 設定を使用するべきではありません。
general/goal-service= プロパティーを true に設定すると、サービスは目標サービスとして動作するように設定されます。
目標サービスは動的に有効にされるサービスに依存するべきではありません。動的に有効にされるサービスがあると、依存関係が別のサービスで有効にされるまで、目標サービスは maintenance 状態になります。目標サービスの依存関係を設定するには、svcadm サブコマンドの目標を使用できます。
ゾーンのブート順序は 2 ステップで設定します。
ブート順序は、ゾーンの SMF インスタンスの SMF 依存関係によって部分的に決定されます。
たとえば、ZoneA が ZoneB の前にブートするようにするには、ZoneA を ZoneB に依存するものとして追加します。zonecfg(8) のマニュアルページの smf-dependency プロパティーを参照してください。
各ゾーンのブート優先順位を割り当てることで、ブート順序をさらに制御します。ゾーンの SMF 依存関係が満たされると、ゾーンは構成されている boot-priority リソースプロパティーに従ってブートします。受け入れられる値は、high、normal、および low です。デフォルト値は normal です。
Oracle Solaris Zones Configuration Resources の boot-priority Global PropertyおよびOracle Solaris Zones Configuration Resources の smf-dependency Resource Typeを参照してください。
非大域ゾーンは、ゾーンの委任リスタータサービスによって管理されます。ゾーンの委任リスタータは、ゾーンサービスの障害管理リソース識別子 (FMRI) svc:/system/zones:default の下で実行されます。
このセクションでは、ゾーンの委任リスタータに関する次の情報を提供します。
各 SMF サービスインスタンスは、リスタータによって管理されます。リスタータは、インスタンス構成を取得し、実行環境を提供します。すべてのリスタータに共通する情報については、smf_restarter(7) のマニュアルページを参照してください。
install、attach、または clone ゾーン操作によって、ゾーン SMF インスタンスが FMRI svc:/system/zones/zone:zonename で作成されます。uninstall および detach ゾーン操作によって、ゾーン SMF インスタンスがシステムから削除されます。
起動時に、ゾーンの委任リスタータは、SMF インスタンスを必要とする非大域ゾーンのゾーン SMF インスタンスを作成します。ゾーンにゾーン SMF インスタンスがすでに存在するが、ゾーンの状態がインスタンス configured より低い場合、リスタータは既存の SMF インスタンスを削除します。
ゾーンの委任リスタータは、各ゾーンに必要なインフラストラクチャーを設定します。リスタータは起動時に次のステップを実行します。
各ゾーンの zoneadmd デーモンを開始し、必要に応じて再起動します。configured より高い状態にある各ゾーンでは、zoneadmd が実行中になります。
installed 状態にあるすべてのゾーンに対して zoneadm boot コマンドを実行し、unavailable 状態にあるすべてのゾーンに対して zoneadm attach コマンドを実行します。詳細は、zoneadm(8) のマニュアルページを参照してください。
ゾーンの委任リスタータは、ゾーンサービスメソッドのスクリプトを提供します。ゾーンの委任リスタータは、既存のゾーンサービス FMRI の下で実行されます。
ゾーンの委任リスタータは、ゾーンで同時に実行されるブートまたはシャットダウン、および一時停止または再開の数を制限できます。制限を設定するには、svccfg および svcadm コマンドで、ゾーンの委任リスタータの次に示すプロパティーを設定します。
ゾーンで同時に実行されるブートまたはシャットダウンの最大数。
ゾーンで同時に実行される中断操作または再開操作の最大数。
デフォルトでは、ゾーンの委任リスタータはすべてのゾーンのタスクを並列で実行します。これらのプロパティーが存在しないか、値が指定されていないか、値が 0 に設定されている場合、ゾーンリスタータが同時に実行するゾーン操作の数に制限はありません。
ゾーンの SMF インスタンスが online 状態または maintenance 状態に達すると、非大域ゾーンのブートプロセスは完了とみなされます。ゾーンの SMF 状態の詳細は、ゾーンの SMF インスタンスのサービス状態についてを参照してください。
ゾーンの委任リスタータの詳細は、svc.zones(8) のマニュアルページを参照してください。