Go to main content

Oracle® Solaris ゾーンの作成と使用

印刷ビューの終了

更新: 2018 年 8 月
 
 

ゾーンとサービス管理機能

Oracle Solaris サービス管理機能 (SMF) フレームワークは、システムサービスおよびアプリケーションサービスを管理します。SMF は、システムの操作に不可欠な重要なシステムサービスを管理し、データベースや Web サーバーなどのアプリケーションサービスも管理します。SMF は、ハードウェアまたはソフトウェアの障害が発生した場合でも、不可欠なシステムサービスおよびアプリケーションサービスが継続して実行できるように確保して、システムの可用性を高めます。

ゾーンの SMF サービスには、ゾーンのブート順序の優先順位付け、並列でブートするゾーンの数のしきい値設定、および障害管理アーキテクチャー (FMA) との統合の提供を行うメカニズムがあります。

ゾーンの SMF 依存関係

ゾーンの依存関係を構築する一連の Oracle Solaris サービス管理機能 (SMF) 障害管理リソース識別子 (FMRI) は、smf-dependency リソースで定義されます。依存関係は、namefmri、および grouping プロパティーで構成されます。svc:/system/zones:default サービスの依存関係は次のとおりです。

require_all 依存関係
  • svc:/system/filesystem/local:default
  • svc:/milestone/name-services:default
  • svc:/milestone/devices:default
  • svc:/milestone/network:default
optional_all 依存関係
  • svc:/system/pools:default
  • svc:/system/zones-monitoring: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) のマニュアルページを参照してください。


注 -  特定のゾーンのインフラストラクチャーの設定中にエラーが発生すると、そのゾーンは maintenance 状態になります。ゾーンに対して失敗した zoneadm boot または zoneadm attach 操作を、ゾーンの委任リスタータに再試行させるには、そのゾーンインスタンスに対して svcadm clear コマンドを使用してください。

ゾーンの SMF インスタンスのサービス状態について

ゾーンの 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

ゾーンの SMF インスタンスのサービス状態

svc.zones コマンドでは、サービス管理業務の一環として、管理対象ゾーンの SMF インスタンスごとに状態マシンを実装します。このマシンの状態は、smf(7) のマニュアルページで説明されている状態で構成されます。これらの状態の説明を次に示します。

degraded

ゾーンの SMF インスタンスは online 状態に到達しましたが、zoneadmd は複数回失敗しました。デーモンは実行されていません。

disabled

ゾーンは停止されており、ゾーンリスタータによってブートできません。

maintenance

maintenance 状態の原因を調べるには、svcs -vx コマンドの出力を使用してください。maintenance 状態にあるゾーンの SMF インスタンスでは、無効化イベントで maintenance 状態はクリアーされません。次の理由で、ゾーンの SMF インスタンスは maintenance 状態になっている可能性があります。

  • ブートの試行に失敗しました。

  • ゾーンがブート不可の状態です

  • 管理アクションなしでゾーンの milestone/goals 依存関係を満たすことができません。

offline

ゾーンの SMF インスタンスは有効ですが、その SMF 依存関係は満たされていません。

online

ゾーンが実行中であり、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を参照してください。

uninitialized

対応するゾーンはまだ svc.zones で処理されていません。

SMF 目標サービスとゾーン

目標サービスは、ゾーンが想定どおりに機能するために実行する必要のある、一連のサービスを定義します。システム起動時にこれらのサービスのいずれかが実行されていない場合、目標サービスはユーザーに通知します。

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 ステップで設定します。

  1. ブート順序は、ゾーンの SMF インスタンスの SMF 依存関係によって部分的に決定されます。

    たとえば、ZoneA が ZoneB の前にブートするようにするには、ZoneA を ZoneB に依存するものとして追加します。zonecfg(8) のマニュアルページの smf-dependency プロパティーを参照してください。

  2. 各ゾーンのブート優先順位を割り当てることで、ブート順序をさらに制御します。ゾーンの SMF 依存関係が満たされると、ゾーンは構成されている boot-priority リソースプロパティーに従ってブートします。受け入れられる値は、highnormal、および 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) のマニュアルページを参照してください。

installattach、または 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 コマンドで、ゾーンの委任リスタータの次に示すプロパティーを設定します。

config/concurrent-boot-shutdown

ゾーンで同時に実行されるブートまたはシャットダウンの最大数。

config/concurrent-suspend-resume

ゾーンで同時に実行される中断操作または再開操作の最大数。

デフォルトでは、ゾーンの委任リスタータはすべてのゾーンのタスクを並列で実行します。これらのプロパティーが存在しないか、値が指定されていないか、値が 0 に設定されている場合、ゾーンリスタータが同時に実行するゾーン操作の数に制限はありません。

ゾーンの SMF インスタンスが online 状態または maintenance 状態に達すると、非大域ゾーンのブートプロセスは完了とみなされます。ゾーンの SMF 状態の詳細は、ゾーンの SMF インスタンスのサービス状態についてを参照してください。

ゾーンの委任リスタータの詳細は、svc.zones(8) のマニュアルページを参照してください。