各サービスの情報は、サービス構成リポジトリに格納されており、このリポジトリは SMF データベースとも呼ばれます。サービス構成リポジトリは、システム上の各サービスインスタンスの現在の状態や、各サービスおよびサービスインスタンスのプロパティーなどの情報を格納します。
リポジトリには、永続的な構成情報と、サービスの SMF 実行時データが格納されます。
永続的な構成情報は、データのソースに応じてレイヤーに格納されます。リポジトリレイヤーを参照してください。
実行時データ、つまり非永続的な構成情報は、リブートすると保持されず、リポジトリには、非永続データのレイヤー情報は格納されません。非永続データは通常、アクティブなプログラム状態を保持します。
リポジトリには、タイプ、値の制約、プロパティーの説明などのサービステンプレートデータも格納されます。テンプレートデータはサービスマニフェストで定義されます。テンプレートデータの詳細は、smf_template (5)のマニュアルページを参照してください。
サービス構成リポジトリは、SMF インタフェースを使ってのみ操作または照会できます。svcs、svcprop、svcadm、および svccfg のコマンドを使用するか、libscf(3LIB)のマニュアルページに一覧表示されたサービス構成機能ライブラリの関数を使用します。プロパティー値は読み書きでき、指定したレイヤーおよびスナップショットにプロパティー値を表示できます。レイヤーの詳細は、リポジトリレイヤーを参照してください。スナップショットの詳細は、リポジトリのスナップショットを参照してください。選択したサービスインスタンスまたは親サービスのプロパティーだけを表示することも、プロパティーの合成ビューを表示することもできます。合成ビューでは、親サービスに対して設定されたプロパティーとサービスインスタンスに対して設定されたプロパティーの両方が表示されます。表示される値はサービスインスタンスに対して設定された値です。
サービスバンドルとは、サービスまたはサービスインスタンスのサービス構成リポジトリに格納されている情報を格納した XML ファイルです。サービスバンドルで提供される情報は、サービス構成リポジトリに格納され、リポジトリからエクスポートできます。標準の場所におけるサービスバンドルは、システムブート中にリポジトリにインポートされます。
サービスバンドルには、マニフェストとプロファイルの 2 つのタイプがあります。
マニフェストには、特定のサービス群またはサービスインスタンス群に関連付けられたプロパティーがすべて含まれます。
プロファイルは通常、マニフェストで提供される情報を追加したりオーバーライドしてカスタマイズしたサービスまたはサービスインスタンスを提供します。カスタマイズの例としては、プロパティーの追加やプロパティー値の変更があります。
マニフェストの標準の場所は /lib/svc/manifest です。プロファイルの標準の場所は /etc/svc/profile です。
システムがブートするか、マニフェストインポートサービスが再起動すると、マニフェストがインポートされ、プロファイルが新規作成または変更されていれば、これが適用されます。サービスバンドルを提供する IPS パッケージは、パッケージをインストールするときにマニフェストインポートサービスを再起動するように指定できます。
ローカルカスタマイズは、/etc/svc/profile/site ディレクトリ内の接尾辞が .xml のプロファイルファイルで提供できます。同じリポジトリレイヤー内で同じサービスまたはインスタンスに対して同じプロパティーが複数のマニフェストまたはプロファイルによって定義されている場合、SMF は使用する値を判断できません。このような競合が検出された場合、インスタンスは maintenance 状態に置かれます。レイヤーの詳細は、リポジトリレイヤーを参照してください。
Oracle Solaris にサービスを提供する以外に、サービスバンドルは、さまざまなシステムに対してカスタム構成を提供することもできます。
システムプロファイル /etc/svc/profile/generic.xml はインストール中に適用されます。このプロファイルは変更しないでください。このシステムプロファイルに行われた変更はアップグレードで上書きされます。詳細は、smf_bootstrap(5)のマニュアルページを参照してください。
サービス構成リポジトリには、単一のプロパティーに対して異なる値を格納できます。リポジトリは、データのソースに応じて、レイヤーにデータを格納します。ソースとしては、マニフェスト、システムプロファイル、サイトプロファイル、および、SMF のコマンドおよびライブラリインタフェースで行われたカスタマイズがあります。さまざまなレイヤー内の値を表示して、実行中の構成における値のソース、つまりその値がマニフェストまたはプロファイルで割り当てられたものか、管理者により変更されたものかを判断できます。
SMF コマンドおよびライブラリインタフェースを使用して行われた構成変更は、admin レイヤーにのみ表示されます。ほかのレイヤーでの構成は、標準の場所にあるプロファイルおよびマニフェストファイルで定義されます。ファイルからリポジトリにプロパティーが追加された場合、そのプロパティーに関する情報にはそのファイルの名前が含まれます。
|
プロパティー競合はどのレイヤーでも許可されていません。admin レイヤーに競合するプロパティーがある場合、以前のプロパティーが上書きされます。ほかのレイヤー内の複数のファイルで同じプロパティーが提供され、より高いレイヤーでは設定されていない場合、構成定義が削除されるか、プロパティーがより高いレイヤーで設定されるまで、インスタンスは競合中のタグが付けられ、起動しません。
構成データのレイヤーを指定して、管理カスタマイズであるデータや、ソフトウェアで提供されたデータを表示し、したがって特定することができます。構成データの取得元のレイヤーがクライアントによって指定されない場合は、最上位のレイヤーデータが与えられます。最上位のレイヤーは、上から順に admin レイヤー、site-profile レイヤー、system-profile レイヤー、manifest レイヤーの優先順位に従って定められます。admin レイヤーにプロパティーの値がある場合、これがリポジトリで提供する値になります。ローカルカスタマイズは、このようにして、システムがインストールされたときに与えられた値よりも優先されます。
リポジトリは、サービスが正しく起動するごとに、読み取り専用のスナップショットを取得します。これらのスナップショットを使用すれば、必要に応じて簡単に以前の作業状態に戻せます。次のスナップショットはどのインスタンスでも使用できます。
サービスとそのインスタンスが最初にインポートされたときの初期構成。マニフェストのインポート前にプロファイルがサービスまたはインスタンスを起動した場合、initial スナップショットは作成されません。
すでに提供されているサービスに対してマニフェストのインポートが実行されたときに取得された現在の構成。このサービスは、インポートされているマニフェストまたは別のマニフェストによって、すでに提供されている可能性があります。
サービスインスタンスの実行中の構成。構成データを変更する場合、svcadm refresh コマンドまたは svccfg refresh コマンドを使用して、新しい値を実行中のスナップショットにプロモートします。
online 状態への正常な遷移中に取得された構成。
SMF は、サービス構成リポジトリの次のバックアップを自動的に作成します。
boot バックアップは、システムを起動するたびに、リポジトリに対する最初の変更が行われる直前に行われます。
サービスが新しいマニフェストをインポートしたか、アップグレードスクリプトを実行した場合、manifest_import のバックアップは、svc:/system/early-manifest-import:default または svc:/system/manifest-import:default が完了する前に行われます。
タイプごとに 4 つのバックアップがシステムで保守され、必要に応じてもっとも古いバックアップから削除されます。
これらのいずれかのバックアップからリポジトリを復元できます。バックアップからリポジトリを復元する方法を参照してください。