- Um einen Raspberry Pi über Wochen bis Jahre ohne Eingriffe zu betreiben, sollte man vorab Wiederherstellungspfade für den Fehlerfall entwerfen, damit er sich automatisch erholen kann
- Der Leitfaden ist Teil einer breiter angelegten Zuverlässigkeitsserie, die den bisherigen Artikel zum Reduzieren des SD-Karten-Verschleißes ersetzt und Reaktionen auf verschiedene Problemtypen sowie Monitoring-Tipps bündelt
- Die wichtigsten Risiken sind fehlgeschlagene WiFi-Verbindungen, Dienstausfälle, Abstürze durch Instabilität bei Hardware, Firmware oder Treibern sowie SD-Karten-Verschleiß oder vollgelaufener Speicher
- Probleme mit SD-Karten lassen sich durch die Wahl einer geeigneten microSD-Karte, den Verzicht auf swap, weniger Schreibvorgänge, ein schreibgeschütztes Root-Dateisystem und bei Bedarf durch
fsckabmildern - Das Deaktivieren von Journaling kann zwar den Verschleiß verringern, erhöht bei Abstürzen oder Stromausfällen aber das Risiko von Dateisystemschäden und passt daher nicht zu dem Ziel langfristiger Stabilität
Kritische Fehlerpunkte im Langzeitbetrieb
- Wer einen Raspberry Pi langfristig online halten will, sollte für jede Störung durchdenken, wie sich der Pi davon erholen soll, und dabei Vorteile und Risiken möglicher Lösungen gegeneinander abwägen
- Der Autor nutzt Raspberry Pis zu Hause unter anderem als stromsparende FM-Sender und als USV-Energiemonitore
- Die Serie Raspberry Pi Reliability fasst selbst erlebte Problemtypen und Lösungswege zusammen und enthält auch Monitoring-Tipps, vor allem mit Uptime Kuma
- Die Serie versteht sich als umfassenderer Leitfaden als der bisherige Artikel zum Reduzieren des SD-Karten-Verschleißes; die verlinkten Beiträge dienen als aktualisierte Nachfolger
Maßnahmen nach Problemtyp und was man vermeiden sollte
- Fehlgeschlagene WiFi-Verbindungen sind einer der ersten Fehlertypen, die man für den Langzeitbetrieb berücksichtigen sollte
- Ausfälle von Software-Diensten sind ein eigener Bereich mit Bedarf an separaten Wiederherstellungsstrategien
- Instabilität bei Hardware, Firmware und Treibern kann zu Abstürzen führen
- SD-Karten können verschleißen oder vollständig volllaufen und beeinflussen dadurch den Betrieb
- Es beginnt mit der Wahl der richtigen microSD-Karte
- Die SD-Karte nicht als swap verwenden
- Schreibvorgänge auf die SD-Karte reduzieren, insbesondere weniger Log-Schreibvorgänge und gegebenenfalls ein schreibgeschütztes Root-Dateisystem
- Wer kein schreibgeschütztes Root-Dateisystem nutzt, sollte das Dateisystem regelmäßig prüfen
- Das Deaktivieren unnötiger Dienste hilft sowohl der Software-Stabilität als auch dabei, den SD-Karten-Verschleiß zu verringern
- Bevor man tiefgreifende Eingriffe vornimmt, sollte man zunächst Risiken und Vorteile vergleichen
- Wenn Ausfälle tatsächlich auftreten, ist Remote-Logging hilfreich, um die Ursache zu ermitteln
- Ein Beitrag auf Stack Exchange schlägt vor, Journaling zu deaktivieren, doch das sollte man vermeiden, weil es bei Abstürzen oder Stromausfällen die Wahrscheinlichkeit von Dateisystemschäden erhöht
1 Kommentare
Hacker-News-Kommentare
Stattdessen habe ich angefangen, Lenovo Mini-PCs zu kaufen; mit 18 cm x 18 cm x 3 cm sind sie immer noch sehr klein.
Heutzutage bekommt man sie sehr günstig, und sie haben ein ordentliches Gehäuse sowie Kühlung: https://psref.lenovo.com/syspool/Sys/PDF/ThinkCentre/ThinkCe...
Direkt neben mir läuft einer mit i5-8500T, 32 GB RAM und 2 SSDs; im Idle liegt er mit automatischem
powertop-Tuning derzeit bei 5 W: https://wiki.archlinux.org/title/powertopMan könnte eine serielle Verbindung zu einem Mikrocontroller hinzufügen, aber damit wird die Lösung weniger sauber.
In letzter Zeit habe ich auch mein NAS (N5105) und meine Service-Maschine (3215U) auf gebrauchte Mini-PCs und entsperrte Chromebooks verlagert, die ich bei eBay oder auf Flohmärkten gefunden habe. Sie sind billig, halten den Stromverbrauch niedrig, und die Rechenleistung ist im Vergleich zum Pi eine völlig andere Liga.
In Australien kommen nach Ablauf von Leasingverträgen Tausende davon auf den Markt. Die 8500T- oder 8700T-Chips sind hervorragend, können offiziell Windows 11 ausführen und haben Hardware-Transcoding integriert, was sie gut als Plex-Server macht.
Einen von meinen habe ich auf 2 TB SSDs und 64 GB RAM aufgerüstet, und er läuft problemlos 24/7.
Die SD-Karte war wahrscheinlich die größte Fehlerquelle, und wenn man die Kosten für etwas wie eine SSD am RPi mit einrechnet, war es nicht mehr kosteneffizient.
Der erste Rat sollte nicht sein, den Journaling-Modus des Dateisystems einzuschalten.
Der erste Rat sollte sein, das Dateisystem schreibgeschützt einzuhängen,
/varim Speicher zu mounten und alle Logs nicht auf den RPi zu schreiben, sondern an einen ordentlichen Node mit richtiger USV und laufendem NUT zu schicken. Wenn das Dateisystem read-only oder temporär ist, werden Stromausfälle praktisch harmlos.Für einen einzelnen RPi mag das übertrieben sein, aber der Autor sagte, er nutze mehrere davon im ganzen Haus.
Außerdem ist es sinnvoll, A/B-Systempartitionen zu haben und Upgrades durch Neuschreiben einer ganzen Partition durchzuführen, danach die aktive Partition umzuschalten. Dann bleibt immer eine funktionierende Systempartition übrig, selbst wenn die neue Version einen fatalen Bug hat, und die Wiederherstellung ist einfacher.
Auf diese Weise habe ich seit über 20 Jahren mehrere kleine/Single-Board-PCs zuverlässig in verschiedenen Rollen betrieben.
https://www.dzombak.com/blog/2021/11/Reducing-SD-Card-Wear-o...
/var, sondern auch für Orte wie/tmpsollte man tmpfs verwenden. Das dürfte die Lebensdauer der SD-Karte deutlich verlängern.Mich würde interessieren, wie das neue Disk-Image erstellt wird und ob man sich auf jedem Gerät einloggt und es aktualisiert oder ob es dafür Automatisierung gibt.
/varden Gerätespeicher überschreiten.Möglicherweise muss man
/var/lib/dockerauf einen zusätzlichen Speicher verschieben.2011 habe ich einmal ein kommerzielles Produkt gebaut, das auf einem frühen Plug-Computer von Global Scale Technologies lief.
Wir haben nur etwa 20 Stück verkauft, aber alle kamen wegen beschädigter SD-Karten zurück, und ich musste das Root-Dateisystem eilig auf read-only umstellen. Seitdem mag ich diesen Ansatz.
Dieses frühe kommerzielle Produkt war ein Heimsicherheitsprodukt mit sehr kleinen Home-Automation-Funktionen; 2021 habe ich es unter neuem Namen als Open Source veröffentlicht, und inzwischen läuft es auf Single-Board-Computern der Jetson-Reihe: https://github.com/hcfman/sbts-install
Inzwischen sind auch fortgeschrittene YOLO-Modelle als Trigger enthalten. Da es als Standalone-Produkt gedacht war, unterstützte es HTTPS und hatte auch eine GUI, die die gesamte Zertifikatsarbeit kapselte. Diese Funktion ist auch in der Open-Source-Version erhalten geblieben, sodass es einfach ist, selbstsignierte Zertifikate für REST-Aufrufe zwischen Geräten zu verwenden.
Außerdem habe ich den Ansatz mit Multi-Partition-Memory-overlayFS beibehalten und erweitert; der Installer installiert zuerst ein
sbts-base-System, damit andere es als ihr eigenes Basissystem verwenden können.Mit der Zeit begann das System bei jedem Schreibzugriff auf die Festplatte für 1–2 Sekunden zu hängen, was ziemlich schmerzhaft war.
Menschen, die so etwas vorhaben, würde ich zuerst empfehlen zu prüfen, ob sich die benötigte Aufgabe nicht mit einem kleinen Board wie einem ESP32 erledigen lässt.
Der Stromverbrauch ist viel niedriger, der Preis liegt bei ein paar Dollar, und für viele Einsatzzwecke reicht es völlig aus. Wer Python bevorzugt: Viele Boards unterstützen sowohl MicroPython als auch CircuitPython.
Es lohnt sich, das anzuschauen, weil man sowohl die anfänglichen Anschaffungskosten als auch die laufenden Stromkosten senken kann.
Projekte, die ich mit Mikrocontrollern umgesetzt habe, waren über Zeiträume von Jahrzehnten deutlich stabiler als Pi-basierte Projekte, und man muss sich auch weniger Sorgen machen, Teil eines Botnetzes zu werden, weil man vergessen hat, die Standard-SSH-Einstellungen zu ändern. Ich meine, der Standard war doch
pi:raspberry.Neben MicroPython wird auch die Unterstützung für no_std Rust auf dem ESP32C3 von Monat zu Monat besser. Für jemanden, der zum Spaß kleine Heimautomatisierungsprojekte baut, können die zusätzlichen Einschränkungen das Ganze sogar interessanter und lohnender machen.
Allerdings ist ein Pi für jemanden, der bereits mit Linux vertraut ist, meistens deutlich einfacher, und meiner Erfahrung nach sind die Kosten mindestens etwa um den Faktor 10 höher. Zusätzliche Konfigurationen wie SSD-Boot, Netzwerk-Boot, ein schreibgeschütztes Root-Dateisystem und Watchdog-Einstellungen, um dieselbe Zuverlässigkeit zu erreichen, sowie der höhere Stromverbrauch – besonders beim Pi 5 – sollten ebenfalls in die Entscheidung einfließen.
Kann man auf einem ESP32 einen Passwortmanager-Server betreiben? Nein. Pi-hole? Geht nicht. Unifi-Controller? Geht nicht.
Solche Empfehlungen wirken, als würden die Leute sich vorstellen, man setze einen Pi für Dinge wie einen Garagentor-Controller ein; reflexartig einen ESP32 als Pi-Ersatz vorzuschlagen, ist da nicht besonders hilfreich.
Wenn etwas nicht funktioniert, kann man nicht einfach HDMI und Tastatur anschließen und spontan in einer Mainline-Linux-Umgebung debuggen, in der alle üblichen Utilities vorhanden sind.
Ich habe zum ersten Mal MicroPython statt Arduino verwendet und bin wirklich angetan; überraschenderweise ist es sehr stabil. Früher gingen Projekte langfristig oft wegen der WLAN-Energiezustände kaputt, aber bisher habe ich mit der MicroPython-Struktur keine Probleme.
„Periodisch prüfen, ob die WLAN-Verbindung in Ordnung ist, und andernfalls das WLAN-Interface oder den ganzen Pi neu starten“ läuft meistens darauf hinaus – das ist kein Hack, sondern Best Practice.
So wie wichtige Server im Rechenzentrum eine Out-of-Band-Verbindung wie IPMI oder eine fernsteuerbare RPDU-Steckdose haben sollten, sollten wichtige Server an schwer zugänglichen Remote-Standorten Watchdog-Skripte haben.
Natürlich muss man das je nach Einsatzzweck anpassen und die Auswirkungen eines Neustarts sowie die Ausfallzeit bis zum Neustart berücksichtigen; zumindest kann man auffällige Ereignisse protokollieren, um sie später untersuchen zu können.
Als ich einen Remote-RPi ausgerollt habe, war eines der ersten Dinge ein einfaches Bash-Watchdog-Skript. Es war nicht nur für WLAN-Probleme gedacht, sondern für Dutzende Situationen, die kaputtgehen und sich durch einen Neustart beheben lassen können.
Wenn man init nicht zutraut, Dienste zu verwalten, stellt sich die Frage, woher überhaupt die Garantie kommen soll, dass das System Dienste bereitstellt.
Man könnte das mit Skripten nachbauen, aber über diese Phase sind wir bereits hinaus. Ich erwähne systemd oft, will es aber nicht bevorzugen; es gibt auch Alternativen.
Die meisten Dienste nutzen die Umgebung, in der sie laufen, nicht richtig aus. Es wirkt, als erwarte man standortspezifische Anpassungen, etwa dass ein Webserver deklariert, dass er einen bestimmten Mount benötigt.
Eine häufig übersehene Direktive ist
PartOf=. Damit kann man den Neustart eines Dienstes oder einer Ressource an einen anderen koppeln.Noch einfacher dürfte NetworkManager eine Möglichkeit bieten, WLAN-/Portal-Prüfungen anzupassen. Man muss vielleicht nicht gleich ganz radikal werden.
Beim Router versucht er, sich mit der passenden SSID zu verbinden, und pingt dann den Router an; wenn eines von beidem fehlschlägt, schaltet er auf einen anderen Router um. Es gibt zwei identisch konfigurierte Router, deren Stromversorgung an den NO/NC-Kontakten eines SPDT-Relais hängt; wenn einer ausfällt, wird nur der Relaiszustand geändert und auf den anderen umgeschaltet.
Wenn der Router lebt, ruft der Watchdog die Statusseite des Kabelmodems auf und pingt eine von drei IPs im ISP-Netz an, die offenbar der CMTS oder Geräte in deren Nähe sind, um zu prüfen, ob die HFC-Infrastruktur läuft. Wenn es sich um einen Ausfall handelt, der sich durch Neustart nicht beheben lässt, möchte ich schließlich nicht unnötig neu starten.
Leider habe ich keine Möglichkeit gefunden, zwei Kabelmodems mit derselben MAC zu betreiben und umzuschalten, und der ISP erlaubt auch keine zwei Modems auf demselben Konto. Wenn also das Kabelmodem ausfällt, bleibt nur Neustart und hoffen.
Daran hängt ein Batterie-Rack, das Router und Modem auch bei Stromausfall über 30 Stunden betreiben kann; seit ich es im Mai 2020 gebaut habe, war es fast durchgehend online. Der Code ist schrecklich, aber in der Praxis funktioniert es sehr robust.
Es passieren Dinge, die sich selbst mit perfektem Code und Design nicht verhindern lassen, und Watchdog-Timer unterbrechen Endlosschleifen und setzen das System zurück. Dazu gehören Dinge wie Bitflips durch Weltraumstrahlung oder kurze Spannungseinbrüche; bei Raspberry Pi muss man sich außerdem um SD-Karten-Korruption sorgen.
Soweit ich weiß, hat der Raspberry Pi einen eingebauten Hardware-Watchdog-Timer. Arduino hat definitiv einen.
Wir betreiben seit fast zehn Jahren Tausende Pis in Produktionsumgebungen und beginnen nun, auf x86 umzusteigen.
Das Preis-Leistungs-Verhältnis des Pi ist nicht mehr das, was es einmal war. Diese Erfahrungen habe ich kürzlich auf der State of Open Con vorgestellt: https://youtu.be/vX-qK9mxKZI
Unser Service nutzt sie noch nicht, aber laut Dokumentation wirkt sie ziemlich solide und kann Daten auf Disk/SD schützen.
Wir sind mit dem Pi noch ziemlich zufrieden, und auch der Wechsel zu den offeneren APIs Mesa/DRM/KMS/FFmpeg sieht sehr vielversprechend aus, da er erst jetzt wirklich brauchbar wird.
Da der Haupteinsatz weiterhin Digital Signage ist, spielt rohe Rechenleistung keine große Rolle. Video-Decoding, das einen großen Teil der Kosten ausmacht, wird natürlich beschleunigt, und die Abwärtskompatibilität, die mit dem Pi möglich ist, ist hervorragend. Es gibt immer noch Kunden, die seit fast zehn Jahren Pi1B+ weiterbetreiben und unsere neuesten OS-Releases nutzen.
Auch die Lebensdauer sollte man betrachten; auch dort dürfte ARM länger halten als x86. In Sachen Modularität ist ARM ebenfalls besser als x86, weil es günstiger ist, mehrere kleine Geräte einzusetzen.
Bei der Skalierbarkeit, also der Geschäftsfähigkeit in der aktuellen Wirtschaftslage, ist x86 jedoch besser als ARM.
Außerdem sollten alle Graphen auf Wattbasis dargestellt werden. Dass die Leistung besser wurde, als man von 2 auf 4 ging, ist keine Neuigkeit; entscheidend ist, ob die Leistung pro Watt besser wurde.
So betrachtet sieht man, dass die Leistungssteigerung pro Watt beim Raspberry Pi 5 nicht so groß ist wie erhofft. Es wirkt, als hätten wir in der Menschheitsgeschichte dauerhaft einen Gipfel erreicht.
Schließlich ist zum jetzigen Zeitpunkt die einzige Hoffnung auf Fortschritt nicht bei der Leistung, sondern bei der Offenheit JH7110, wobei die 3D-Unterstützung hinterherhinkt.
Obwohl ich nichts davon gemacht habe, liefen einige Pis jahrelang problemlos, bis sie durch neue Modelle ersetzt wurden.
Mein HomeKit/Zigbee-Gateway und der Datenlogger sind inzwischen Pi 4. Letztlich scheinen gute SD-Karten und eine stabile Stromversorgung der Schlüssel zu sein.
pibenchmark halte ich für eine gute Informationsquelle: https://pibenchmarks.com/
Vor dem Kauf sollte man SD-Karten unbedingt vergleichen.
Wenn man genügend viele Geräte betreibt, geht alles schief, was schiefgehen kann, und es tauchen sogar neue Ausfallmodi auf, an die man nie gedacht hätte.
Das dürfte vermutlich der Grund gewesen sein, warum es danach so viele Berichte über beschädigte Karten gab.
Außer Raspbian auf eine microSD-Karte zu installieren, Cups einzurichten und USB mit dem Drucker zu verbinden, habe ich nichts gemacht. Ein weiterer verwaltet einen Netzwerkdrucker. Seitdem habe ich sie einfach laufen lassen.
Inzwischen habe ich die meisten auf SSD umgestellt. Sonst fühlt es sich zu sehr wie Würfeln an.
Ich war überrascht, dass SD-Karten nicht als Erstes genannt wurden, und noch mehr, dass der Beitrag USB-Boot nicht vorschlägt.
Ich habe einen Pi seit Jahren fast 24/7 eingeschaltet, und ich denke, dass es keine Probleme gab, liegt daran, dass 1) Alpine so konfiguriert ist, dass die Disk kaum angefasst wird, und 2) es keine SD-Karte gibt, die beschädigt werden kann. Warum USB zuverlässiger ist, weiß ich nicht, aber empirisch war es so.
Der einzige Grund für Ausfälle ist, wenn der Strom weg ist. Eine Batterie, die nur 10 Minuten überbrücken kann, wäre völlig ausreichend.
Ich möchte wissen, ob damit zum Beispiel so etwas gemeint ist: https://wiki.alpinelinux.org/wiki/Installation#Diskless_Mode
Ich habe die Karte herausgenommen und nutze diese Karte und den nächsten Pi seitdem mit USB-SSD. Das war etwas beängstigend. Trotzdem betreibe ich, wie gesagt, auch einen Pi seit Jahren problemlos als Cups-Server mit microSD.
Zwei RPis booten und laufen beide von USB und funktionieren seit Jahren gut.
Ich betreibe seit 2017 zwei Pis fast durchgehend mit derselben SD-Karte. Stromausfälle gab es etwa zwei- bis dreimal.
Einer ist DNS-/Print-Server, der andere läuft mit Kodi; die Medien liegen auf externem NFS. Alles, was ich getan habe, war, sämtliche Logs abzuschalten, und ich hatte nie Probleme.
Beide verwenden SanDisk-Karten mit 2 GB. Ich erinnere mich vage, damals naiv gedacht zu haben: „wenig Speicherplatz → geringere Bit-Dichte → bessere Zuverlässigkeit“.
log2ram(github/azlux/log2ram) und bin mit dem Ergebnis zufrieden.Es mountet eine RAM-Disk unter
/varund kopiert die Logs nur gelegentlich von der RAM-Disk auf die SD-Karte. So kann ich alle Logs ansehen, ohne die SD-Karte stark zu beanspruchen.Er ist die meiste Zeit eingeschaltet, aber manchmal schalte ich versehentlich das angeschlossene USB-Netzteil aus. Es ist ein kleines 5-Port-Netzteil, fast genauso alt, und in meinem Aufbau lässt sich der Einschaltknopf zu leicht drücken.
Im Wesentlichen habe ich alle Logs und Webseiten auf tmpfs gemountet; die DB liegt auf der SD-Karte und wird alle fünf Minuten beschrieben.
Er hat mehrere Installationen hinter sich, ist jetzt aber ein Backup-DNS-Server. Dem Dateisystem nach wurde er seit 2018 als Pi-hole genutzt und läuft, abgesehen von ein paar Neustarts und Umzügen, praktisch 24/7.
Auf die SD-Karte wird nichts geschrieben; alles geht in den RAM unter
/dev/shm. Wenn Pi-hole selten einmal ausfällt, kann es die Listen einfach neu holen, und ohnehin werden sie täglich heruntergeladen.Später habe ich sie auch als lokalen DNS und Tailscale-Nodes genutzt. Manchmal habe ich sie monatelang nicht neu gestartet; die längste Uptime lag bei etwa elf Monaten. Sie waren sehr robust. An einer USV zu hängen hilft definitiv.
Es hieß: „Einen Raspberry Pi wochen-, monate- oder jahrelang ohne Eingriff online zu halten, ist gewissermaßen eine Kunst.“ Ich boote dagegen einen NetBSD-Kernel mit eingebettetem Dateisystem.
Zum Beispiel nutze ich den INSTALL-Kernel oder einen Custom-Kernel. Direkt nach dem Booten kann man die SD-Karte herausziehen und optional in angeschlossenen Speicher
chrooten.So läuft das wochen-, monate- oder jahrelang. Die vom Blogautor genannten Probleme habe ich nicht erlebt.
Das einzige Problem, das ich gefunden habe, betrifft bei Verwendung eines Gehäuses den Bereich des Stromanschlusses. Mit einem Ersatzkabel kann die Verbindung zum Beispiel schwach sein. Bei neueren Pis ist das vielleicht besser geworden.
Allerdings kann man Ähnliches über die meisten Computer sagen. Kabel und Stecker sind meist schwache und billige Komponenten. Wenn durch Bewegung die Stromversorgung unterbrochen wird, startet der Pi automatisch neu.