予測的セルフヒーリング:Oracle Solaris 10 新機能
機能編(1):Solaris Service Manager
概要
Solarisでは、ユーザからのリクエストに応答するためのサービスがサーバ上で稼動しています。例えば、ファイル転送やメールの送受信を行うサービスなどがあります。
Solaris Service Managerはサーバ上で稼動するサービスを一元管理する機能です。Solaris Service Managerがサーバ全体のサービス依存関係を管理し、必要に応じてサービスの起動または再起動を行います。
Solaris Service Managerを利用することにより、システムの管理作業が軽減します。
システムの起動時間を短縮
Solaris 9までは、サーバ起動時に、起動スクリプトを一つずつ順番に読み込んでサービスを起動していくという仕組みでした。この仕組みは数人で利用している小規模システムとしてはサービスを追加しやすく、シンプルで使い勝手の良いものでした。
しかし、今日のUNIXシステムは高速処理が必要となる大規模基幹系業務に利用されることが多くなっています。このようなシステムではサーバ起動時に多数のサービスを起動するため、サーバが利用できるようになるまで時間がかかるという問題がありました。
Solaris 10ではSolaris Service Managerにより、あらかじめ順序や依存関係を記述してあるリポジトリの内容に従ってサービス間の依存関係を自動で判断し、複数のサービスを同時に起動できます。そのため、サーバの起動時間の短縮を実現しています。
サービス再起動の自動化
Solaris 9まではシステム管理者がサービスを管理するためにはサーバやサービスに関する深い知識が必要でした。例えば、サービスAが何らかの理由で終了してしまった場合に、システム管理者が自分でサービスAを再起動しなければなりませんでした。また、システム管理者はサービスAを再起動する前に、サービスAが依存するサービスB、Cの状態を確認し、もし停止していたら再起動する必要がありました。
Solaris Service Managerではサービスが異常終了しても、自動でサービスの再起動を行う仕組みとなっています。システム管理者が停止したサービスに依存するサービスを調べたり、再起動したりする必要はありません。Solaris Service Managerがサーバ起動時だけでなく、サーバ稼働中もサービスを監視しており、サービス異常終了時にリポジトリの記述から依存するサービスの状態を確認し、サービスの再起動を行います。Solaris Service Managerにより、システムの管理作業が軽減します。
新しいコマンドでのサービス管理
Solaris Service Managerでは、サービスの監視、管理をするための新しいコマンドsvcs(1)、svcadm(1M)等が提供されました。新コマンドを使用することでサービスの管理が容易になります。Solaris9まではサービスを構成する個々のプロセスを確認することでサービスの状態を確認する必要がありましたが、Solaris Service Managerではサービスの単位で状態を確認することが可能です。
svcs(1)コマンド
起動していないサービスを含めて全てのサービスの状態を把握できます。そのため、サービス全体の管理ができます。
svcadm(1M)コマンド
サービスの起動・停止・再起動等を行うコマンドです。svcadm(1M)を使用すると、サービスの依存関係を確認し、必要なサービスがあれば一緒に起動・停止します。
例えばサービスAとサービスAが依存するサービスBがあるとします。Solaris 9以前ではサービスを起動するために、システム管理者がまずサービスBを起動して、その後サービスAを起動する必要がありました。しかし、Solaris 10で提供されたsvcadm(1M)コマンドを使用してサービスAを起動すると、Solaris Service Managerが判断して自動的にサービスBを起動してからサービスAを起動します。システム管理者が1回のコマンド入力で必要なサービスを全て起動することができます。
なお、Solaris 10システムの場合、kill(1)やpkill(1)コマンドを使用してサービスを停止させると、Solaris Service Managerが自動的にサービスを再起動してしまいます。そのため、svcadm(1M)コマンドを利用してサービスを停止する必要があります。
参考:サービスの状態表示、起動、停止における比較(例:cronプロセスの場合)
|
Solaris 9以前 |
Solaris 10 |
状態表示 |
ps(1)コマンド
(ただし、個々のプロセスの状態表示のみ) |
svcs(1)コマンド、およびps(1)コマンド |
一時的に停止 |
# /etc/init.d/cron stop
(またはプロセスをkill) |
# svcadm disable -t system\
/cron:default |
一時的に起動 |
# /etc/init.d/cron start |
# svcadm enable -t system\
/cron:default |
停止し、サーバ起動時にサービスを起動しない |
(1) # /etc/init.d/cron stop
(2) # mv /etc/rc2.d/S75cron /etc\
/rc2.d/_S75cron
(サービスを起動するスクリプトの名前を変更) |
# svcadm disable system\
/cron:default |
再起動 |
(1) # /etc/init.d/cron stop
(2) # /etc/init.d/cron start |
# svcadm restart system\
/cron:default |