カーネルパニックで自動リブートの設定、教えます
Linuxのカーネルは頑強で安定しているが、ときにはカーネルパニックに陥ることもある。その原因はハードウェアかもしれないしソフトウェアかもしれない。滅多に起こらないことではあるのだが、それでも起こりうるのだ。
もし、あなたがサーバやその他の常時稼働しているシステムの管理者で、簡単にはアクセスできないような場所にマシンが設置されているのなら、カーネルパニックに陥ってしまったときにはわざわざシステムのリブートのために出向く必要がある。もしくは、無理を言ってほかの誰かにそれをお願いするしかない。しかし、/etc/sysctl.confの設定に少し手を加えれば、カーネルパニック時に自動的にリブートを行うことが可能になる。この設定ファイルでは、カーネルの動作に関するさまざまなパラメータを調整することが可能なのだ。
以下の行を/etc/sysctl.confに加えてみよう。
kernel.panic = 20
これは、カーネルパニックになった場合、20秒後にシステムをリブートするという意味である。デフォルトの設定では、カーネルパニックになった場合はリブートはまったく行われない。しかし、上記のような設定を行うことで、強制的にリブートをかけることが可能になるのである。
もちろん、この設定を有効にする場合でも、swatchのようなログファイルを監視するツールを利用してパニックに陥った原因を見つけ、その問題を適切な方法で修正する必要がある。
一方、ローカルのシステムでは、カーネルパニック時にはキーを押下してリブートできると便利である。Xが動作しなくなってしまったり、キーボードの入力を受け付けなくなってしまった場合には、自動的にリブートするのではなく不思議なSysRqキーを使用してリブートすることを考えよう。
SysRqのサポートを有効にするには、再度/etc/sysctl.confを以下のように編集する必要がある。ディストリビューションによっては、デフォルトでこの設定が有効になっている場合もある。
kernel.sysrq = 1
SysRqキーが必要になる場面が訪れたら、[ALT]+[SysRq]+[COMMAND]の不思議な組み合わせを用いよう。ここで、[SysRq]キーは[Print Screen]キーである。また、[COMMAND]キーは以下のいずれかのキーだ。
- b:ディスクの同期やアンマウントを行わずに直ちにリブートする
- e:initを除く動作中のプロセスすべてにSIGTERMを送信する
- o:システムをシャットダウンする
- s:マウントされているファイルシステムすべての同期を試みる
- u:マウントされているファイルシステムすべてを読み取り専用として再マウントすることを試みる
これらのキーは、同時に押す必要がある。
自動リブートは遠隔地にあるシステムの管理には非常に役立つ。また、SysRqキーの組み合わせは、ローカルのシステムを利用するときにとても便利だ。
- ホワイトペーパー

