Solaris 資料一覧

SMFの仕組みと管理コマンド

2008/9/18更新

対応バージョン: 10

Solaris10ではサービス管理の機構としてSMF(Service Management Facility)が採用されている。

個々のサービスの起動/停止スクリプトは従来の/etc/rc*.d配下ではなく/lib/svc/method配下に置かれ、svc.startd(マスターリスタータデーモン)によって制御される。

サービスの型や依存関係などを記したXML形式のマニフェストは/var/svc/manifest配下のグループ別ディレクトリに置かれ、svc.configd(リポジトリデーモン)によって参照/変更される。

ログは/var/svc/log配下にサービス毎に出力される。

管理コマンド

SMFの管理コマンドにはサービス全体の管理を行うsvcsと個々のサービスの制御を行うsvcadmがある。以下、それぞれ説明する。

svcs

サービスの一覧表示
# svcs -a
STATE       STIME    FMRI
legacy_run   8月_07 lrc:/etc/rcS_d/S50sk98sol
legacy_run   8月_07 lrc:/etc/rc2_d/S10lu
:
disabled     8月_07 svc:/system/metainit:default
disabled     8月_07 svc:/network/iscsi_initiator:default
:
online       8月_07 svc:/system/svc/restarter:default
online       8月_07 svc:/network/pfil:default
:
実行されていないサービスの一覧
# svcs -x
svc:/application/print/server:default (LP print server)
  State: disabled since Fri Aug 8 00:34:11 2008
 Reason: Disabled by an administrator.
    See: http://sun.com/msg/SMF-8000-05
    See: lpsched(1M)
 Impact: 2 dependent services are not running.  (Use -v for list.)
他のサービスに依存するサービスの一覧
# svcs -l <サービス>

例) nfs.serverの依存関係

# svcs -l network/nfs/server
fmri         svc:/network/nfs/server:default
name         NFS server
有効         true (temporary)
状態         online
next_state   none
state_time   2008年11月14日 21時31分33秒
logfile      /var/svc/log/network-nfs-server:default.log
リスタータ   svc:/system/svc/restarter:default
contract_id  92 
dependency   require_any/error svc:/milestone/network (online)
dependency   require_all/error svc:/network/nfs/nlockmgr (online)
dependency   optional_all/error svc:/network/nfs/mapid (online)
dependency   require_all/restart svc:/network/rpc/bind (online)
dependency   optional_all/none svc:/network/rpc/keyserv (disabled)
dependency   optional_all/none svc:/network/rpc/gss (online)
dependency   require_all/error svc:/system/filesystem/local (online)
ランレベルに依存するサービスの一覧
# svcs -D <サービス>

例) sshdの依存関係

# svcs -D network/ssh:default
STATE       STIME    FMRI
online       8月_07 svc:/milestone/multi-user-server:default

上記の例では当該サービスはマルチユーザになっていなければならないことが分かる。

svcadm

サービス起動
# svcadm enable [-rst] <サービス>

オプションの意味は以下のとおり。

・オプションなし(デフォルト)

OSリブート後もこの設定を有効にする。

・-r

指定したサービスに依存するサービスを再帰的に有効にする。

・-s

指定したサービスを有効にし、状態がonlineかdegradedになるまで待つ。

・-t

指定したサービスを一時的に有効にするが、OSリブートにて元の設定に戻る。

サービス停止
# svcadm disable [-st] <サービス>

例)

# svcs network/smtp:sendmail
STATE          STIME    FMRI
online         17:09:19 svc:/network/smtp:sendmail

# svcadm disable -t network/smtp:sendmail

# svcs network/smtp:sendmail
STATE          STIME    FMRI
disabled       17:09:19 svc:/network/smtp:sendmail
サービス再起動
# svcadm restart <サービス>
サービス状態更新
# svcadm refresh <サービス>
サービス状態変更
# svcadm mark [-It] <状態> <サービス>

-Iオプションは即時(immediate)指定である。

<状態>は以下のどちらかを指定する。

・maintenance

サービスを停止し、メンテナンスモードにする。

・degraded

サービスを信頼性低下モードにする。

例)

# svcadm mark -It maintenance network/smtp:sendmail

# svcs network/smtp:sendmail
STATE          STIME    FMRI
maintenance    17:34:27 svc:/network/smtp:sendmail
サービス状態クリア
 
# svcadm clear <サービス>

maintenance状態のサービスに対しては、サービスが修復されたことをリスタータデーモンに通知する。

degraded状態のサービスに対しては、サービスをonlineにするようリスタータデーモンに通知する。

サービスが上記以外の状態の場合、このコマンドは無視される。