この節では、SMF フレームワーク内で使われる用語とその定義をいくつか紹介します。これらの用語は、マニュアル全体で使用されます。SMF の概念を理解するには、これらの用語を理解する必要があります。
SMF フレームワークでの基本的な管理単位は「サービスインスタンス」です。それぞれの SMF サービスでは、構成された複数のバージョンを保持することができます。さらに、1 つの Oracle Solaris システム上で同じバージョンの複数のインスタンスが動作できます。「インスタンス」とは、サービスの特定の構成のことです。 Web サーバーはサービスです。ポート 80 で待機するよう構成された Web サーバーデーモンはインスタンスです。Web サーバーサービスの各インスタンスには、異なる構成要件を設定できます。サービスにはシステム全体の構成要件が設定されていますが、各インスタンスでは必要に応じて特定の要件を無効にできます。1 つのサービスの複数のインスタンスは、サービスオブジェクトの子オブジェクトとして管理されます。
サービスは、in.dhcpd や nfsd などの標準の長年続いているシステムサービスだけではなく、Oracle ソフトウェアなどの ISV アプリケーションを含むさまざまなシステムエンティティーも意味します。また、次のような今まであまり使われなかったエンティティーを組み込むこともできます。
物理ネットワークデバイス
IP アドレス構成
カーネル構成情報
マルチユーザー実行レベルなど、システムの init 状態に対応するマイルストン
一般に、サービスはアプリケーションやほかのサービス (ローカルやリモート) に機能リストを提供するエンティティーです。サービスは、暗黙のうちに宣言されたローカルサービスのリストに依存しています。
「マイルストン」とは、特殊なタイプのサービスです。マイルストンサービスは、システムの高レベルの属性を表します。たとえば、実行レベル S、2、および 3 を構成するサービスはマイルストンサービスによってそれぞれ表されます。
各サービスインスタンスの名前は、障害管理リソース識別子 (FMRI) によって付けられます。FMRI には、サービス名とインスタンス名が含まれます。たとえば、rlogin サービスの FMRI は svc:/network/login:rlogin となり、ここでの network/login はサービスを、rlogin はサービスインスタンスをそれぞれ示します。
次の FMRI の形式はどれも同じです。
svc://localhost/system/system-log:default
svc:/system/system-log:default
system/system-log:default
また、SMF コマンドの中には、 svc:/system/system-log という FMRI 形式を使用できるものや、あいまいさがまったくない場合に、使用するインスタンスを推測するものもあります。適切な FMRI 形式を判断する方法については、svcadm(1M) や svcs(1) などの SMF コマンドのマニュアルページを参照してください。
通常、サービス名には一般的な機能カテゴリが含まれます。カテゴリには、次のものがあります。
application
デバイス
milestone
network
platform
site
system
また、従来の init.d スクリプトは、svc ではなく lrc で始まる FMRI (たとえば、lrc:/etc/rcS_d/S35cacheos_sh) で表現されます。従来のサービスは、SMF を使用して監視できますが、管理することはできません。
SMF を使用してシステムを初めてブートしたときに、/etc/inetd.conf に示されたサービスが自動的に SMF サービスに変換されます。これらのサービスの FMRI は多少異なります。変換された inetd サービスの構文は次のとおりです。
network/<service-name>/<protocol> |
また、RPC プロトコルを使用するサービスの構文は次のとおりです。
network/rpc-<service-name>/rpc_<protocol> |
ここで、<service-name> は /etc/inetd.conf に定義されている名前であり、<protocol> はそのサービスに使用されるプロトコルです。たとえば、rpc.cmsd サービスの FMRI は network/rpc-100068_2-5/rpc_udp となります。
svcs コマンドは、サービスインスタンスの状態、開始時刻、および FMRI を表示します。各サービスの状態は次のいずれかになります。
degraded – サービスインスタンスは有効ですが、限られた能力で実行されています。
disabled – サービスインスタンスは無効で、実行されていません。
legacy_run – 従来のサービスは SMF によって管理されませんが、監視することはできます。この状態は従来のサービスでのみ使用されます。
maintenance – サービスインスタンスに、管理者が解決しなければならないエラーが発生しました。
offline – サービスインスタンスは有効ですが、サービスが実行されていないか、利用できる状態にありません。
online – サービスインスタンスは有効で、正常に起動されました。
uninitialized – この状態は、すべてのサービスの構成が読み込まれる前の初期状態です。
SMF の「目録」とは、サービスまたはサービスインスタンスに関連付けられた完全なプロパティーセットを含む XML ファイルのことです。これらのファイルは /var/svc/manifest に格納されます。目録は、サービスプロパティーの変更には使用しないでください。サービス構成リポジトリは、信頼できる構成情報ソースです。情報を目録からリポジトリに取り込むには、svccfg import を実行するか、システムのブート時に、サービスが情報をインポートできるようにする必要があります。
SMF 目録の詳しい内容については、service_bundle(4) のマニュアルページを参照してください。サービスのプロパティーを変更する必要がある場合には、svccfg(1M) または inetadm(1m) のマニュアルページを参照してください。
SMF の「プロファイル」とは、サービスインスタンスの一覧とそれぞれを有効にするかどうかを示す XML ファイルのことです。この Oracle Solaris リリースで配布されるプロファイルには、次のようなものがあります。
/var/svc/profile/generic_open.xml – このプロファイルは、以前の Solaris リリースではデフォルトで起動されていた標準のサービスを有効化します。
/var/svc/profile/generic_limited_net.xml – このプロファイルは、以前の Solaris リリースではデフォルトで起動されていた標準のインターネットサービスの多くを無効化します。ネットワーク接続を提供するために network/ssh サービスは有効化されます。
/var/svc/profile/ns_*.xml – これらのプロファイルは、システムで実行されるよう設定されているネームサービスに関連するサービスを有効化します。
/var/svc/profile/platform_*.xml – これらのプロファイルは、特定のハードウェアプラットフォームに関連するサービスを有効化します。
Oracle Solaris OS を新規にインストールした場合やこの OS にアップグレードした場合は、そのあとの最初のブート時に、いくつかの Solaris プロファイルが自動的に適用されます。具体的には、/var/svc/profile/generic.xml プロファイルが適用されます。通常、このファイルには、generic_open.xml または generic_limited_net.xml へのシンボリックリンクが設定されています。また、最初のブート時に site.xml というプロファイルが /var/svc/profile に存在している場合や、次のブートまでに追加された場合は、このプロファイルの内容が適用されます。管理者は site.xml プロファイルを使用して、有効にするサービスの初期セットをカスタマイズすることができます。
プロファイルの使用方法については、「SMF プロファイルを適用する方法」を参照してください。
「サービス構成リポジトリ」には、永続的な構成情報と SMF 実行時サービスデータが格納されます。リポジトリは、ローカルメモリーとローカルファイルの間で割り当てられます。SMF は、最終的にサービスデータをネットワークディレクトリサービスで表現できるように設計されています。ネットワークディレクトリサービスはまだ利用できません。サービス構成リポジトリ内のデータを使用すると、多数の Solaris インスタンス間で構成情報の共有や管理の簡素化ができます。サービス構成リポジトリは、SMF インタフェースを使ってのみ操作または照会できます。リポジトリの操作やアクセスの方法については、svccfg(1M) および svcprop(1) のマニュアルページを参照してください。サービス構成リポジトリデーモンについては、svc.configd(1M) のマニュアルページを参照してください。サービス構成ライブラリについては、libscf(3LIB) のマニュアルページを参照してください。
SMF では、次に示すリポジトリのバックアップを自動的に行います。
ブートバックアップは、システムを起動するたびに、リポジトリに対する最初の変更が行われる直前に行われます。
manifest_import バックアップは、svc:/system/manifest-import:default によって新しい目録がインポートされたりアップグレードスクリプトが実行されたりした場合、このサービスの完了後に行われます。
タイプごとに 4 つのバックアップがシステムによって管理されます。必要に応じて、もっとも古いバックアップから削除されます。バックアップは /etc/svc/repository -type-YYYYMMDD_HHMMSWS という名前で格納されます。ここでの YYYYMMDD (年、月、日) と HHMMSS (時、分、秒) は、バックアップが行われた日時です。時間は 24 時間形式で表されます。
エラーが発生した場合は、これらのバックアップからリポジトリを復元できます。そのためには、/lib/svc/bin/restore_repository コマンドを使用します。詳細は、「破壊されたリポジトリを修復する方法」を参照してください。
サービス構成リポジトリ内のデータには、編集可能な構成情報のほかに「スナップショット」もあります。各サービスインスタンスに関するデータは、スナップショットに格納されます。標準のスナップショットは、次のとおりです。
initial – 目録の最初のインポート時に取られる
running – サービスメソッドが実行されるときに使用される
start – 最後に起動が成功したときに取られる
SMF サービスは常に running スナップショットを使って実行します。このスナップショットが存在しない場合は、自動的に作成されます。
svcadm refresh コマンド (ときどきこのあとに svcadm restart コマンドが実行される) によってスナップショットがアクティブになります。以前のスナップショットに含まれるインスタンス構成を表示したり、そこに戻ったりするには、svccfg コマンドを使用します。詳細については、「別の SMF スナップショットに戻す方法」を参照してください。