カーネルパニック時に再起動させる

こんにちは。hacknoteのohnoです。

今回はカーネルパニックしたときに自動的に再起動させる設定方法の解説です。

はじめに

カーネルパニックとは。

説明しよう!!

カーネルパニック 【英】kernel panic

カーネルパニックとは、オペレーティングシステム(OS)のカーネル部分において、何らかの理由で致命的なエラーが発生し、安全に復旧することができなくなった状態のことである。

だそうです。(他人任せ)

ようするに何かしらの理由で蘇られなくなったのでサーバーが死んだってことですね。

何かしらの理由が何なのかはkdumpを取るなりで調査するのですが、今回は起きた場合にそのままほっとかないで再起動にて自動復旧を図る設定の入れ込みになります。

原因によっては再起動してもまたすぐ再発するし、冗長化してたりしてむしろ蘇られると邪魔って場合には逆に再起動させない設定をいれると良いでしょう。

設定方法

CentOSなどであれば/etc/sysctl.confにカーネルパラメータの設定があり、そちらを変更することでカーネルパニック時に自動再起動が可能です。

まずは入れたばかりのcentos7の値を調べてみます。

[root@ip-172-xxx-xxx-xxx ~]# sysctl kernel.panic
kernel.panic = 0

こちらの値を変えることで再起動をするしないなどが設定できます。

デフォルトの0の場合には特に何もせず、復旧できなければハングしたままになります。

ではカーネルパニック発生から10秒後に再起動する設定を入れてみます。

/etc/sysctl.conf
最終行に以下追記
---------------
kernel.panic = 10
---------------
sysctl -p
sysctl kernel.panic

こちらでkernel.panic = 10が返ってくれば問題なく設定が出来ています。

おまけ

AWSでカーネルバージョンが一定以上の場合にはxen_panic_handler_initとやらが動作してkernel.panicが0だろうが勝手にリブートが走るらしい。