パソコン鳥のブログ

アクセスカウンタ

zoom RSS Linuxでウオッチドッグ機能を使用する

<<   作成日時 : 2014/11/19 21:09   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

システムが正常に動作しているか監視し、異常発生時にシステムのリセット等を行う「ウオッチドッグ」についてです。

ウオッチドッグでは、定期的にソフトウェアがハードウェアタイマーにアクセスします。
もし、このアクセスが途絶えると、システムに異常が発生したと判断し、リセット等が行われます。

ハードウェアタイマーが無い場合は、softdog と呼ばれるソフトウェア版を利用します。
ただし、ハードウェアタイマーがハードウェアでリセットを実施するのに対し、softdog ではソフトウェアでリセットを実施します。
softdog自体も動作できないような状況下では、リセットがされないので、ハードウェアタイマーがある場合はそちらを使用します。


タイマーの確認


マザーボードでインテル・チップセットを使っている場合、ハードウェアタイマーが利用できます。
rootで lsmod | grep iTCO_wdt を実行し、iTCO_wdt を含む行が表示されれば、ハードウェアタイマーが利用できます。


# lsmod | grep iTCO_wdt
iTCO_wdt 7115 0
iTCO_vendor_support 3056 1 iTCO_wdt


無い場合は、ソフトウェア版タイマー softdog を使用します。

root で modprobe softdog 実行後に、lsmod | grep softdog を実行します。
softdog を含む行が表示されれば使用できます。


# lsmod | grep softdog
softdog 13319 0



以上で、ハードウェアタイマー iTCO_wdt か、ソフトウェア版タイマー softdog、どちらが使用できるかを確認しておいて下さい。
後ほど、設定でどちらを使用するかを指定します。



パッケージインストール


Linuxでは「ウオッチドッグ」機能を提供するパッケージ watchdog があります。

インストールは下記で行います。


Ubuntu の場合
apt-get install watchdog

CentOS の場合
yum install watchdog




設定


タイマーの確認 の箇所で、ハードウェアタイマー iTCO_wdt か、ソフトウェア版タイマー softdog、どちらが使用できるかを確認しました。
どちらのタイマーを使用するかは、/etc/default/watchdog ファイルの watchdog_module 行で指定します。

・ハードウェアタイマーが使用できる場合

/etc/default/watchdog

watchdog_module="iTCO_wdt"


・ソフトウェア版タイマー softdog を使用する場合

/etc/default/watchdog

watchdog_module="softdog"

softdog を使用する場合は、カーネルパニックが発生すると softdog自身も動作出来ない為、softdogによるリセットも起こりません。
そこで、カーネルパニック時に自動起動する設定を行なっておきます。

/etc/sysctl.conf

kernel.panic = 60
kernel.panic_on_oops = 1

設定を反映させます。

sysctl -p



ハードウェアタイマーや、ソフトウェア版タイマーの設定で行った設定を、watchdogへ反映させます。

/etc/init.d/watchdog stop
/etc/init.d/watchdog start


なお、/etc/init.d/watchdog reload とすると、/etc/default/watchdog の watchdog_module行で指定したモジュールの反映が行われません。
必ず、上記のように stop した後に start して下さい。

設定後、システム起動時にも自動的に watchdog が起動するようになります。



動作


watchdogパッケージでは、システム起動時の出来るだけ早い時期に、プロセス wd_keepalive が起動します。
システム起動が完了すると、プロセス wd_keepalive が終了し、プロセス watchdog が起動します。

プロセス wd_keepalive , watchdog は、一定時間ごとに、ハードウェアタイマー iTCO_wdt や、ソフトウェアタイマー softdog へアクセスします。
アクセスは、/dev/watchdog を介して行われます。
デフォルトでは、60秒間 /dev/watchdog へのアクセスが滞ると、システムがリセットされます。

ちなみに、softdog で実施されるリセット処理は、下記で紹介した echo b > /proc/sysrq-trigger と同じことが実施されます。

linux強制再起動 − shutdownコマンドでもダメな時の再起動手段 パソコン鳥のブログ/ウェブリブログ


システム停止時には、プロセス watchdog が終了して、代わりにプロセス wd_keepalive が起動します。


これで、ウオッチドッグ機能が動作できます。



設定その2


動作 の箇所の説明で、プロセス watchdog、wd_keepalive の2つが出てきましたが、違いは何でしょうか?

wd_keepalive は、一定時間ごとに、ハードウェアタイマー iTCO_wdt や、ソフトウェアタイマー softdog へアクセスする機能だけです。

一方、watchdog は一定時間ごとにタイマーへアクセスする機能に加えて、システムを監視して異常になったらリブートを行う機能があります。
例えば、ロードアベレージを監視して、高すぎる場合にはリブートさせることが出来ます。

ここで行われるリブートは通常のシステム再起動時と異なり、実施されるリブート手順が簡単になっています。
これは、watchdog がリブートするような、メモリ使用量異常やロードアベレージが高い状況では、通常のリブートでは失敗する可能性が高いからです。
その為、watchdog ではより確実にリブートできるようになっているようです。


以降では、watchdog で監視できる項目とその設定について説明します。
設定後は、/etc/watchdog.conf に記述し、次のコマンドで watchdogへ反映させて下さい


/etc/init.d/watchdog stop
/etc/init.d/watchdog start




・ロードアベレージ
指定したロードアベレージ以上になると、異常と判定します。
1,5,15分平均のロードアベレージを下記書式で指定します。


max-load-1 = 40
max-load-5 = 30
max-load-15 = 20



・ネットワークインタフェースでのパケット受信
指定したネットワークインタフェースでパケットを受信していないと、異常と判定します。
下記書式で指定します。指定は、複数行出来ます。

interface = eth0

パケット受信のチェックは、デフォルトでは1秒ごとに行われます。
この監視項目では、チェック間隔をデフォルトの1秒から長くした方が良いです。
チェック間隔は /etc/watchdog.conf で下記のように秒数で指定して下さい。

/etc/watchdog.conf

interval = 3

間隔が短いと、異常と判断されやすくなります。
但し、間隔が長過ぎると、異常に気付くまでに時間がかかることになりますので、バランスをとって下さい。


・ping の疎通
指定した宛先アドレスに ping が通らないと、異常と判定します。
宛先をを下記書式で指定します。指定は、複数行出来ます。


ping = 192.168.1.100



・メモリ使用量
メモリの空き容量が一定サイズ以下で、異常と判定します。
空き容量はページ数で下記書式で指定します。
1ページは 4096 Bytes なので、下記の例では 4096Bytes × 10000 = 約40MB を指定しています。


min-memory = 10000


なお、「メモリの空き容量」は、/proc/meminfo の結果の MemFree:の行と、SwapFree:の行の合計です。
watchdog の-ソース memory.c にて確認しました。





参考


ウォッチドッグタイマで自動的に再起動する - いますぐ実践! Linuxシステム管理 / Vol.198

Linux/softdog(watchdog) - PukiWiki Plus!

仙石浩明の日記: ウォッチドッグ タイマ

仙石浩明の日記: ハードウェア・ウォッチドッグ・タイマー iTCO_wdt のススメ

kernel - カーネルパニック時に自動で再起動させる - Qiita

watchdog(8): software watchdog daemon - Linux man page
Linux Watchdog

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Linuxでウオッチドッグ機能を使用する パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる