サービスの管理
Solaris 11 x64 VPS/クラウド サービスの管理
Solaris 11では、サービス(デーモン)は「サービス管理機構(Service Management Facility: SMF)」で管理され、管理者はsvcadmやsvcsコマンドなどでサービスを操作します。
SMFは、サービス停止時の復旧機能などを含む、自動管理のためのフレームワークです。
サービスインスタンスについて
SMFの管理単位は「サービスインスタンス」です。このサービスインスタンスは、障害リソース識別子(Fault Management Resource Identifer: FMRI)に基づき、「svc:」というURIスキームを使って名づけられます。
FMRIには、サービス名とインスタンス名が含まれます。
FMRIの例
Apache 2.2のFMRIは以下です。
svc:/network/http:apache22
この場合、サービス名が「network/http」、インスタンス名が「apache22」となります。
FMRIの省略形について
FMRIは、あいまいさがない場合に限り省略することができます。
例えば、Apache 2.2のFMRI「svc:/network/http:apache22」は、次のような省略形が有効です。
- apache22
- :apache22
- http
- http:apache22
- network/http
ただし、FMRIの省略形は不安定なため用いないことをお勧めいたします。
このページでは、省略形を用いないFMRIでご案内しています。
サービスインスタンスの状態について
SMFでは、サービスインスタンスの状態を以下に分類しています。
online | インスタンスは有効で、実行されています。 |
---|---|
disabled | インスタンスは無効で、実行されていません。 |
offline | インスタンスは有効ですが、実行されていません。実行できる状態になった場合、自動的にonlineへ移行します。 |
degraded | インスタンスは有効で実行されていますが、機能に制限がある状態です。回復できる状態になった場合、自動的にonlineへ移行します。 |
maintenance | インスタンスは有効ですが、エラーが発生したため実行されていません。管理者が原因を特定し、解決しなければなりません。 |
legacy_run | 従来のrcスクリプトで制御されているサービスです。SMFでは監視のみ行い、管理は行いません。 |
uninitialized | すべてのサービスインスタンスの初期状態です。 |
サービスインスタンスの状態や情報を確認する
サービスインスタンスの状態や情報を確認するときは、svcsコマンドを使用します。
# svcs [ FMRI | pattern ]
FMRIを指定すると、指定したインスタンスに関するステータスを表示します。指定しない場合は、有効になっているすべてのインスタンスを表示します。
[ FMRI | pattern ]は複数指定することができます。また、部分一致などのパターンマッチングを利用することができます。
主なオプション
- -a
- 無効なサービスや不完全なサービスを含め、すべてのインスタンスを表示します。
- -d [ FMRI | pattern ]
- 指定されたインスタンスが依存するインスタンスを表示します。
- -D [ FMRI | pattern ]
- 指定されたインスタンスに依存するインスタンスを表示します。
- -l [ FMRI | pattern ]
- 指定されたインスタンスに関する詳細な情報を表示します。
- -p [ FMRI | pattern]
- FMRIを指定した場合は、そのインスタンスに関連づけられているプロセスの一覧を表示します。
- FMRIを指定しない場合は、有効になっているインスタンスに関連づけられているプロセスの一覧を表示します。
- -v [ FMRI | pattern ]
- -xや-lが指定されていない場合は、次の列を追加して表示します。
- NSTATE(サービスインスタンスの次の状態)
- CTID(サービスインスタンスのプライマリ契約ID)
- -xが指定されている場合は、さらに詳細な情報を追加して表示します。
- -lが指定されている場合は、さらに詳細な情報を追加して表示します。
- -xや-lが指定されていない場合は、次の列を追加して表示します。
- -x [ FMRI ]
- FMRIを指定した場合は、そのインスタンスの状態の説明を表示します。
- FMRIを指定しない場合は、以下のインスタンスの状態説明を表示します。
- 有効になっているが、実行されていない
- 別の有効なサービスが動作しているため、実行できない
利用例
有効になっているサービスインスタンスを表示します。
# svcs
無効なサービスや不完全なサービスを含め、すべてのインスタンスを表示します。
# svcs -a
Apache 2.2についての情報を表示します。
# svcs -l svc:/network/http:apache22
有効になっているが実行されていない、または別の有効なサービスが動作しているため実行できないインスタンスを表示します。
# svcs -xv
- 何も表示されなければ、該当のサービスインスタンスはありません。
サービスインスタンスを有効にする
サービスインスタンスを有効にし、起動します。
# svcadm enable [ FMRI | pattern ]
FMRIには、有効にするサービスインスタンスのFMRIを指定します。[ FMRI | pattern ]は複数指定することができます。また、部分一致などのパターンマッチングを利用できます。
有効にしたサービスインスタンスは、再起動後も継続して有効になります。
主なオプション
- -r
- 指定したインスタンスが依存しているサービスインスタンスを再帰的に有効にします。
- -t
- 指定したインスタンスを一時的に有効にし、起動します。これは、次の再起動までに限り継続します。
利用例
Apache 2.2を有効にし、起動します。
# svcadm enable svc:/network/http:apache22
サービスインスタンスを無効にする
サービスインスタンスを無効にし、停止します。
# svcadm disable [ FMRI | pattern ]
FMRIには、無効にするサービスインスタンスのFMRIを指定します。[ FMRI | pattern ]は複数指定することができます。また、部分一致などのパターンマッチングを利用できます。
無効にしたサービスインスタンスは、再起動後も継続して無効になります。
主なオプション
- -t
- 指定したインスタンスを一時的に無効にし、停止します。これは、次の再起動までに限り継続します。
利用例
Apache 2.2を無効にし、停止します。
# svcadm disable svc:/network/http:apache22
サービスインスタンスを再起動する
# svcadm restart [ FMRI | pattern ]
FMRIには、再起動するサービスインスタンスのFMRIを指定します。[ FMRI | pattern ]は複数指定することができます。また、部分一致などのパターンマッチングを利用できます。
この操作は、サービスインスタンスの状態が以下のときのみ有効です。
- online
- degraded
利用例
Apache 2.2を再起動します。
# svcadm restart svc:/network/http:apache22
maintenance状態のサービスインスタンスを起動する
何らかの理由でmaintenance状態になったサービスインスタンスを起動し、onlineに移行します。
# svcadm clear [ FMRI | pattern ]
FMRIには、起動するサービスインスタンスのFMRIを指定します。[ FMRI | pattern ]は複数指定することができます。また、部分一致などのパターンマッチングを利用できます。
利用例
httpd.confに誤りがありmaintenance状態になってしまったApache 2.2を、httpd.conf修正後に起動します。
# svcadm clear svc:/network/http:apache22
サービスインスタンスのプロパティを反映する
サービスインスタンスのプロパティを変更した場合は、以下の方法で反映します。
# svcadm refresh [ FMRI | pattern ]
FMRIには、プロパティを反映するサービスインスタンスのFMRIを指定します。[ FMRI | pattern ]は複数指定することができます。また、部分一致などのパターンマッチングを利用できます。
反映したプロパティの一部はすぐに有効になります。その他のプロパティはインスタンスを再起動するまで有効になりません。
サービスインスタンスのプロパティの変更については、サービスインスタンスのプロパティを変更するをご参照ください。
利用例
Apache 2.2のプロパティを変更後、反映して再起動します。
# svcadm refresh svc:/network/http:apache22 # svcadm restart svc:/network/http:apache22
サービスインスタンスのプロパティを変更する
サービスのプロパティを変更するときは、svccfgコマンドを利用します。
このコマンドは、個別のサブコマンドを利用するか、対話形式で利用することができます。
# svccfg [ subcommand ]
[ subcommand ]には、実行するサブコマンドを指定します。指定しない場合は、対話形式へ移行します。
主なオプション
- -s [ FMRI ]
- 対象のFMRIを指定します。
利用例
Apache 2.2の現在のプロパティを一覧表示します。
# svccfg -s svc:/network/http:apache22 listprop
以下は、Apache 2.2の設定をサブコマンドと対話形式のそれぞれで変更する場合の例です。
■変更内容
- 動作モード:64bit
- MPM:Worker
■サブコマンドで変更する場合
# svccfg -s svc:/network/http:apache22 setprop httpd/enable_64bit = true # svccfg -s svc:/network/http:apache22 setprop httpd/server_type = worker # svcadm refresh svc:/network/http:apache22 # svcadm restart svc:/network/http:apache22
■対話形式で変更する場合
# svccfg -s svc:/network/http:apache22 > setprop httpd/enable_64bit = true > setprop httpd/server_type = worker > exit # svcadm refresh svc:/network/http:apache22 # svcadm restart svc:/network/http:apache22
ご注意
- この例では、モジュール版PHP(mod_php)は動作しません。モジュール版PHPをご利用の場合は、32bit / prefork MPMに設定する必要があります。