smf(5)マニュアル
標準、環境、マクロ
smf(5)
【名前】
smf - service management facility
【機能説明】
Solaris SMF
はサービスと呼ばれる持続的に実行されるアプリケーションを提供するためにプログラミングモデルを定義しています。またファシリティはサービスを実行する
インフラも提供します。サービスは実行しているアプリケーションやデバイスのソフトウェア状態やたのサービスの1セットを表し、サービスの子供に該当する
サービスインスタンスによってフレームワークで表現されます。インスタンスは、親サービスの構成を引き継ぐか、またはくつがえすことができます。(複数の
サービスインスタンスが構成情報を共有します)。すべてのサービスとインスタンスは構成情報の集合として保管されています。現時点ではローカルのインスタ
ンス設定はローカルホストのみで管理できます。
それぞれのサービスインスタンスは障害管理リソース識別子(FMRI)で命名され、"svc:"
というスキームが付きます。例えば、システム起動時に起動するsyslogd(1M)デーモンはデフォルトサービスインスタンスとして以下のように命名さ
れています。
svc://localhost/system/system-log:default
svc:/system/system-log:default
system/system-log:default
上の例では、'デフォルト'はインスタンスの名前です、そして、'system/system-log'はサービス名です。サービス名はスラッシュ(/)
によって切り離された複数のコンポーネントをもつ場合もあります。全てのコンポーネントはサービスのカテゴリを構成しますが、サイト特有のサービスは
'site'カテゴリに属させるべきです。
サービスインスタンスは有効か無効のどちらかに設定されます。全てのサービスは
svcadm(1M)コマンドで有効化/無効化が可能です。
管理されたサービスインスタンスのリストは svcs(1)コマンドで表示することが可能です。
Dependencies(依存関係)
サービスインスタンスは他のサービスやファイルとの依存関係を持つことがあります。それらの依存関係によって、サービスがいつスタートするか、いつ自動的
に停止するかなどが決まります。有効にされたサービスの依存関係が満たされていないとき、サービスは offline
状態になります。その依存関係が満たされたときサービスはスタートします。サービスの起動が成功するとサービスは online
状態になります。依存関係が満たされているかどうかは以下のタイプによって決定されます。
require_all
指定された全てのサービスが実行中(onlineもしくはdegraded状態)であ
る。
または、指定された全てのファイルが存在する。
require_any
指定されたサービスの中の1つが実行中(onlineもしくはdegraded状態)
である。
または、指定されたファイルの少なくとも1つが存在する。
optional_all
指定された全てのサービスが実行中(onlineまたはdegraded状態)、無効
化(disabled)状態、メンテナンス(maintenance)状態、存在していない状態のいずれかである。ファイルに対しては
require_all と同様。
exclude_all
指定された全てのサービスが無効化(disabled)状態、メンテナンス
(maintenance)状態、存在していない状態のいずれかである。または、指定したファイルが存在していない。
一度実行(online, degraded状態)されると、 require_all,
require_any, optional_all
の依存関係で指定されたサービスが停止したり、再構成されたとき、SMFはサービスが何故停止したのかを考え、サービスを停止すべきかどうかを決定するた
めに依存関係のrestart_on の値をチェックします。
|
restart_on
value
|
event |
none
|
error
|
restart
|
refresh
|
stop due to
error |
no
|
yes
|
yes
|
yes
|
non-error stop |
no
|
no
|
yes
|
yes
|
refresh |
no
|
no
|
no
|
yes
|
サービスがハードウェアエラーやコアダンプのようなソフトウェアエラーなどが原因で停止したのであれば"stop due to
error"と考えます。exclude_allの依存関係では、指定されたサービスがスタートし、restart_on 属性が none
でない場合はサービスは停止させられます。
サービスの依存関係は svcs(1)コマンドや
svccfg(1M)コマンドで表示することができ、svccfg(1M)コマンドで編集することが可能です。
リスターター
サービスは restarter によって管理されています。マスターリスターターである
svc.startd(1M)はサービスインスタンスとそれらの依存関係の全体の状態を管理しています。マスターリスターターは、あるアプリケーションク
ラスのための特定の実行環境提供する委譲リスターターのサービスのリスターターとしても動作します。例えば、inetd(1M)は委譲リスターターです。
inetd(1M)に委譲されたインスタンスは、デーモンの稼動に関係なくサービス提供可能な状態であれば online 状態になります。
依存関係が満たされ、インスタンスが online
状態になるとき、svc.startd(1M)は他のインスタンスのメソッドを呼び出すか、またはそうするように委譲リスターターに指示します。これらの
オペレーションは重なることもあります。
svcs(1)を使用することでサービスと関係するリスターターを調べることができます。すべてのリスターターによって使用される一般的な構成は
smf_restarter(5) で説明されております。
Methods(メソッド)
それぞれのサービスやサービスインスタンスは start/stop
メソッドを定義しなければいけません(refresh メソッドはオプション)。より詳しい説明は smf_method(5) 参照。
repository内の旧構成情報の取得などは
svccfg(1M)のマニュアルを参照してください。
svccfg(1M)コマンドを使用することでサービスのメソッドを表示・変更することができます。
状態
どのサービスインスタンスも依存関係やメソッドの実行結果もしくはcontractsファイルシステムからのイベントを基に、常に明確な状態にあります。
以下の状態が定義されています。
UNINITIALIZED
これは全てのサービスの初期状態です。インスタンスは
svc.startd(1M)か適切なリスターターによって評価され、 maintenance, offline, disabled
のいずれかの状態に移動します。
OFFLINE
インスタンスが有効にされているがまだ実行されていないか実行可能な状態。もし、リス
ターターがサービスのstartメソッド(もしくはそれと同等のメソッド)の実行に成功すれば、インスタンスは online
状態に移動します。失敗の場合は degraded 状態か maintenance 状態になる可能性があります。 管理操作で
uninitialized 状態にすることは可能です。
ONLINE
インスタンスは有効で実行中もしくは実行可能な状態です。online
状態の様子はアプリケーションモデルによって異なり、サービスインスタンスに対して責任を持つリスターターによって定義されます。online
というのは全ての依存関係が満たされ、正しく構成されたサービスのための状態です。online 状態になり損ねると degraded 状態や
maintenance 状態になることもあります。インスタンスの依存関係を満たしていないと offline や degraded
状態になることもあります。
DEGRADED
インスタンスは有効で実行可能な状態です。しかしインスタンスは何らかの事情で制限さ
れた状態で機能しています。インスタンスの失敗は maintenance 状態になることもあります。インスタンスが依存関係を満たしていないと
offline か degraded 状態になることもあります。事態が回復すると online 状態に戻ります。
MAINTENANCE
インスタンスは有効であるが、実行不可能な状態です。インスタンスを
offline
状態やその先の状態に回復するために管理操作が必要です。管理操作が進行中であるなら、maintenance状態は一時的な状態であるかもしれません。
DISABLED
インスタンスが無効化されています。有効化することで offline
状態へと移行し、依存関係が満たされていれば最終的に online 状態になります。
LEGACY-RUN
この状態は SMF
管理ではないレガシーインスタンス(RCスクリプト管理のサービス)を表します。この状態のインスタンスは実行されているか、何らかのタイミングで実行す
るのか、もしくは実行されていないかわかりません。legacy_run
状態はインスタンスがシステムに登録されているかを見ることができるだけで、他の状態に移行することはありません。
プロパティとプロパティグループ
前述のような依存関係、メソッド、委譲リスターター、インスタンス状態はサービスやサービスインスタンスのプロパティやプロパティグループとして表されま
す。サービスやサービスインスタンスには、アプリケーションデータを保存する任意の数のプロパティグループがあります。このように特性のグループを使用し
て、アプリケーションの構成は repository
がファシリティのすべてのデータに提供する属性を引き出します。アプリケーションは、フレームワークの中にコンフィギュレーション・データを表すのに
service_bundle(4) DTD の適切な部分集合を使用することができます。
プロパティのルックアップされ構成されます。
プロパティグループの組み合わせがサービスインスタンスで見つけられないなら、libscf(3LIB)のほとんどのコマンドとハイレベルなインタフェー
スはそのインスタンスを含むサービスのときに同じプロパティグループの組み合わせを捜し求めます。この機能によって、サービスインスタンスの中の共通の構
成が共有されるのを可能にします。サービスインスタンスとその親サービスとの継承関係として構成を見なすことができます。
プロパティは権限のないプロセスからの変更ができないように保護されています。smf_security(5)参照。
スナップショット
repository内の各インスタンスについての履歴データはSMFによって管理されます。このデータを管理検査とロールバックのための書き込み禁止ス
ナップショットとして利用可能にします。以下のスナップショットタイプがあります。
initial
インスタンスの初期構成。管理者により作成されたか、パッケージインストールの間に生
成された構成。
last_import
svccfg(1M)コマンドのインポート操作の間に取られるサービスのマニフェスト
で定められる構成。 このスナップショットはプロパティのカスタマイズを決定するベースラインを提供します。
previous
管理的なアンドゥ操作が実行されるとき得られる現在の構成
running
実行しているインスタンスの構成。
start
online 状態への移行に成功したときに得られた構成。
スナップショットを操作するのにsvccfg(1M)コマンドを使用することができます。
特別なプロパティグループ
プロパティグループの中には"non-persistent"としてマークされるものもあります。これらのグループはスナップショットでサポートされませ
ん、そして、それらの内容は再起動時にクリアされます。
一般に、そのようなグループはシステムの再起動を乗り切る必要はないアクティブなプログラム状態を保持します。
リポジトリ構成
それぞれのサービスインスタンスの状態、およびサービスとサービスインスタンスに関連しているプロパティはsvc.configd(1M)によって管理さ
れたシステムリポジトリに保存されます。このリポジトリは、それぞれのサービスやサービスインスタンスに関連しているプロパティやプロパティグループの旧
バージョンを提供することができます。
SMFデータのためのリポジトリは svc.configd(1M)によって管理されます。
サービスバンドル, マニフェスト, プロファイル
構成リポジトリに保存されるサービスやサービスインスタンスに関連している情報はXMLベースのファイルとしてエクスポートすることができます。サービス
バンドルとして知られているそのようなXMLファイルは、携帯でき、バックアップ目的に適しています。
サービスバンドルは以下のタイプに分類されています。
manifests
特定のサービスやサービスインスタンスに関連づけた完全なプロパティセットを含んだ
ファイル。
profiles
サービスインスタンスと各インスタンス上の有効なプロパティの値のセットを含んだファ
イル。
リポジトリからsvccfg(1M)コマンドを使用することでサービスバンドルをインポートするか、またはエクスポートすることができます。
サービスバンドル開発のためのガイドラインやサービスバンドルファイル形式の説明はservice_bundle(4)を参照してください。
サービスアーカイブは、リポジトリ内のあらゆるサービスの記述と永続的なプロパティをサービス状態などの一時的な特性を除いて含んでいるXMLファイルで
す。このサービスアーカイブは基本的に指定されたサービスに制限されないあらゆるサービスのための'svccfg export'です。
Legacy Startup Scripts
/etc/rc?.d
ディレクトリ内のスタートアッププログラムは対応するランレベルのマイルストーンサービスによって実行されます。
/etc/rcS.d
milestone/single-user:default
/etc/rc2.d
milestone/multi-user:default
/etc/rc3.d
milestone/multi-user-server:default
それぞれのプログラムの実行はプログラムのパス名から命名されたサービスインスタンスとして表されます。 これらのインスタンスはlegacy_run
状態に保持されます。
これらのインスタンスは、有効にされたプロパティを持ちません。また、一般に、svcadm(1M)コマンドで操ることができません。
Solaris系技術トレーニング一覧