Solaris -> Solaris10 -> サービス管理(SMF)

サービス管理(SMF)

SMFとは?

Solaris10から、SMF(Service Management Facility)と呼ばれる
起動プロセスを採用している。
Linuxに置き換えるとchkconfig と service コマンドと同じような機能であるが、
構成するファイルが複数あり、複雑な仕組みになっている。

基本的にSMFを利用するサービスはOS関連のプロセスであり、
追加アプリの起動スクリプトは従来と同じ /etc/rc*.d に置かれ、
SMFではレガシーサービスと呼ばれる管理対象として扱われる。

SMF構成ファイル

起動スクリプト

/lib/svc/method/

リポジトリデータベース

/etc/svc/repository.db

起動時のログ

/etc/svc/volatile/system-*.log

マニフェストファイル

カテゴリ毎のディレクトリに分かれている
/var/svc/manifest/application/*.xml
/var/svc/device/*.xml
/var/svc/milestone/*.xml
/var/svc/platform/*.xml
/var/svc/site/*.xml
/var/svc/system/*.xml

SMFプロファイル

サービスインスタンス一覧と有効無効
/var/svc/profile/generic_open.xml         (<sol10)のサービス有効化)
/var/svc/profile/genecic_limited_net.xml  (<sol10)NWサービスの無効化(一部除)
/var/svc/profile/ns_*.xml                 ネームサービスの有効化
/var/svc/profile/platform_*.xml           特定Platform関連のサービスを有効化

FMRIについて

FMRIのカテゴリ

  svc:/application/*
  svc:/milestone/*
  svc:/network/*
  svc:/platform/*
  svc:/system/*

  これらの定義は /var/svc/manifest/application/*.xml に
  (マニフェストファイル=サービスの定義)置かれている。
  このファイルは、サービス起動スクリプト名、他のサービスの依存関係等が記述されており、
  実際のサービス起動スクリプト(Solaris10以前 /etc/rc2.d/にあったファイル)は
  /lib/svc/method/ ディレクトリに置かれている。
  起動スクリプト名は Solaris10 以前とは異なるのでどれに対応しているのかスクリプトの中を
  見ないとわからない場合が多いのでなれるまでは結構苦労する。
  例えば システムログデーモン syslogd は system-log  
  ボリュームマネージャーデーモン vold は svc-volfs  という名前のスクリプトになっている。
  参照する場合 FMRI を省略しても指定できる。
  # svcs svc:/system/system-log
  STATE          STIME    FMRI
  online         12:25:19 svc:/system/system-log:default

  FMRIが長いので system-log だけを指定して参照する場合
  # svcs system-log
  STATE          STIME    FMRI
  online         12:25:19 svc:/system/system-log:default

管理コマンド

svcs 参照

状態一覧
degraded      制限実行(インスタンス有効)
disabled      無効
legacy_run    SMFで管理されていないサービス
maintenance   エラー
offline       停止(インスタンス有効)
online        有効
uninitialized 初期状態
使用例
# svcs     Online,legacy_run
legacy_run      9:50:16 lrc:/etc/rc2_d/S20sysetup
online          9:49:53 svc:/network/telnet:default

# svcs -a  disableを含め全て表示
legacy_run      9:50:16 lrc:/etc/rc2_d/S20sysetup
disabled        9:49:28 svc:/network/dns/client:default
online          9:49:53 svc:/network/telnet:default

svcadm サービス管理

オプション一覧

enable    有効化
disable   無効化
restart   再起動
refresh   設定ファイル読込み (kill -HUP)
mark      保守状態
clear     保守状態クリア
milestone マイルストーンへ移行
使用例
現在の状態 無効
# svcs /application/print/server
STATE          STIME    FMRI
disabled       9:49:29 svc:/application/print/server:default

状態を有効に変更
# svcadm enable /application/print/server

状態を確認 有効
# svcs /application/print/server
STATE          STIME    FMRI
online         12:48:31 svc:/application/print/server:default

状態を無効に変更
# svcadm disable /application/print/server

現在の状態 無効
# svcs /application/print/server
STATE          STIME    FMRI
disabled       12:48:42 svc:/application/print


※ この場合 enable -> disable の度に リポジトリデータベースが書き換わって
   しまうので一時的な作業として起動・停止する場合は -t オプションを使用する。

# svcadm disable -t /application/print/server
  <停止後の設定変更>
# svcadm enable -t /application/print/server


svccfg 構成内容の管理

削除
現在の状態を確認。Online
# svcs svc:/network/ntp:default
STATE          STIME    FMRI
online         17:17:25 svc:/network/ntp:default
#
無効にする
# svcadm disable svc:/network/ntp:default
#
無効になったことを確認
# svcs svc:/network/ntp:default
STATE          STIME    FMRI
disabled       17:22:14 svc:/network/ntp:default
#
削除する
# svccfg delete svc:/network/ntp:default
#
削除されたことを確認
# svcs svc:/network/ntp:default
svcs: パターン 'svc:/network/ntp:default' がどのインスタンスとも一致しません
STATE          STIME    FMRI
#
マニフェストファイルからの登録

マニフェストファイルを確認する
# ls -l /var/svc/manifest/network/ntp.xml
-r--r--r--   1 root     sys         1955  1月 22日 2005年 /var/svc/manifest/network/ntp.xml
#

登録コマンドを実行。マニフェストファイルをインポートして登録する。
# svccfg import /var/svc/manifest/network/ntp.xml
#
登録されたか確認
# svccfg list | grep ntp
network/ntp
# svcs network/ntp
STATE          STIME    FMRI
disabled       17:26:21 svc:/network/ntp:default
#

サービスを有効にする
# svcadm enable svc:/network/ntp:default
#
# svcs svc:/network/ntp:default
STATE          STIME    FMRI
online         17:26:46 svc:/network/ntp:default
#

svcprop プロパティ値取得

# svcprop svc:/network/ntp:default
general/enabled boolean false
general/entity_stability astring Unstable
general/single_instance boolean true
paths/entities fmri file://localhost/usr/sbin/ntpq file://localhost/usr/sbin/ntpdate
paths/grouping astring require_all
paths/restart_on astring error
paths/type astring path
network/entities fmri svc:/network/service
network/grouping astring require_any
network/restart_on astring error
network/type astring service
dependents/ntp_multi-user fmri svc:/milestone/multi-user
start/exec astring /lib/svc/method/xntp
start/timeout_seconds count 1800
start/type astring method
stop/exec astring :kill
stop/timeout_seconds count 60
stop/type astring method
tm_common_name/C ustring Network\ Time\ Protocol\ \(NTP\)
tm_man_xntpd/manpath astring :default
tm_man_xntpd/section astring 1M
tm_man_xntpd/title astring xntpd
tm_man_ntpdate/manpath astring :default
tm_man_ntpdate/section astring 1M
tm_man_ntpdate/title astring ntpdate
tm_man_ntpq/manpath astring :default
tm_man_ntpq/section astring 1M
tm_man_ntpq/title astring ntpq
restarter/logfile astring /var/svc/log/network-ntp:default.log
restarter/contract count 33
restarter/start_pid count 200
restarter/start_method_timestamp time 1253002645.002279000
restarter/start_method_waitstatus integer 0
restarter/auxiliary_state astring none
restarter/next_state astring none
restarter/state astring online
restarter/state_timestamp time 1253002645.004369000
#

マイルストン

サービスの起動順

(1)-1 milestone/single-user 依存サービスの起動
(1)-2 /etc/rc0.d 内起動スクリプトの起動
(2)-1 milestone/multi-user 依存サービスの起動
(2)-2 /etc/rc2.d 内起動スクリプトの起動
(3)-1 milestone/multi-user-server 依存サービスの起動
(3)-2 /etc/rc3.d 内起動スクリプトの起動

マイルストンの表示

# svcs *milestone*
STATE          STIME    FMRI
online          9:49:30 svc:/milestone/name-services:default
online          9:49:33 svc:/milestone/network:default
online          9:49:38 svc:/milestone/devices:default
online          9:49:42 svc:/milestone/single-user:default
online          9:49:49 svc:/milestone/sysconfig:default
online          9:50:18 svc:/milestone/multi-user:default
online          9:50:40 svc:/milestone/multi-user-server:default

各マイルストンに依存するサービスの表示

sol01# svcs -d /milestone/multi-user-server | grep "^online"
online          9:49:59 svc:/application/management/snmpdx:default
online          9:50:00 svc:/network/ssh:default
online          9:50:03 svc:/application/management/dmi:default
online          9:50:18 svc:/milestone/multi-user:default

マイルストン-LegacyRun対応表

マイルストン Legesy起動スクリプト
milestone/single-user /etc/rc.0d
milestone/multi-user /etc/rc.2d
milestone/multi-user-server /etc/rc.3d


先頭へ

      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google