address Logo

CPU サーバの自動リブート

目次

2007/11/28 写真追加
2007/09/01

ファイルサーバ

Plan 9 の fossil は現在では十分に安定している。僕の経験では、この一年間は停電以外では落ちない。
しかし幾分不可解な状況は残っている。今年の夏休みもそうだが、恒例の停電があった。僕のファイルサーバは全く停電対策はされていないので、もちろん好からぬ方法で落ちた。電源を再投入して 2 回程、一日以内にハングした。しかしその後は正常に動き続けている。こうした立ち上がり時の不安定性は何に起因しているのか僕は知らない。

CPU サーバ

CPU サーバは結構よく落ちている。 CPU サーバはハードディスクを抱えていないので僕にとっては実害は無い。僕はこの場合に自動リブートを行っており、そして、それは問題なく働いている。

CPU サーバがハングする原因は 2 つに分類できる。

第二のケースではカーネル自体は働いており、ping にも反応する。このケースでは Plan 9 は自動リブートのツールを備えている。CPU サーバで

aux/reboot

を実行しておけばよい。

しかし第一のケースでは aux/reboot は働かない。このケースに対処するには CPU サーバを ping で監視して、ping 応答が無ければ CPU サーバを立ち上げ直すのがよい。サーバの自動再起動のニーズは Plan 9 に限らずどの OS でも発生し、対処の基本方法も同じなので、このための小道具は売っている。しかし ...

僕の CPU サーバでは、再起動の方法が「電源切断」ではダメなのだ。何しろ安物のクライアント仕様なので、電源スイッチはソフトスイッチである。だから一旦電源が切れたら、電源ボタンを押さなくては立ち上がらない。コンピュータによってはソフトスイッチでであっても BIOS の設定で切り抜けられるものもあるようだが、少なくとも僕のはダメ。

そこで僕はファイルサーバから ping で CPU サーバをモニターして、CPU サーバーをブリンタインターフェースを使ってリセットする事にした。CPU サーバのリセットケーブルをリレーを使ってショートさせるのである。

回路

以下の回路は一年以上問題なく働いている。
僕は無精者だから、当時の手書きのメモをそのまま(スキャナーで採って)示す。

circuit

回路図 拡大

リレーと IC の駆動電源には USB の 5V 電源が使われている。
プリンターポートのピンからの 5V は弱すぎて、そのままではリレーの駆動には使えない。ここでは
IC(4010) で増幅し、さらにその出力をフォトカプラー(P521)で増幅し、最後にようやく電磁リレー(G6L-1P)に渡している。

ここで使った素子が最適構成だとは言わない。これらは(G6Lを除けば)僕が持っていた有り合わせの素子である。

実物

次の写真が実物

reseter

ソフトウェア

これは CPU サーバからの ping 応答が観測されなくなった時にファイルサーバで実行するプログラムである。

#!/bin/rc
# exectable only on hera
if (! ~ $sysname hera){
        echo reboot_ar is exectable only on hera
        exit
}
p='#L/lpt1dlr'
echo 0xff > $p
sleep 1
echo 0x00 >  $p
if(! ~ $1 -q){
        cat  $p
        echo done
}
echo reset >> /sys/log/reboot