Ich habe einen Raspberry Pi an einem entfernten Ort, der mit einer von einem Solarpanel geladenen Batterie betrieben wird, und Sleepy Pi startet ihn jede Stunde, um einige Minuten lang zu laufen, um einige Bilder aufzunehmen, einige Messungen durchzuführen und diese hochzuladen.
Das Problem ist, dass die SD-Karte ziemlich häufig (in ca. 2-7 Tagen) beschädigt wird und ausgetauscht werden muss. Zuerst dachte ich, dass es ein Problem beim Schreiben von Daten auf die SD-Karte gibt, wenn der Strom ausfällt. Deshalb habe ich alle Partitionen als schreibgeschützt bereitgestellt und das gesamte Schreiben erfolgt nur auf RAM-Laufwerken, aber die Beschädigung der SD-Karte bleibt bestehen Ereignis.
Die Frage ist, wie kann eine schreibgeschützte SD-Karte weiterhin beschädigt werden?
Eigentlich tausche ich zwei Karten und passiert mit beiden, also wahrscheinlich kein Kartenproblem. Die Karten sind vom gleichen Typ, werden jedoch zu unterschiedlichen Zeiten gekauft, sodass wahrscheinlich unterschiedliche Produktionschargen (G.Skill 32 GB MicroSDHC-Flash-Karte der Klasse 10 mit SD-Adapter (FF-TSDG32GA-C10), http://www.amazon.com/gp/ Produkt / B007MO0YAI / ref = oh_aui_detailpage_o03_s00? ie = UTF8 & psc = 1 )
Unten ist meine fstab-Datei:
proc /proc proc defaults 0 0
/dev/mmcblk0p5 /boot vfat ro 0 0
/dev/mmcblk0p6 / ext4 ro 0 0
/dev/mmcblk0p7 /home ext4 ro 0 0 none
/var/run ramfs size=5M 0 0 none
/var/log ramfs size=50M 0 0
EDIT: Um einige Punkte zu verdeutlichen, auf die Goldlöckchen hinweisen:
Es gibt zwei SD-Karten (gleicher Typ, aber zu unterschiedlichen Zeiten gekauft, sodass ein häufiges Produktionsproblem unwahrscheinlich ist).
Die SD-Karten werden nach jeder Beschädigung mit DD aus demselben Image geschrieben. Wenn also die nächste Beschädigung auftritt, werden sie einfach ausgetauscht - als solche werden immer die gleichen 2 Karten gedreht.
Ich weiß nicht, warum die Himbeere nicht bootet, da dies ein kopfloses System ist und nur die Wartungsmannschaft gelegentlich Zugriff darauf hat. Ich habe sie gebeten, ein Image (dd) einer beschädigten Karte aufzunehmen, bevor sie es erneut aus dem Backup-Image laden und zu mir hochladen würden. Ich werde es mir ansehen, wenn ich es erhalte. Vielleicht hilft es mir zu erkennen, an welchem Punkt der Start fehlschlägt.
Nein, ich führe kein fsck auf den Karten aus, sie werden mit dd vollständig aus dem Backup-Image neu geladen.
Beide Karten wurden zu einem bestimmten Zweck gekauft, sodass es unwahrscheinlich ist, dass sie abgenutzt sind.
Obwohl ich nicht sicher sagen kann, dass dies keine Korruption aufgrund von Niederspannung war, war das letzte Mal, als die Batterie bei 98% war, die Sonne aufgegangen (also lieferte auch die Sonne Strom). Daher ist es unwahrscheinlich, dass zumindest zu diesem Zeitpunkt ein Niederspannungsszenario aufgetreten wäre.
Antworten:
Die Kontakte am SD-Anschluss biegen eine SD-Karte und führen zu einem Ausfall. Dies gilt insbesondere, wenn Sie häufig Karten austauschen. Einige Karten sind jedoch weniger steif als andere und können sich leichter biegen. Wir entwickeln, bei denen häufig Karten ausgetauscht werden müssen, und dieses Problem hat viele Probleme verursacht. Das Ausmaß der Biegung ist kaum sichtbar, kann jedoch dazu führen, dass einige Stifte den Kontakt verlieren. Wir gingen davon aus, dass unsere Anwendung Korruption verursacht - nicht wahr. Die B + -Karten verwenden Micro-SD und haben dieses Problem nicht.
Die SD-Karten neigen dazu, sich nach dem Entfernen gerade auszurichten und in einem warmen Raum zu sitzen. Sie können die Karte testen, indem Sie sie während des Startvorgangs nach unten drücken. Wenn es beim Herunterdrücken startet, biegt sich die Karte.
Die einzige zuverlässige Problemumgehung, die wir gefunden haben, ist die Verwendung eines Low-Profile-microSD-Kartenadapters wie folgt: http://www.adafruit.com/product/966 Wir vermuten, dass viele Fälle von "Korruption" tatsächlich mit diesem Problem zusammenhängen.
quelle
Sie können versuchen, dies am Ende von
/etc/rc.local
:Was auf dem Root-Dateisystem zu Beginn des Startvorgangs ausgeführt wird
fsck -y
(sieheman fsck
). Die Startzeit wird um 10-15 Sekunden verlängert. Auf einem schreibgeschützten Dateisystem können Sie dies natürlich nicht auf diese Weise tun. Sie könnten versuchen, die Datei nur dauerhaft dort abzulegen, aber ich vermute, dass dies nicht funktioniert, da die fs nicht gemountet ist und dann entfernt wird (weshalb sie später beim Booten über erneut geschrieben werden mussrc.local
).Das ist natürlich keine Hilfe, wenn die Daten auf der Karte so beschädigt sind, dass sie überhaupt nicht booten können. Ich frage mich, was falsch sein könnte?
Beide SD-Karten sind nicht mehr vorhanden
Das wäre ein verrückter Zufall, aber natürlich nicht ganz unmöglich. Vorausgesetzt, Sie haben sie für diesen Zweck neu gekauft, basierend auf dem, was Sie über den Zweck sagen, können sie zu diesem Zeitpunkt nicht abgenutzt werden, unabhängig davon, ob Sie sie ro oder rw verwendet haben. Es sei denn, wir betrachten den Elefanten im Raum, Möglichkeit # 2 ...
Beschädigung durch Niederspannung
Durch Einstellen der Karten-RO wird die Möglichkeit einer geringfügigen Beschädigung aufgrund eines plötzlichen Stromausfalls verhindert. Dies liegt daran, dass das Dateisystem vom Betriebssystem in einem inkonsistenten Zustand belassen wird. Sie können dies auch verhindern, indem Sie es
sync
zeitweise ausführen oder die Sync-Mount-Option verwenden. In jedem Fall ist diese Art von Korruption:Es ist unwahrscheinlich, dass dies überhaupt passiert, es sei denn, das System ist ständig extrem ausgelastet - denken Sie an einen Enterprise-Internet-Server. Das ist hier nicht der Fall.
Es ist unglaublich unwahrscheinlich , dass ein Problem auftritt, das das System nicht mehr bootfähig macht. Ich habe noch nie von einem solchen Fall gesehen oder gehört (obwohl es viele Leute gibt, die zu glauben scheinen, dass ihnen das passiert, ein Mem, das online sehr schädlich für die pi und SD-Karten ist). Darüber hinaus wird die Verwendung der
/forcefsck
zuvor erwähnten Möglichkeit behandelt.Was hier schief gelaufen ist, wird nicht einfach dadurch verursacht, dass die Macht plötzlich stirbt. Was jedoch möglicherweise dadurch verursacht wird, ist der langsame Spannungsabfall, der auftritt, wenn der Strom ausfällt. Dies kann vermutlich zu Problemen auf Hardwareebene führen, sodass das Einstellen der Karten-RO keinen Unterschied macht.
Ich konnte jedoch online nichts aussagekräftiges zu dieser Möglichkeit finden; Einige Leute behaupten, dass SD-Karten für dieses Problem nicht anfällig sind, da sie für batteriebetriebene Geräte entwickelt wurden.
Ich denke, Sie müssen etwas implementieren, das den Pi abschaltet, wenn die Spannung abfällt. Die neuen pi + -Versionen verfügen über einen Brown-Out-Detektor, der möglicherweise hilfreich ist. Während das Betriebssystem nicht sauber heruntergefahren wird, wird der Strom schnell abgeschaltet, anstatt ihn langsam verblassen zu lassen. Wie bereits beschrieben, ist es sehr unwahrscheinlich, dass ein plötzlicher Stromausfall einen signifikanten Schaden verursacht, der nicht behoben werden kann
fsck
. Beachten Sie jedoch, dass dies auf lange Sicht wahrscheinlich keine gute Vorgehensweise ist, da Sie gelegentlich immer noch Daten verlieren können (fsck
tut das Beste, was es kann und wird das Dateisystem konsistent und verwendbar lassen). 1 Sie müssen ein Voltmeter an einen Chip anschließen, der das Betriebssystem über GPIO benachrichtigen kann. Es gibt verschiedene Arten von Dingen wie diese für den Pi, die online verfügbar sind.1. "Konsistent und verwendbar" bedeutet hier, dass es fehlerfrei gemountet werden kann. Da dies das Root-Dateisystem ist, besteht jedoch immer die Möglichkeit, dass "Datenverlust" etwas Entscheidendes beinhaltet. Wiederum werden solche Ereignisse selten sein (Schätzung <0,1% Wahrscheinlichkeit).
quelle
Das schreibgeschützte Mounten des Dateisystems verhindert Schreibvorgänge , solange das System stabil ist . Sie weisen den Kernel an, nicht auf ein bestimmtes Gerät zu schreiben, aber im Falle eines Kernelabsturzes oder eines Stromausfalls (Stromausfall) kann alles passieren - der Code zum Schreiben auf die SD-Karte ist noch vorhanden, und Wenn es ausgeführt wird, wird der Inhalt Ihrer Karte wahrscheinlich beschädigt.
Wenn Sie sicherstellen möchten, dass Ihre SD-Karte schreibgeschützt ist, sollten Sie sie schreibgeschützt verwenden, z
sdtool
Natürlich müssen Sie die schreibgeschützten Einstellungen weiterhin beibehalten
/etc/fstab
, da Linux sonst weiterhin versucht, auf die SD-Karte zu schreiben, dies nicht tut und alle Arten von Dateisystemfehlern meldet. Aktuelle Linux-Treiber scheinen nur den mechanischen Sperrschalter zu verstehen, der auf SD-Karten in voller Größe vorhanden ist, und verstehen den Sperrstatus nicht, wenn kein Schalter vorhanden ist.sdtool
für den Raspberry Pi kann hier heruntergeladen werden .quelle