Eine Hardware Watchdog mit Taste zum Herunterfahren des Rechners

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to de Guido Socher

AboutTheAuthor:[A small biography about the author]

Guido mag Linux, weil es immer interessant ist, zu sehen, wie Computer wirklich funktionieren. Linux mit seinem modularen Aufbau ist das beste System f�r ein "ich entdecke meinen Computer Abenteuer".

Abstract:[Here you write a little summary]

Der LCD Kontrollfeld Artikel zeigte, wie man eine kleine Microcontroller-basierte LCD Anzeige mit enormen M�glichkeiten baut. Manchmal braucht man aber all diese M�glichekeiten gar nicht. Die Schaltung, die wir hier entwickeln, ist viel billiger (das LCD Kontrollfeld war schon preiswert) und enth�lt nur zwei wichtige Funktionen: Unsere hier vorgestellte Hardware besteht nur aus �berall verf�gbaren Bauteilen. Du wirst keine Probleme haben, die Teile zu bekommen. Alles zusammmen kostet etwa 5 Euro.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Was ist eine Watchdog?

Eine Watchdog ist in der Computersprache ein sehr zuverl�ssiges St�ck Hardware, das sicherstellt, da� der Server immer l�uft. Man findet solche Dinger im Mars Pathfinder (wer m�chte schon zum Mars reisen, um eine Resettaste zu dr�cken?) oder in sehr teuren Servern.

Die Idee, die hinter solch einer Watchdog steckt ist sehr einfach: Der Computer mu� von Zeit zu Zeit "hallo" zur Watchdog sagen, um ihr mitzuteilen, da� er noch am Leben ist. Falls der Computer das nicht macht, bekommt er einen Hardware-Reset.

Beachte, da� ein Linuxserver normalerweise ununterbrochen f�r mehrere Monate arbeiten sollte, im Mittel vielleicht 1-2 Jahre, ohne sich aufzuh�ngen. Wenn du einen Rechner hast, der sich jede Woche aufh�ngt, dann ist etwas faul und eine Watchdog ist die falsche L�sung. Du solltest dann lieber die Hardware �berpr�fen. Defektes RAM (siehe memtest86.com) �berhitzte CPU, zuuuuu lange IDE Kabel ...

Wenn Linux so zuverl�ssig ist, da� es ein Jahr ohne Probleme l�uft, warum braucht man dann eine Watchdog? Nun die Antwort ist einfach: Um es noch zuverl�ssiger zu machen. Es gibt au�erdem ein menschliches Problem. Ein Server, der nie Probleme gemacht hat, ist dem Servicepersonal unbekannt. Wenn der Server dann versagt, wei� niemand, wo er steht. Es kann auch sein, da� der Server genau im Weihnachtsurlaub stehen bleibt und niemand da ist. In all diesen F�llen ist eine Watchdog die richtige L�sung.

Eine Watchdog l�st jedoch nicht alle Probleme. Sie ist kein Schutz gegen defekte Hardware. Wenn man eine Watchdog in den Server einbaut, dann sollte man auch darauf achten, das der Rest stimmt (nicht immer die neusten Boards + BIOS Fehler nehmen, gute K�hlung).

Wie benutzt man eine Watchdog?

Die Watchdog stellt lediglich sicher, da� normale Programme (user space) immer noch ausgef�hrt werden k�nnen. Um ein wirklich zuverl�ssiges System zu haben, mu� man seine Applikationen (Web-server, Datenbank) und System Resources (Plattenplatz, vielleicht CPU Temperatur) �berwachen. Diese Aufgabe k�nnen andere Programme �bernehmen (crontab). All das ist schon in dem LCD Kontrollfeld Artikel beschrieben. Ich gehe daher hier nicht weiter ins Detail.

Beispiele? Hier ist ein kleines Skript, das das Netzwerk, den Swap space und den Plattenplatz �berwacht.


#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
export PATH
#
# Monitor the disk
# ----------------
# check if any of the partitions are more than 80% full.
# (crontab will automatically send an e-mail if this script
# produces some output)
df | egrep ' (8.%|9.%|100%) '
#
# Monitor the swap
# A server should normally be dimensioned such that it
# does not swap. Swap space should therefore be constant
# and limited.
# ----------------
# check if more than 6 Mb of swap are used
swpfree=`free | awk '/Swap:/{ print $3 }'`
if expr $swpfree \> 6000 > /dev/null ; then
    echo "$0 warning! swap usage is now $swpfree"
    echo " "
    free
    echo " "
    ps auxw
