OSCam Watchdog für den Raspberry Pi

Wer den Raspberry Pi als Server für OSCam oder ähnliche Dienste verwendet ist darauf angewiesen das der RPi immer zuverlässig seinen Dienst tut. Wer möchte schon andauernd zum Pi laufen und den Stecker ziehen? In diesem Artikel möchte ich euch die Möglichkeiten eines automatischen Neustarts über einen Systemwachhund (Watchdog) aufzeigen.

Hinweis:

Die Instabilität eines Systems hat immer eine oder mehrere Ursachen, ich kann nur davon abraten anstelle Fehler zu beheben einfach einen Watchdog zu verwenden um die Probleme zu Umgehen.

Vorbereitung zum Dauerbetrieb

Vor Einrichtung eines Servers und dem 24×7 Dauerbetrieb sollten folgende Dinge beachtet werden.

Raspberry Pi Model B+

Häufige Fehler

Eine Häufige Fehlerursache ist die Verwendung eines billigen Netzteils für die Stromversorgung. Der Raspberry Pi benötigt ein Netzteil mit mindestens 700mA. Persönlich habe ich mit folgenden zwei Markennetzteilen sehr gute Erfahrungen gemacht, die auch mit angeschlossenen USB-Geräten einen stabilen Dauerbetrieb des Raspberry Pi ermöglichen

SD-Karte optimieren

Die Speicherkarten sind leider nicht für den Dauerbetrieb ausgelegt und gehen bei massiven Schreib- und Lesezyklen gerne mal kaputt. Daher gilt es diese wo möglich zu reduzieren (gilt auch für Reboots). Eine Möglichkeit ist die Daten auf USB Speicher auszulagern und nur die für den Start notwendigen Daten auf der SD-Karte zu belassen. Alternativ können Schreibintensive Bereiche wie Logs in den RAM ausgelagert werden.
Für einiger dieser Systemverzeichnisse kann es daher sinnvoll sein, diese ins RAM auszulagern.

Um /var/log und /var/run in den Arbeitsspeicher auszulagern, müssen folgende Einträge in der /etc/fstab hinzugefügt werden:

Nachteil:
Verlagert man Dateien und Ordner in den RAM sind diese nach einem Neustart nicht mehr verfügbar!

Die Zugriffe können durch deaktivieren des „Swapping“ (Auslagerung von Daten aus dem Arbeitsspeicher) weiter reduziert werden. Das ist allerdings nur sinnvoll wenn man nicht auf das swapping angewiesen ist. Insofern nur OSCam zum Einsatz kommt sollte der RasPi auch ohne swapping zurecht kommen.

Kühlung des RasPi

Obwohl der Raspberry Pi bei Auslieferung über keine Kühlkörper verfügt, stellt dies im Normalfall aufgrund der geringen Wärmeentwicklung kein Problem dar. Wird der RPi jedoch übertaktet oder im 24/7 Dauerbetrieb eingesetzt, ist es sinnvoll kleine Kühlkörper aus Aluminium nachzurüsten. Ebenso wenn ein Gehäuse ohne Lüftungsschlitze verwendet oder der RasPi an einem warmen Ort (z.B. hinter dem Fernseher) betrieben wird. Das senken der Temperatur wirkt sich positiv auf die Lebensdauer aus.

Hardware System Watchdog

Der BCM2708-Chip, welcher auf dem RasPi verbaut ist, verfügt standardmäßig bereits über einen Hardware gesteuerten Watchdog. Dieser startet im Fehlerfall das System neu. Um diesen zu verwenden wird ein Kernelmodul und ein Dienst benötigt.

Der Dienst sendet in regelmäßigen Abständen „Lebenszeichen“ an den Hardware Watchdog, empfängt dieser kein Lebenszeichen mehr vom Dienst nimmt er an dass das Betriebssystem nicht mehr sauber läuft und startet den RasPi neu.

Um den Dienst und das Kernelmodul (Treiber) für den Watchdog zu aktivieren:

Dann muss noch die Konfigurationsdatei des Watchdog Dienst angepasst werden, um das Gerätedatei des Hardware Wachhunds und die Bedingungen für einen Reset einzustellen

In der Konfigurationsdatei müssen die folgenden Zeilen aus kommentiert werden (Raute am Anfang entfernen):

Zum aktivieren der Konfiguration ist ein Neustart des Dienstes notwendig

Andere Variante für die Überwachung durch den Watchdog Daemon findet ihr in der manpage.

OSCam Dienst neu starten

Das Problem des Hardware Watchdog ist das dieser nicht auf ein abgestürztes OSCam reagieren kann. Daher ist es sinnvoll ein zusätzliches Script, welches den OSCam Dienst prüft, einzurichten. Das Skript prüft auf eine existierende PID File, ist keine vorhanden wird oscam gestartet. Das PID File liegt im Standard in /tmp/oscam.pid für einen anderen Speicherort kann in der oscam.conf folgendes angepasst oder eingetragen werden:

Beispiel:
pidfile = /var/run/oscam.pid

Erstellt eine Datei und speichert den Inhalt des scripts unten darin ab, insofern ihr nicht meine Anleitung verwendet habt müssen die Pfade angepasst werden.

Die Datei muss nach dem speichern mit nano noch ausführbar gemacht werden

Als letztes benötigen wir noch einen cron job bzw einen cron table Eintrag welcher das Prüfscript alle paar Minuten ausführt, hierzu starten wir croncrontab

Und fügen folgende Zeile am Ende ein (*/5 = alle 5 Minuten)

Script

Viel Spass!