Wie kann eine schreibgeschützte SD-Karte wiederholt beschädigt werden?

7

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:

  1. Es gibt zwei SD-Karten (gleicher Typ, aber zu unterschiedlichen Zeiten gekauft, sodass ein häufiges Produktionsproblem unwahrscheinlich ist).

  2. 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.

  3. 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.

  4. Nein, ich führe kein fsck auf den Karten aus, sie werden mit dd vollständig aus dem Backup-Image neu geladen.

  5. Beide Karten wurden zu einem bestimmten Zweck gekauft, sodass es unwahrscheinlich ist, dass sie abgenutzt sind.

  6. 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.

Zoltan Fedor
quelle
Eine mögliche Erklärung ist das Wetter: Es hört sich so an, als ob sich das Gerät im Freien befindet. Es ist Winter, vielleicht ist die Kälte nicht gut für SD-Karten?
Kryten
Es ist drinnen, aber es gibt keine Heizung, so dass die Temperaturen unter den Gefrierpunkt fallen. Das System protokolliert tatsächlich die Temperaturen und ich sehe keine Korrelation zwischen den Verfälschungen und der Temperatur. Es gab -13C, als es gut lief und dann wurde es bei + 2C beschädigt.
Zoltan Fedor
1
Gerade überprüft, beträgt die Betriebstemperatur der SD-Karte, die ich verwende, -25 ° C - + 85 ° C (was typisch für SD-Karten zu sein scheint) [siehe gskill.com/de/product/ff-tsdg32ga-c10] , also nichts weist darauf hin, dass es sich um ein temperaturbedingtes Problem handelt.
Zoltan Fedor
Sind Sie sicher, dass irgendwo in Ihrem System nichts automatisch gemountet wird?
Jean
1
Ich habe sie in einem Pi bei -20C vorher ohne Probleme verwendet. Menschen haben laufende Pis in flüssigen Stickstoff getaucht und arbeiten bis zu -100 ° C. Es ist nicht die Temperatur. Es ist das Brown-out.
Goldlöckchen

Antworten:

5

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.

Alan Baker
quelle
1

Sie können versuchen, dies am Ende von /etc/rc.local:

/bin/echo "-y" > /forcefsck

Was auf dem Root-Dateisystem zu Beginn des Startvorgangs ausgeführt wird fsck -y(siehe man 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 muss rc.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?

  1. 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 ...

  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 synczeitweise ausführen oder die Sync-Mount-Option verwenden. In jedem Fall ist diese Art von Korruption:

    1. 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.

    2. 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 /forcefsckzuvor 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 ( fscktut 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).

Goldlöckchen
quelle
Vielen Dank für die ausführliche Antwort. Lassen Sie mich zunächst die Teile klären, auf die Sie hingewiesen haben, dass sie nicht klar sind. Ja, ich habe zwei Karten und ein Backup-Image des gesamten Inhalts (dd der gesamten Karte). Wenn also eine stirbt, ersetzt die Wartungsmannschaft diese einfach durch die andere Karte, auf die das Original-Image kopiert wurde. Leider handelt es sich um ein kopfloses System, sodass die Wartungsmannschaft nicht weiß, was falsch ist - was sicher ist, dass es nicht startet. Sie haben ein Bild der Karte aufgenommen, als sie zuletzt beschädigt war, und sie jetzt hochgeladen, also werde ich einen Blick darauf werfen - vielleicht werden sie weitere Informationen darüber liefern, wo sie fehlschlägt.
Zoltan Fedor
Wenn Sie etwas Neues herausfinden und diese Details in der Frage bearbeiten, hinterlassen Sie hier einen Kommentar und ich werde diesen erneut öffnen.
Goldlöckchen
Vielen Dank, ich habe diese Details in der Frage bearbeitet. Könnten Sie sie bitte erneut öffnen? Ich warte immer noch auf das Bild der beschädigten Karte, danach habe ich möglicherweise weitere Details.
Zoltan Fedor
Konnte nicht viel Unterstützung für meine "Niederspannungs" -These online finden. Aber Korruption nur durch das Ziehen der Stromversorgung ist definitiv zu ungewöhnlich, um diese Art von Problem wiederholt zu verursachen, insbesondere wenn die Dateisysteme schreibgeschützt sind.
Goldlöckchen
In Bezug auf Ihren Vorschlag, / bin / echo "-y"> / forcefsck zu /etc/rc.local hinzuzufügen, könnte dies nur funktionieren, wenn das Dateisystem nicht schreibgeschützt ist. Natürlich kann ich in rc.local erneut einbinden, um schreibgeschützt zu sein, das ForceFSck ausführen und dann erneut als schreibgeschützt einbinden. Ich mache mir nur Sorgen, dass ein erneutes Einbinden von Lese- und Schreibzugriff auch für fsck die Wahrscheinlichkeit eines Dateisystemschadens erhöhen würde. Oder habe ich etwas falsch verstanden? Meinten Sie mit forcefsck noch etwas anderes?
Zoltan Fedor
0

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

sudo sdtool /dev/mmcblk0 lock

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.

sdtoolfür den Raspberry Pi kann hier heruntergeladen werden .

Dmitry Grigoryev
quelle