fi
#
# Monitor the network
# -------------------
# your _own_ IP addr or hostname:
hostn="linuxbox.your.supercomputer"
#
if ping -w 5 -qn -c 1 $hostn > /dev/null ; then
    # ok host is up
    echo "0" > /etc/pingfail
else
    # no answer count up the ping failures
    if [ -r /etc/pingfail ]; then
        pingfail=`cat /etc/pingfail`
    else
        # we do not handle the case where the
        # pingfail file is missing
        exit 0
    fi
    pingfail=`expr "$pingfail" "+" 1`
    echo "$pingfail ping failures"
    echo "$pingfail" > /etc/pingfail
    if [ $pingfail -gt 10 ]; then
        echo "more than 10 ping failures. System reboot..."
        /sbin/shutdown -t2 -r now
    fi
fi
# --- end of monitor script ---

Man kann dieses Skript mit einem crontab Eintrag kombinieren, der das Skript alle 15 Minuten ausf�hert:

1,15,30,45 * * * * /where/the/script/is

Die Watchdog Hardware

Es gibt kein Standard Relai. Jeder Hersteller hat seine eigenen Bauformen. Bei unserer Schaltung ist es von Bedeutung, wie hoch der Innenwiderstand der Spule ist. Hier sind deshalb zwei Schaltungen ausgef�hrt, eine f�r ein 5V, 500 Ohm Relai und die andere f�r ein 5V, 120 Ohm Relai. Frag nach der Impedanz oder messe sie mit einem Ohmmeter, bevor du das Relai kaufst. Man kann auf die Schaltpl�ne klicken, um ein gr��eres Bild zu erhalten.

120 Ohm Relai
[120 Ohm relay]
500 Ohm Relai:
[500 Ohm relay]

Der Taster zum Herunterfahren ist ein Taster, der RTS und CD verbindet. Er sieht im Schaltbild etwas merkw�rdig aus, da Eagle kein besseres Symbol hat.

Ich liste die ben�tigten Teile hier nicht auf. Man kann sie im Schaltbild gut erkennen (vergi� den DB9 Verbinder f�r die serielle Schnittstelle nicht). F�r die Dioden kann man irgendwelche Dioden benutzen, z.B. 1N4148. Pers�nlich denke ich, da� die Schaltung mit dem 500 Ohm Relai besser ist, weil man R4 nicht braucht und einen 1000uF Kondensator statt eines 2000uF (oder 2200uF) Kondensators f�r C1 verwenden kann.

Beachte, da� man f�r die 120 Ohm Schaltung eine rote LED braucht und f�r die mit dem 500 Ohm Relai eine gr�ne LED. Das ist kein Witz. Der Spannungsabfall �ber einer gr�nen LED ist h�her als �ber einer roten LED.
Boardlayout, Eagle Dateien und eine Postscript Datei zum �tzen der Platine sind in dem Softwarepaket, das man am Ende des Artikels herunterladen kann, enthalten. Die Eagle CAD Software f�r Linux gibt es unter cadsoftusa.com.

Wie die Schaltung funktioniert

Die Watchdog Schaltung baut auf den NE555 Timer Chip auf. Dieser Chip enth�lt 2 Komparatoren, eine Flipflop und 3x 5K Ohm Widerst�nde, um eine Referenz f�r die Komparatoren zu haben. Wenn der Pin namens threshold (6) �ber 2/3 der Versorgungsspannung kommt, dann wird das Flipflop gesetzt (Zustand ein).
[ne555]
Nun ein Blick auf unsere Schaltung: Wir benutzen den RTS Anschlu� von der seriellen Schnittstelle als Versorgungsspannung. Die Spannung an der RS232 Schnittstelle ist +/- 10V, daher brauchen wir eine Diode vor Kondensator C1. C1 wird sehr schnell geladen und dient als Energiespeicher, der in der Lage sein mu�, das Relai f�r einen Moment zum Anziehen zu bringen.
Kondensator C2 wird langsam �ber den 4.7M Widerstand geladen. Der Transistor T1 entl�dt C2 immer, wenn er einen kurzen Puls �ber den RS232 DTR pin erh�lt. Falls die Pulse nicht kommen, weil der Computer sich aufgeh�ngt hat, dann wird C2 irgendwann �ber 2/3 der Versorgungsspannung geladen und das Flipflop geht auf "an". Das Laden von C2 dauert ca. 40 Sekunden.

