Ich entwickle eine Anwendung auf einem Linux Embedded Board (läuft unter Debian), zB Raspberry Pi, Beagle Board / Bone oder Olimex. Die Platinen funktionieren in einer Umgebung, in der der Strom unerwartet unterbrochen wird (es ist weitaus komplizierter, das Netzteil usw. zu platzieren) und dies würde jeden Tag ein paarmal passieren. Ich frage mich, ob die unerwarteten Stromausfälle einen Absturz / ein Problem auf dem Linux-Betriebssystem verursachen würden. Wenn es etwas ist, das ich beunruhigen sollte, was würden Sie vorschlagen, um die Schäden am Betriebssystem gegen die unerwarteten Stromausfälle zu verhindern?
PS. Die Anwendung muss einige Daten auf das Speichermedium (SD-Karte) schreiben, ich denke, es wäre nicht geeignet, es als schreibgeschützt zu mounten.
quelle
Antworten:
Unerwartete Stromausfälle können zu einer Beschädigung der Dateisystemdaten führen. Wenn z. B. ein Prozess mit dem Schreiben in eine Datei begonnen hat, diese aber noch nicht abgeschlossen hat, wird die Datei möglicherweise nur zur Hälfte geschrieben. Stellen Sie sich nun vor, dass der Stromausfall auf halbem Wege eines Kernel-Upgrades erfolgt ...
Wie l0b0 schrieb, wird die Verwendung eines Journal-Dateisystems helfen, da es in der Lage sein wird, den Überblick darüber zu behalten, was tatsächlich getan wurde. Neben dem wikipedia Info , dass l0b0 verbunden sind , können Sie interessiert sein /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure auch .
Als Programmierer müssen Sie natürlich sorgfältig darüber nachdenken, wie das Schreiben in Dateien zu einem atomaren Prozess wird (dh entweder vollständig oder gar nicht, aber nie zur Hälfte). Es ist ein ziemlich komplexes Thema.
quelle
Um die Möglichkeit einer Beschädigung des Betriebssystems zu minimieren, ist es wahrscheinlich am besten, separate "System" - und "Daten" -Partitionen auf der SD-Karte zu haben. Auf diese Weise können Sie die "System" -Partition schreibgeschützt bereitstellen und einen hoch belastbaren FS für die "Daten" -Partition verwenden.
Darüber hinaus haben die meisten dieser Boards einen sehr geringen Energiebedarf, sodass eine Batterieunterstützung möglich ist. Das "LiPo Rider" Board für den Raspberry Pi kann als Basis-USV verwendet werden, um ein sauberes Abschalten bei Stromausfall zu gewährleisten.
quelle
Das würde davon abhängen
Stellen Sie sich zum Beispiel eine Anwendung vor, die eine Datei verarbeitet und die Ergebnisse beim Berechnen (eine Ausgabezeile pro Eingabezeile) in eine andere Datei schreibt. Wenn die Stromversorgung während der Verarbeitung unterbrochen und dieselbe Anwendung nach dem Neustart ausgeführt wird, kann die Verarbeitung nicht einfach vom Anfang der Eingabedatei an neu gestartet werden. Dies würde bedeuten, dass die Ausgabedatei doppelte Informationen enthält.
Es könnte sehr schwierig sein, etwas Bestimmtes über ein hypothetisch komplexes System zu sagen, aber die stabilste Linux-Software scheint in der Lage zu sein, Abstürze recht gut zu handhaben.
quelle
Da niemand ein bestimmtes Dateisystem erwähnte: Modernere Dateisysteme (ext3, ext4, ntfs) sind in der Lage, Abstürze aufgrund von Journaling besser zu handhaben als ältere Dateisysteme (ext2, ext, fat32) .
Vorausgesetzt, die Festplatte stürzt nicht ab und lügt nicht , sollte ein vollständiger Stromausfall das Dateisystem nicht beschädigen. Einzelne Dateien, die geschrieben wurden, sind möglicherweise immer noch beschädigt. Wenn Sie also gerade das Betriebssystem aktualisieren, als der Stromausfall auftrat, können Sie das Betriebssystem trotzdem herunterfahren.
quelle