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]
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:
- Ein Taster zum Heruterfahren des Servers
- Eine Watchdog, um den Server zu �berwachen
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]
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
500 Ohm Relai:
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).
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 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