Der Kondensator C1, der Widerstand R2, die LED und das Relai m�ssen so dimensioniert sein, da� das Relai kurz aus der Energie des Kondensators zum Anziehen gebracht werden kann, aber es darf nicht permanent gehalten werden, selbst wenn RTS auf 10V liegt. Wir wollen schlie�lich erreichen, da� der "Resettaster" nur f�r 1-2 Sekunden "gedr�ckt" wird.

Die LED bleibt an, bis der Server nach einem Reset wieder hoch kommt.

Wie man im Schaltbild sehen kann, gibt es noch einen Shutdown Taster, der mit Pin CD verbunden ist. Wird dieser Taster f�r 15 Sekunden (oder l�nger) gedr�ckt, wird die Treibersoftware "shutdown -h now" ausf�hren und den Server herunterfahren. Das ist f�r normale Wartungsarbeiten gedacht und hat nichts mit der Watchdog zu tun.

Die Treibersoftware

Die Treibersoftware ist ein kleines C Programm, das �ber ein /etc/init.d/ Skript gestartet werden kann. Es schaltet den RS232 Pin RTS permanent ein und schickt dann alle 12 Sekunden einen Puls an DTR (der Timeout der Watchdog ist 40 Sekunden). Falls man den Computer normal herunterf�hrt, dann wird das Programm zuerst RTS ausschalten und dann einen letzten Puls an DTR geben. Der Effekt ist, das Kondensator C1 schon entladen ist, bevor der Watchdogtimeout kommt. Die Watchdog schl�gt also in diesem Fall nicht zu. Um die Software zu installieren, mu�t du einfach linuxwd-0.3.tar.gz auspacken. linuxwd-0.3.tar.gz ist auf der Download Seite zu haben. Mit
make
kompiliert man die Software. Das Programm linuxwd kann nun nach /usr/sbin/linuxwd kopiert werden. Editiere das Skript linuxwd_rc (f�r redhat/mandrake, oder linuxwd_rc_anydist f�r andere Distributionen) und setze den Port der seriellen Schnittstelle, die du benutzt (ttyS1=COM2 oder ttyS0=COM1), ein. Kopiere das rc-Skript dann nach
/etc/rc3.d/S21linuxwd
und nach
/etc/rc5.d/S21linuxwd
Das ist alles.

Testen

Wenn man alles zusammengel�tet hat, sollte man die Schaltung zuerst testen. Verbinde den Pin, der sp�ter an RTS angeschlossen wird, mit 9-10V Gleichspannung und warte 40-50 Sekunden. Du solltest einen kleinen Klick h�ren, wenn das Relai anzieht und die LED sollte angehen. Das Relai sollte nicht permanent anbleiben. Die LED sollte anbleiben, bis man auch DTR mit +10V verbunden hat.
Nach diesem Test kann man die Schaltung an den Computer anschlie�en. Das Programm linuxwd hat einen Testmode, in dem es ausgibt, was es gerade macht und nach einiger Zeit aufh�rt, Pulse an DTR zu senden. Damit wird ein Versagen des Systems simuliert. Mit dem Befehl

linuxwd -t /dev/ttyS0

f�hrt man linuxwd im Testmode aus. Die Hardware ist hier an ttyS0=COM1 angeschlossen.

Hardware Installation

Das RS232 Interface hat folgende Pinbelegung:
9 PIN D-SUB MALE

9 PIN D-SUB MALE at the Computer.

9 PIN-connector 25 PIN-connector Name Dir Description
1 8 CD input Carrier Detect
2 3 RXD input Receive Data
3 2 TXD output Transmit Data
4 20 DTR output Data Terminal Ready
5 7 GND -- System Ground
6 6 DSR input Data Set Ready
7 4 RTS output Request to Send
8 5 CTS input Clear to Send
9 22 RI input Ring Indicator

Das Anschlie�en der Schaltung an die RS232 Schnittstelle sollte ganz einfach sein. Um die CPU Reset Leitung anzuschlie�en, mu� man das Kabel finden, das im Computer zu dem Reset Taster f�hrt. Parallel dazu schlie�en wir das Relai unserer Schaltung an.

Zusammenfassung

Eine Watchdog ist keine 100%ige Garantie f�r ein zuverl�ssiges System, aber es ist ein weiterer Schritt in Richtung Ausfallsicherheit. Ein Problem kann es geben, wenn der Filesystem-check nach einem Reset mit einem Fehler stehen bleibt. Ein Journaling Filesystem k�nnte hier helfen, aber ich habe damit noch nicht experimentiert. Die Watchdog, die hier vorgestellt wurde, ist preiswert und einfach zu bauen, zugleich ist sie fast so gut wie teure kommerzielle Produkte.

Links