Raspberry Pi – Stabiler 24/7 Dauerbetrieb
Die Leistung des Raspberry Pi ist für viele Serveraufgaben vollkommen ausreichend. Aufgrund des minimalen Stromverbauchs von ca. 3,5W liegt es daher nahe den Minirechner im 24/7 Dauerbetrieb einzusetzen. Für einen stabilen Dauerbetrieb müssen jedoch gewisse Punkte beachtet werden.
Zuverlässiges Netzteil
Eine wichtige Komponente für den stabilen Betrieb des Raspberry Pi ist das Netzteil. Erfahrungsgemäß sind viele Probleme, wie z.B. Instabilität, häufige Fehler und Abstürze, auf ein unzuverlässiges Netzteil zurückzuführen. Deshalb sollte man nicht zum nächstbesten No-Name Handynetzteil greifen und stattdessen lieber den ein oder anderen Euro mehr in ein hochwertiges Netzteil investieren. Denn beim Netzteil gilt ganz besonders “Wer billig kauft, kauft zweimal!” und im Internet finden sich teils erschreckende Beispiele, wo Billig-Netzteile regelrecht in Flammen aufgegangen sind.
Welches Netzteil für den Raspberry Pi?
Für einen stabilen Betrieb des Raspberry Pi, sollte es ein hochwertiges Netzteil mit mindestens 2000 mA sein. Beim Raspberry Pi 3 sind die Anforderungen an das Netzteil nochmals deutlich höher, sodass das Netzteil (bei vollbelegten USB-Anschlüssen) 2500 mA liefern können sollte.
Persönlich konnte ich folgende Markennetzteilen mehrfach persönlich testen und habe damit sehr gute Erfahrungen gemacht. Sie ermöglichen auch bei Lastspitzen und mit angeschlossenen USB-Geräten einen stabilen Dauerbetrieb des Raspberry Pi:
Für Raspberry Pi 2 / 3 / Zero
Kühlung
Obwohl der Raspberry Pi bei Auslieferung über keine Kühlkörper verfügt, stellt dies für den Normalbetrieb aufgrund der geringen Wärmeentwicklung kein Problem dar. Wird der RPi jedoch übertaktet, im 24/7 Dauerbetrieb oder als Spielekonsole (Retropie / Recalbox) eingesetzt, sollte für eine ausreichende Kühlung gesorgt werden. Dazu bieten sich kleine Kühlkörper oder ein zusätzlicher SOC-Lüfter an. So wird die Betriebstempertatur zuverlässig gesenkt, was sich positiv auf die Lebensdauer auswirken kann.
Passive Kühlung
Aktive Kühlung
Weiterführende Infos
Im separaten Artikel Raspberry Pi – SOC richtig kühlen (aktiv / passiv) habe ich die Thematik nochmals im Detail behandelt (inkl. Anschlussplan für Lüfter).
Lebensdauer der SD-Karte verlängern
In Foren ist mittlerweile häufiger von Problemen mit der SD-Karte zu lesen, wenn diese über längere Zeit im Raspberry Pi zum Einsatz kam. Um das Risiko eines fehlerhaften Dateisystems oder defekten SD-Karte erheblich zu reduzieren, können verschiedene Maßnahmen ergriffen werden.
HINWEIS: Alle nachfolgend genannten Maßnahmen müssen im Einzelfall entschieden werden.
Schreibzugriff auf SD-Karte reduzieren
Werden bestimmte Dateien regelmäßig erstellt oder geändert, z.B. Bilddateien einer Webcam, sollten diese möglichst ausgelagert werden (RAM, NAS, USB-Speicher). Aber auch bereits im normalen Betrieb gibt es unter Linux Verzeichnisse (z.B. /var/log), die systembedingt ständiger Zugriffe ausgesetzt sind. Für einiger dieser Systemverzeichnisse kann es daher sinnvoll sein, diese ins RAM auslagern.
Um z.B. /var/log in den Arbeitsspeicher auszulagern, müssen folgende Einträge in der /etc/fstab hinzugefügt werden:
none /var/log tmpfs size=5M,noatime 00
Hinweis: Verlagert man Dateien und Ordner in den RAM, so sollte man sich darüber im Klaren sein, dass diese nach einem Neustart nicht mehr verfügbar sind.
Swapping deaktivieren
Der Raspberry Pi verfügt von Haus aus über recht begrenzten Speicher. Für Speicherhungrige Anwendungsfälle kann Swap-Speicher deshalb sinnvoll sein.
In meinen Fall ist der zur Verfügung stehende Speicher jedoch mehr als ausreichend und eine Vollauslastung ist nicht zu erwarten. Um die Zugriffe auf die SD-Karte weiter zu reduzieren, kann daher Swapping mit folgenden Befehlen deaktiviert werden:
Raspbian Jessie / Stretch
sudo dphys-swapfile swapoff sudo systemctl disable dphys-swapfile sudo apt-get purge dphys-swapfile
Raspbian Wheezy
sudo dphys-swapfile swapoff sudo dphys-swapfile uninstall sudo update-rc.d dphys-swapfile remove
Watchdog
Der auf dem Raspberry Pi verbaute BCM2708 von Broadcom verfügt standardmäßig bereits über einen Hardware-Watchdog, der das System im Problemfall neu starten kann. Um diesen zu nutzen, wird ein Kernelmodul und ein Daemon benötigt.
Funktionsweise:
Der Daemon teilt dem Watchdog in regelmäßigen Intervallen mit, dass das System funktioniert. Kommt es nun zu einem Problem und das System hängt sich auf, erhält der Watchdog keine Nachrichten mehr und setzt daraufhin das System zurück.
Watchdog aktivieren und einrichten:
Laden des Kernelmoduls und anschließende Installation des Deamons:
$ sudo apt-get install watchdog $ sudo modprobe bcm2835_wdt $ echo "bcm2835_wdt" | sudo tee -a /etc/modules
Anschließend muss noch die Konfigurationsdatei des Watchdog-Daemon angepasst werden, um die Gerätedatei des Watchdogs und die Bedingungen für einen Reset festzulegen.
$ sudo nano /etc/watchdog.conf
In der Konfigurationsdatei müssen folgende beiden Zeilen auskommentiert werden (Raute-Zeichen am Anfang der Zeile entfernen):
watchdog-device = /dev/watchdog max-load-1 = 24
Betrifft nur Raspbian Jessie / Stretch (!)
Bei Raspbian Jessie muss in der Datei /lib/systemd/system/watchdog.service noch folgender Eintrag ergänzt werden:
[Install] WantedBy=multi-user.target
Zum Abschluss der Konfiguration muss der Watchdog-Daemon nun noch neu gestartet werden. Fertig.
Raspbian Jessie / Stretch
$ sudo systemctl enable watchdog.service $ sudo systemctl start watchdog.service
Raspbian Wheezy
$ sudo /etc/init.d/watchdog restart
Sehr guter Artikel! Das mit dem Watchdog kannte ich noch nicht. Meine Pis laufen derzeit im Dauerbetrieb, aber mit deinen Infos kann ich das ganze noch etwas optimieren.
Ich überwache meine Photovoltaik mit einem Pi.
http://www.weichel21.de/wordpress/2013/06/08/endlich-sma-wechselrichter-auslesen-ohne-windows/
Trotz Watchdog stürzt das System immer wieder ab, d.h der Watchdog startet den Rechner nicht neu. Den Watchdog habe ich mit einer Flashbomb getestet.
Hochwertiges Netzteil ist auch dran. Warm wird er nicht.
Was könnte es noch sein?
Bin für jeden Hinweis dankbar. B.
Unter der Voraussetzung der Watchdog ist richtig konfiguriert, würde ich trotzdem das Netzteil ins Visier nehmen. Meiner Erfahrung nach ist es meist die Ursache für solche Probleme. Entschuldige bitte, wenn ich etwas kritisch nachfrage: Um was für ein “hochwertiges” Netzteil handelt es sich? Leider gibt es viel zu viele Netzteile zu kaufen, die mit 1,2A oder sogar 2A angegeben sind, aber niemals nur annähernd diese Leistung auch stabil liefern.
Die andere Frage ist, geht deiner Anwendung womöglich der Speicher aus? Da der RPi in deinem Fall als Server dient, kannst du den Grafikspeicher auf ein Minimum reduzieren um so den Hauptspeicher zu vergrößern. In meinem Artikel RPi Inbetriebname / Howto habe ich es unter dem Punkt “Memory Split” erklärt.
Hatte das problem auch dass mein rPi anscheinend grundlos vom w-lan netz ging oder hängen blieb, durch regelmässige restarts per cron läuft der jezt schon sehr lange ohne probleme (aber halt mit reboots, aber das spielt bei meiner anwendung keine rolle)
Vielen Dank für den tollen Artikel, vor allem die Ausführungen zum Watchdog fand ich äußerst interessant, leider kommt bei mir schon bei ersten Befehl (sudo modprobe bcm2708_wdog) die Fehlermeldung “ERROR: could not insert ‘bcm2708_wdog’: Exec format error”.
Woran könnte das liegen?
Welche Linux-Distribution setzt du ein? Raspbian?
Ist das System aktuell? Mach mal zur Sicherheit ein:
Ein Neustart nach dem Update hat das Problem behoben, danke trotzdem für die Antwort.
Hi,
nachdem ich das Swapping ausgeschaltet habe, startet mein MySQL Server nicht mehr.
Und wenn man die Log-Files ins RAM verschiebt, muss man Hand anlegen, damit der Webserver wieder startet.
Vielleicht hilft das manchen Nachahmern.
Gruß, Keule
Danke!
Hi,
muß man nach dem Auslagern und mounten der log & run Verzeichnisse ins RAM die chmod daten neu setzen?
Was passiert bei einem Überlauf?
kann ich in einer Art “Schleife rotierend” schreiben?
Danke!
Gruß Holgus
Die Rechte der Logs mußte ich nicht ändern, läuft bei meinen Anwendungsfällen alles bislang problemlos. Beim Betrieb von Apache, nginx & co. scheinen jedoch weitere Eingriffe nötig zu sein, da diese ihre Logverzeichnisse teilweise nicht selbst neu anlegen.
Ich gehe davon aus, dass wenn der im RAM reservierte Speicherplatz für die Logs voll ist, einfach keine Logs mehr geschrieben werden. Durch entsprechende Konfiguration von rsyslog kann das Volllaufen des Log-Speichers aber verhindert werden. Ein Beispiel (was vielleicht noch etwas angepasst werden muss) findet sich hier: http://www.rsyslog.com/doc/log_rotation_fix_size.html
Hast Du mal ein Firmware Update gemacht? Hat bei mir zig Probleme auf einen Schlag behoben.
Mal kurz die Kühler als Thema, bringen die wirklich was bis jetzt scheint es nur schick aus zu sehen.
Die Erfahrungen in unterschiedlich Foren sind eigentlich immer + – 0
Macht bei mir einen Unterschied von ca. 5°C aus.
Nabend Manuel,
sehr guter Artikel, echt klasse.
Ich verschiebe allerdings die Log-Files nicht in den Ram, ist mir zu heikel. Habe bei mir die /etc/logrotate.conf entsprechend angepasst.
Gruß Peter
Hallo,
wie kann man den watchdog anhalten, wenn der Pi dauernd bootet?
Es ist noch nicht mal Zeit sich einzuloggen…
Gruss
@Tim: Ich hatte in meinen watchdog.conf einen Ping auf meinen Router eingetragen. Das hatte zur Folge, dass der Raspberry immer wieder neu bootet, anscheinend, weil watchdog ausgeführt wird, bevor der Raspberry einen Connect mit dem Router ausgehandelt hatte bzw. eine Adresse per DHCP bezogen hatte. Das ist blöd. Ich suche noch nach einer Möglichkeit, watchdog verzögert zu starten (_nach_ Errichtung des wlans ).
Zu deiner Frage:
Eingabeaufforderung in windows, mit cd in “c:program files\putty wechseln (muss natürlich installiert sein :-). Eingabe ist dann:
plink -l user -pw password raspi sudo killall watchdog
(user=dein Benutzername, pw=dein Passwort, raspi=Adresse deines raspis)
Da der Raspberry einige Sekunden up ist, kann dieses einzeilige Kommande schnell durchgereicht werden. Bei Bedarf einige Male wiederholen, bis es klappt.
hi habe dent watchdog installiert. nach dem punkt des auskommentieren soll ich mit $ sudo /etc/init.d/watchdog restart einen neustart durchführen. aber solang ich in dieser configurationsmaske mit dem auskommentieren bin kann ich kein command eingeben.
hilfe wäre toll. ggfs fehlt dieser kleine punkt ja in der anleitung ? liebe grüße
Für “Terminal-newbies” ist wahrscheinlich nano der einfachere Editor:
-> sudo nano /etc/watchdog.conf
Ctrl-O zum Speichern
Ctrl-X zum Verlassen…
als alter DOSer bevorzuge ich mc-edit unter Linux. wird mit mc installiert.
Für alle, die den Log-Eintrag bekommen:
cannot set timeout 60 (errno = 22 = ‘Invalid argument’)
Dies liegt daran, dass der BCM2708 watchdog ein maximales Time-out von 15 Sekunden hat.
Daher sollte in die /etc/watchdog.conf die folgende Zeile eingefügt werden:
watchdog-timeout = 10
Kann man eigentlich die Schreibzugriffe auf die SD-Karte loggen um einen VORHER-NACHHER Vergleich zu machen?
Der Modulname für den Watchdog hat sich geändet und lautet nun in Jessie mit Kernel 4.4 wie folgt:
sudo modprobe bcm2835_wdt
echo “bcm2835_wdt ” | sudo tee -a /etc/modules
Das Thema defekte SD-Karte hat sich für mich im 24/7 Betrieb ein- für allemal erledigt.
Ich habe 2 Raspberries im Dauerbetrieb am laufen.
1. Raspberry mit der Raspberrymatic (2 mal HD a’ 40GB zum tauschen) gesichert an einer USV.
2. Raspberry mit einem Syslog-Server CCU-Historian (HDD mit 80GB).
Beide Systeme laufen bei mir mit einer Festplatte.
Wobei das zweite nicht an der USV hängt.
3. IObroker ist vom Himbeerkuchen auf einen Barbone-PC umgezogen, weil da nun auch ein Asterisk-Server in Verbindung mit freepbx läuft.
Es wäre verdammt schlecht, wenn das erste System aussteigt und ich den Einbruchmelder nicht mehr unscharf schalten könnte. Vom Betreten des Hauses reden wir in diesem Fall erst gar nicht.
Mit dem PI3 stellt es absolut kein Problem dar, auf eine USB-Festplatte umzusteigen. Das System benötigt zum Start nicht einmal eine SD-Karte.
Moin,
Gibt es eine zuverlässige Lösung um eine Distanz von ca. 10 Metern für die Stromzufuhr zu überwinden?
Mit bestem Gruß aus Bremen
Mit dem watchdog muss man vorsichtig sein.
Da der Raspberry keine Uhr hat, kann die Zeit beim Booten im Nirwana stehen.
Wenn man z.B. überwacht, ob eine Datei alle x Sekunden beschrieben wird, dann kann man leicht in einen Boot Deadlock kommen, wenn der watchdog beim Systemstart automatisch startet.
Ähnliches gilt für andere Tests, die evtl. schief gehen.
Ich empfehle daher, den Watchdog erst mit Verzögerung z.B. per cron zu starten, damit man im Zweifelsfall etwas Zeit zum Einloggen und manuellen Eingreifen hat.
btw mit aktuellem raspoian lädt man kein Modul mehr für den watchdog, sondern fügt dtparam=watchdog=on in die config.txt ein