Wie können unerwartete Herunterfahren einen Linux-Computer beschädigen?
Sind unerwartete Herunterfahren für Linux genauso schädlich wie für andere Betriebssysteme? Lesen Sie weiter, während wir die Auswirkungen katastrophaler Systemabschaltungen auf Linux-Dateisysteme untersuchen.
Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.
Die Frage
Der SuperUser Reader User208554 ist neugierig auf Linux-Dateistrukturen und besorgt über eine App / Installation, an der er gerade arbeitet:
Ich entwickle eine Anwendung auf einer Linux-Embedded-Karte (läuft Debian), z. Raspberry Pi, Beagle Board / Bone oder Olimex. Die Boards arbeiten in einer Umgebung, in der der Strom unerwartet unterbrochen wird (es ist viel zu kompliziert, ein Netzteil usw. zu installieren) und dies würde jeden Tag ein paar Mal vorkommen. Ich frage mich, ob der unerwartete Stromausfall Probleme beim Linux-Betriebssystem verursachen würde. Wenn es etwas ist, worüber ich mir Sorgen machen sollte, was würden Sie vorschlagen, um die Schäden am Betriebssystem gegen unerwartete Stromausfälle zu verhindern?
PS. Die Anwendung muss einige Daten auf das Speichermedium (SD-Karte) schreiben. Ich denke, es wäre nicht geeignet, sie schreibgeschützt zu mounten.
Also, wie lautet das Urteil?
Die Antwort
Der SuperUser-Mitwirkende l0b0 bietet einige Einblicke in Dateisysteme für Journaling / Nicht-Journaling:
Das würde davon abhängen
- ob Sie ein Journal-Dateisystem verwenden und
- wie gut die Anwendungen mit der abgebrochenen Verarbeitung umgehen können.
Stellen Sie sich beispielsweise eine Anwendung vor, die eine Datei verarbeitet und die Ergebnisse bei ihrer Berechnung (eine Ausgabezeile pro Eingabezeile) in eine andere Datei schreibt. Wenn die Stromversorgung während der Verarbeitung unterbrochen wird und die gleiche Anwendung nach dem Neustart ausgeführt wird, kann die Verarbeitung nicht einfach vom Anfang der Eingabedatei aus gestartet werden. Dies bedeutet, dass die Ausgabedatei doppelte Informationen enthält.
Es kann sehr schwierig sein, etwas definitiv über ein hypothetisches komplexes System zu sagen, aber die stabilste Linux-Software scheint mit Abstürzen recht gut umgehen zu können.
Stu schlägt vor, Betriebssystem und Daten zu trennen und ein Batterie-Backup hinzuzufügen:
Um die Wahrscheinlichkeit 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 mounten und einen hoch belastbaren FS auf der "Daten" -Partition verwenden.
Darüber hinaus haben die meisten dieser Platinen einen sehr geringen Stromverbrauch, sodass eine Batteriesicherung möglich ist. Die „LiPo Rider“ -Platine für den Raspberry Pi kann als Basis-USV verwendet werden, um bei Stromausfall ein sauberes Herunterfahren zu ermöglichen.
Schließlich erweitert Jenny D den Vorschlag für das Journaling-Dateisystem:
Unerwartete Stromausfälle können zur Beschädigung von Dateisystemdaten führen, z. Wenn ein Prozess mit dem Schreiben in eine Datei begonnen hat, diese aber noch nicht abgeschlossen hat, wird die Datei möglicherweise nur halb geschrieben. Stellen Sie sich nun vor, dass der Stromausfall auftritt, wenn Sie ein Kernel-Upgrade auf halbem Weg durchlaufen haben ...
Wie l0b0 schrieb, wird die Verwendung eines Journal-Dateisystems hilfreich sein, da es in der Lage ist, den Überblick zu behalten, was tatsächlich getan wurde. Zusätzlich zu den Wikipedia-Informationen, die mit l0b0 verlinkt wurden, könnten Sie auch an Do-Journaling-Dateisystemen gegen Korruption nach einem Stromausfall interessiert sein.
Sie als Programmierer müssen natürlich sorgfältig überlegen, wie mit dem Schreiben von Dateien umzugehen ist, damit es zu einem atomaren Prozess wird (d. H. Entweder vollständig oder gar nicht, aber niemals zur Hälfte). Es ist ein ziemlich komplexes Thema.
Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.