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]](../../common/images/Guido-S.gif) 
 
    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]
    ![[Illustration]](../../common/images/article239/final_circuit_th.gif) 
 
    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]](../../common/images/article239/linuxpcwd120_schematic_th.gif) 
 
     500 Ohm Relai:
     ![[500 Ohm relay]](../../common/images/article239/linuxpcwd500_schematic_th.gif) 
 
     
     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]](../../common/images/article239/ne555_schematic.gif) 
 
    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