System V initの置き換えUpstartについて


UpstartはLinux起動時のタスクの起動と停止時のタスクの停止を非同期に行う仕組み。昔は/etc/init.d以下のスクリプトで番号を付けて管理し、前のスクリプトの終了を待ってから次のスクリプトに処理を移していたが、それが非同期で実行されるようになった。
Upstartの仕組みはUbuntu6.10から段階的に取り込んでいる模様。

ただ、/etc/init.dの単純な置き換えには留まらないようで、ジョブ(sshやsamba等のサービスの状態をコントロールする単位)は、サービスの起動・停止も管理するが、atやcron、anacronが受け持っていた指定時間になったら実行する処理も段階的に取り込んでいくとの事。

最初はサービスの実行を簡単に見れるところから初めて、段々とイベント駆動に移行していくようなイメージでしょうか。

■ sshサービスを例にとって考えてみる。
正式な書き方        initctl start ssh
シンボリックリンク    start ssh
後方互換            service ssh start
■ 設定ファイル
/etc/init/ssh.conf
■ 後方互換性について
System V initとの互換性がある為、/etc/init.d/以下の起動スクリプトもそのまま引き継げる。
■■ 用語
■ イベント
initに通知されるイベントの事。例えばUSBデバイスの挿抜に伴うイベントの発生等。initctlのemitコマンドでもイベントを発生させることが出来る。例えば、/etc/mountall.confでは下記のように複数のイベントをまとめて発生させ、並列処理できるようになっている模様。

emits virtual-filesystems
emits local-filesystems
emits remote-filesystems
emits all-swaps
emits filesystem
emits mounting
emits mounted
■ ジョブ
イベントが発生した時にUpstartが実行するスクリプト。例えば起動時ならstart、停止時ならstopコマンドが渡されてくる。
ジョブはタスクやサービスごとに分けて記述される。
■ サービス
ジョブの起動停止スクリプトで管理されるsshやsamba等のサービス。
■■ Upstartの定義ファイルについて
■ Upstart導入以前(下位互換があるので共存している)
起動順序や起動スクリプトは下記のディレクトリ内で管理されている。
/etc/init.d
/etc/rc.?d
■ Upstart導入後
イベント駆動に切り替えられ、スクリプト(と言うかconf)は下記のディレクトリで管理されている。
/etc/init

今までは普通に/etc/init.d/???のスクリプトを利用していましたが、今後の事を考えると、initctlを使うようにしていった方が良さそうです。

Upstartの参考

Upstart cookbook
http://upstart.ubuntu.com/cookbook/

Upstart
http://ja.wikipedia.org/wiki/Upstart

UbuntuのイベントベースinitデーモンUpstart
http://sourceforge.jp/magazine/08/02/18/0145226

タグ付けされた , , . ブックマークする へのパーマリンク.

コメントを残す

メールアドレスが公開されることはありません。