「遠くのサーバも柴犬に見張らせれば大丈夫(^^)」

Ver 0.2 Copyright(C) 1997, Hisaaki Shibata

柴田 尚明@福岡

shibata@opost1.netspace.or.jp

何らかの要因、例えば電源の瞬断などでハングアップしてしまったリモートにあるLinuxboxに対して、自動でハードウエアリセットしたり電源を落としたりして復旧させる仕組みを考えています。
公開してご意見を伺い、出来ればもうちょっと改良したいと思っておりますm(_|_)m。
ご意見は、
linux-users MLFA-NET MLなどの関連MLかメールでお願いします。

最近、忙しくてNetNewsはあまり見ていませんし、postもしていませんのでMLかメールでお願いします。
尚、本ドキュメントは全文丸ごとであればどこへでも転載可能/リンク可能です(^^)が 商用利用の場合は、ここで取り上げているキットの回路に関しては各開発/販売元に仁義を切った方が良いでしょう(^^;


目次

0 .来歴・トピックス
1 .経緯
2 .関連情報
3 .用意したhardware
4 .用意したsoftware
5 .動作確認をしたもの
6 .いくつかの問題点
7 .そのうちやること
8 .謝辞


0.来歴・トピックス

[次へ][目次へ]

1997/9/13 Ver. 0.2

1997/8/31 Ver. 0.1 1997/8/30 Ver. 0.0

1.経緯

[次へ][前へ][目次へ]

Linux Users MLの九州・沖縄近辺の配送を引き受けているhis.ktarn.or.jpは、インターネット久留米殿の御後援で同NOC内に私の個人所有物であるLinux BoxをIP reachableな環境に置かせていただいています。

このLinux Boxは元々私が「始めて」自分で組み立てたPC/AT互換機であり、その後2台目、3台目と増えていき自宅に置けなくなったいわば「お古」です。

なので、ちょーっと歳を取っているためにハードウエア的に不安定なところがあったりしますし、もし仮にハングアップしたとして、復旧するために自宅からLinux Boxが置いてあるNOCまでは高速を通って車を飛ばしても、1時間以上かかるところにあります。

過去に3回ほど、原因不明のハングアップが発生し、linux-users MLの配送が出来なくなったりしましたm(_|_)mが、その度にNOCの管理者である足立さんに電話して復旧させていただいておりました。

しかしながら、個人的に置かせていただいているものを、勤務時間内に面倒見て頂くのも気が引けますし、足立さんが出張のときや深夜にハングアップした場合は復旧までかなりの時間を必要とし、悶々として過ごすことになります(^^;

Linuxそのものはかなり堅牢なものですが、さすがにハードウエア障害には耐えられません。
そこで、ハードウエア障害が発生し、ネットワークを介してリモートからの制御が効かなくなるほどの異常事態には、強制的にリセットまたは電源OFF/ONを行うハードウエアを作ることにしました。

必要な機能は限られているので、なるべくシンプルなハードウエアを目指し、予算は5千円以内で済ますことを目標にしました。

#ま、目標は、あくまで目標(^^;


2.関連情報

[次へ][前へ][目次へ]


3.用意したhardware

[次へ][前へ][目次へ]

ここで、番犬(簡易Watch Dog Timer)の仕様/回路に関してご紹介します。


4.用意したsoftware

[次へ][前へ][目次へ]

基本的にcronで3〜4分毎にBeepを鳴らすだけです(^^;

#ネットワークはハングアップしているけどcronは動いているような場合には、
#対応できませんが、今までのハングアップの例ではキー入力も効かないほどの
#ハングアップ状態であったので、このような運用で大丈夫だと思っています。
FA-NET MLに流したものを引用します。
> 2.1 WDT 制御ソフトウエア仕様
> (1)入力
> ・特になし
> 
> (2)出力
> ・一定時間毎にスピーカを鳴らす動作を行う。
>   具体的には、cronの設定で3分毎に echo ^G > /dev/console を実行する
> 	#WDTが、これで良いのか?(^^;;;;;
と、言うわけで設定はcrontab -eでエディタを立ち上げて、
*/3 * * * * echo ^G > /dev/console
と書けばおしまいです(^^;

^Gの部分はCtrl-Gですが、入力する場合には先にCtrl-Vを入れてからCtrl-Gです。

#BIOSかBeepを鳴らしてからLinuxが最初にBeepを鳴らすのに
#非常に時間がかかる場合は、rcファイルの中でもBeepを鳴らすようにしてみてください。
また、カーネルの一部は生きているけど、NIC周りがおかしくなってremoteからのメンテナンスが出来なくなるような状況を考えて、今後は外部に定期的にpingを行い、その結果が正常である場合にはBeepを鳴らすように変更しようと思っています。

5.動作確認をしたもの

[次へ][前へ][目次へ]

動作したものを示します


6.いくつかの問題点

[次へ][前へ][目次へ]

6.1 PC/ATのスピーカインタフェース仕様 [解決(^^)]

これに関しても、FA-NET MLに流したものを引用します。
> 柴田(ひ)@福岡です。
> At [FA-NET:2230] Re: 番犬作成計画  (was Re: TA 2analog port to mgetty ,
> Hisaaki Shibata said...
> 
> 
> > 後の課題は、
> > ・スピーカのところに来ている信号のインタフェース仕様解析
> 
> IntelのWebからチップセットのデータシートをpdf形式で持ってきて
> 中を見たところ、スピーカのドライブは通常のトーテムポールでの
> 出力で、レベルはTTL互換みたいです。
> 
> 	#TTL互換といっても、スピーカを鳴らすぐらいだから
> 	#かなり強力な出力段みたいですね。
> 
> > ・上記に従い、レベル変換や保護用のダイオード/抵抗の追加
> 
> 何も要らないかも知れません(^^)
と、思っていたのですが、
At [FA-NET:2234] Re: 番犬作成計画  (was ... ,
Hideki Wakita said...
> 
>   こんにちは。 柴田さんの「ちょっとした大きな改造」は、面白いですね。
> 
>   参考までに、本家PC/ATボードでは、
> 75477 の出力から、0.01μF のコンデンサでGNDに接続後、30Ωの抵抗を通して
> スピーカのコネクタに接続されています。  
ん?トーテムポールにしては何かおかしいぞ(^^;
At [FA-NET:2237] Re: 番犬作成計画  (was ... ,
Hisaaki Shibata said...

> 柴田(ひ)@福岡です。
> 
> 	#脇田さんの情報が無かったら、
> 	#とんでもないことになっていたかもm(_|_)m
> 
> At [FA-NET:2236] Re: 番犬作成計画  (was ... ,
> Hisaaki Shibata said...
> 
> > > >	#TTL互換といっても、スピーカを鳴らすぐらいだから
> > > >	#かなり強力な出力段みたいですね。
> 
> と、思っていたんですが、
> 
> > >   参考までに、本家PC/ATボードでは、
> > > 75477 の出力から、0.01μF のコンデンサでGNDに接続後、30Ωの抵抗を通して
> > > スピーカのコネクタに接続されています。  
> 
> と、言うことで
> http://www.ti.com/sc/docs/psheets/abstract/datasht/slrs025a.htm
> からSN75477でデータシートをこれまた便利にpdfで取り寄せて中を見て
> びっくり(@_@)
> 
> Continuous output current (see Note 2) 400 mA
> Peak output current: t w 3 10 ms, duty cycle 3 50% 500 mA 
> t w 3 30 ns, duty cycle 3 0.002% 3 A 
> Output clamp current, I OK 400 mA
> 
> などと書いてました。
> 
> 等価回路を見てみると、出力段はトランジスタがついていて
> クランプダイオード付きのオープンコレクタになっているようです(^^;
> 
> 	#Intelのチップも実際は外付けのトランジスタを使うんだろうなぁ。
> 	#やはりスピーカはノーマルTTLとは言ってもドライブできないよなぁ。
> 
> てなわけで、
> 
> > > >> ・上記に従い、レベル変換や保護用のダイオード/抵抗の追加
> > > >
> > > >何も要らないかも知れません(^^)
> 
> やはり何か要りそうです(ToT)
> 
> 問題は、何ボルトで釣り上げているか調べることですねぇ。
> 	#面倒だなぁ。どこかに書いていないかなぁ。
こう言う状況でした。しかし脇田さんが再び(^^)
> At [FA-NET:2238] Re: 番犬作成計画  (was ... ,
> Hideki Wakita said...
> 
> >   脇田@久留米です。
> > 
> > Hisaaki Shibata  さんは書きました:
> > >柴田(ひ)@福岡です。
> > >
> > 
> > >問題は、何ボルトで釣り上げているか調べることですねぇ。
> > >	#面倒だなぁ。どこかに書いていないかなぁ。
> > >
> > 
> >   再び、本家PC/ATでは、次のようになっています。
> > 
> >   SPEAKERコネクタの No.1 pin --> 30Ω(75477-6pin)
> >                     No.2 pin --> none (ポラキー)
> >                     No.3 pin --> GND
> >                     No.4 pin --> +5V
> >   75477が、オープンコレクタならば、スピーカは、No.4〜No.1 pin の間に
> >   接続してあると思われます。 ただ、外部電源より供給されていれば、
> >   わかりませんが... 。よって、常識的には、+5V で釣ってあるでしょう。
> > 
> >   参考になれば幸いです。
> > 
> > PS : 情報ソースは、
> >      「別冊インターフェース BootStrap Project-2 No.4  CQ出版」です。
いやー、結局特殊なインタフェースは何も要らないみたいです(^^)

いいかげんながら、50kΩほどのpull-up抵抗を繋いで、上記のNo.1 pinに 繋ぐことで何とか十分スイングしてくれているようです。
但し、スピーカは繋いでいないため、Beep音は聞こえなくなりました。
サーバ機は人里はなれた山奥に置かれることが多いので、Beep聞く人もいないだろうし問題ないよね?(^^;

6.2 本来Watch Dog Timerとはどうあるべきなのか?

/usr/src/linux/Documentation/Watchdog.txtによると
Features
--------
                WDT501P         WDT500P         Software
Reboot Timer       X               X                X
External Reboot    X               X                o
Temperature        X               o                o
Fan Speed          X               o                o
Power Under        X               o                o
Power Over         X               o                o
Overheat           X               o                o

The external event interfaces on the WDT boards are not currently supported.
Minor numbers are however allocated for it.
と書いてあります。
今回作成したWDTはReboot Timerのみoがついているのだと考えております。
と、するとSoftware WDT + 今回のWDTで完璧なの?
でもなぜ、Software WDTでTemperatureにoがつくのか、さっぱり分かりません(^^;
もしかして、xとoの意味が逆なのかな???

そして、本来のWatch Dog Timerとはどのような機能を持ったものなのか、良く分からなくなりました(^^;
どなたかご教示くださいm(_|_)m

と、行っていたんですがWatchdog.txtの著者であるAlan Cox氏にメールを出して直接聞いてみましたm(_|_)m
その結果、ある程度疑問が氷解しましたので、メールを引用してみます。

At Re: Question about Documentation/watchdog.txt ,
Alan Cox said...

> > (1) X means Available and o means NOT Available ?
> Yes
> 
> > (2) If so, How software WDT can reboot hardware in case of the kernel panic ?
> 
> It does it off a timer interrupt. This means if it crashes with interrupts
> disabled not a lot happens, and the watchdog fails to recover the machine. Thats
> one limit of the software watchdog
> 
> > (3) What does "The external event interfaces on the WDT boards" mean ?
> 
> There are two digital inputs on the WDT boards that can be set to cause
> an interrupt if triggered, or to fire the watchdog (eg to reboot the machine
> externally)
更にこれに対して私が以下のように再度質問していますm(_|_;)m
At Re: Question about Documentation/watchdog.txt ,
Hisaaki Shibata said...

> > > (3) What does "The external event interfaces on the WDT boards" mean ?
> > 
> > There are two digital inputs on the WDT boards that can be set to cause
> > an interrupt if triggered, or to fire the watchdog (eg to reboot the machine
> > externally)
> 
> Hmmmm... two inputs.... Is the following diagram right?
> 
> +---WDT---------+
> |               |
> | the 1st input +<------IRQx-------< any other hardware
> |               |
> | the 2nd input +<------force REBOOT signal------< external reset hardware
> |               |
> | reset output  +--------> PC mother board RESET circuit
> +---------------+
> 
> I thought the 1st is output.
> 	If WDT go in the warnig status, WDT asserts IRQx for warning.
> 	And if software retrigger or reset WDT, the IRQx will be negate.
> 	Or time is up, WDT force RESET.
この返事はシンプルで
At Re: Question about Documentation/watchdog.txt ,
Alan Cox said...

> 
> Near enough for the WDT500 hardware I am using. 
> 
でした(^^;

6.3 電源投入時の招かれざるRESET信号の発生....

現在のWDTはリセットスイッチをON/OFFするため、電源はPCの内部から取っています。
この時、PCの電源投入時に、設計時点で予期していないリセットパルスが出てしまいます。タイムチャート参照
リセットの場合には、別にかまわないような気もするんですが、電源OFF/ONする場合には、大問題です(^^;。
PCの電源OFF/ONの場合には、WDTの電源はいやでもPC以外から取ることになるでしょうが、そうすれば自然に解決する問題かもしれません。
やはりATXのマザーにして5Vのサブ電源で動くようにしたいところです。
#どなたかATX機をください(°° )\バキッ☆
#現在私はAT機しか持っていません(T_T)


7. そのうちやること

[次へ][前へ][目次へ]

7.1 必ずやる

(1)早期組み立て及び自宅での検証
一応、動いているようです。ただし、正常動作のときにリレーが動かないことと、cronを止めた時にリレーが動くことのみの確認であって、実際にリセットさせているわけではありません(^^;
どなたかカーネルまでハングアップさせる方法をご存知ないでしょうか?(^^;;;;
これは、前述したように1回だけですがきちんと動作し、解決しました。
(2)his.ktarn.or.jpへの組み込み

7.2 気が向いたらやる

(1)RS-232-Cインタフェース版またはセントロインタフェース版の作成
(2)NMI割り込みへの対応
でも、OSかBIOSに手を入れないとだめなんだろうなぁ....

7.3 お金があったらやる

(1)ボードのマスクを起こしちゃう...キットがあるから無駄だな(^^;

8.謝辞

[次へ][前へ][目次へ]

今回、「番犬作成計画」を始めた際にFA-NET-MLの皆さんにいろいろと情報を頂きました。特に星野さんには検討の場を提供していただきありがとうございます。純正PC/ATの作りに関して教えていただきました久留米の脇田さんにも感謝いたします。
また、TC4538BPのデータシートをメールで送っていただきました大分の森永さんと、東芝のWebサイトを教えていただきました東芝の石岡さんにも感謝いたします。
ありがとうございます。m(_|_)m

以上


[玄関へ] [総本店へ]