Wann immer ich mein pi ausschalte, verwende ich sudo poweroff
, was nach meinem Verständnis eine sichere Möglichkeit ist, alle Prozesse zu stoppen und herunterzufahren.
Auch wenn ich den Pi manchmal für eingebettete Projekte verwende, bei denen ich nicht immer SSH-Verbindungen zum Pi herstelle, fühlt es sich oft so an, als würde Zeit verschwendet, mein Telefon oder einen Laptop herauszunehmen und eine Verbindung zum Pi herzustellen, um es auszuschalten.
Einige Leute, mit denen ich gesprochen habe, sagten, dass sie nur die Stromzufuhr ausschalten, wenn sie herunterfahren möchten, und dass sie dabei keine Probleme bemerkt haben.
Was kann also schief gehen, wenn Sie den Pi einfach ausstecken? Soll ich einfach den Stecker ziehen?
Hinweis: In diesem Fall mache ich mir keine Sorgen um Datenverlust. Ich speichere regelmäßig Backups und die einzigen wichtigen Daten auf diesem Pi sind auf meinem GitHub.
Antworten:
Ich mache es mir nicht zur Gewohnheit, den Pi aus der Steckdose zu ziehen, da ich es nicht schaffe, sie ordnungsgemäß herunterzufahren, es sei denn, ich habe das Netzwerk auf einem kopflosen Pi verloren. In diesem Fall bin ich normalerweise zu faul, um eine Tastatur usw. anzuschließen.
Im Allgemeinen überprüfe ich immer, ob das grüne ACT-Licht zu diesem Zeitpunkt nicht leuchtet. Bei neueren Modellen (oder Firmware?) ist diese Option deaktiviert, wenn auf die SD-Karte nicht zugegriffen wird. Worauf möchten Sie achten? Dies sollte einfach genug sein, es sei denn, Sie schreiben ständig darauf. Solange genügend Headroom im freien RAM vorhanden ist (z. B. 50-100 + MB, je nach Kontext), werden Dinge, die häufig wiederverwendet werden, jedoch zu keinem Zeitpunkt von einem Prozess tatsächlich geladen wird im freien Speicher zwischengespeichert und von dort vom Betriebssystem neu geladen, nicht vom realen physischen Medium. So arbeiten alle modernen Allzweck-Betriebssysteme.
Wenn der pi die SD-Karte verwendet, ist das Risiko minimal : Das Dateisystem auf der Karte stimmt nicht mit dem Status im Speicher überein. Normalerweise ist dies wahrscheinlich kein großes Problem. Für den Anfang könnte das Dateisystem-Journalling, das standardmäßig auf den meisten pis verwendet wird , eine Verteidigung dagegen sein, ebenso wie das fsck, das beim Booten automatisch angewendet werden sollte, wenn das Dateisystem nicht sauber abgemeldet wurde. Ich werde in Kürze erklären, warum ich "könnte" und "nicht" sage, weil ich in diesem Zusammenhang denke, dass dies oft nicht der Fall ist .
Soweit ich weiß, kam es beim Ziehen des Steckers nie zu Beschädigungen des Dateisystems oder zu Datenverlusten, was ich im Laufe der Jahre möglicherweise mehr als hundert Mal getan habe. Aber ich mache es auch nicht gewohnheitsmäßig. Wenn Sie dies mehrmals am Tag tun, können Sie eventuell auf ein statistisches Risikograd stoßen, und es liegt ein potenziell unangenehmer Fang vor.
Hier ist das PROBLEM:
Vor kurzem ist mir aufgefallen, dass es bei SD-Karten ein Problem gibt, gegen das die Mechanismen von Betriebssystemen / Dateisystemen möglicherweise machtlos sind, und das möglicherweise erklärt, warum einige Leute anhaltende Probleme mit fs-Korruption haben, insbesondere diejenigen, die systemunabhängig am Kabel ziehen state - ZB hat kürzlich jemand hier behauptet, Computermodule zu betreiben, bei denen die Systeme aufgrund von Korruption bei ~ 1/40 solcher Stromausfälle nicht mehr bootfähig waren.
Ohne Berücksichtigung der Eigenschaften von SD-Karten sollte dies abstrakt gesehen auch dann nicht passieren, wenn das System ausgelastet ist, da unkritische Inhalte und keine effektive Systemsoftware am wahrscheinlichsten beschädigt werden schreibgeschützt und wird nur bei Updates geändert.
Es kann vorkommen, dass Bits herumgewürfelt werden und die Metainformationen des Dateisystems, in denen verschiedene Bits gespeichert sind, beschädigt werden. Auch hier sollten Journalling und fsck jedoch in der Lage sein, damit umzugehen, was ein Booten des Kernels erfordert. Der Kernel auf dem pi befindet sich jedoch auf einer separaten Boot-Partition, die während der Verwendung ebenfalls nicht gemountet werden kann (außer beim Update), da Nichts davon wird verwendet, nachdem das System gestartet wurde. Dies bedeutet, dass die Informationen über die Partition effektiv unbestechlich sein sollten, auch wenn sie nicht eingehängt werden.
Aber...
SD-Karten sind eine Blackbox für das Betriebssystem. Daran führt kein Weg vorbei. Es gibt zwar spezielle Treiber für SD-Karten-Controller, die Teil der Computerhardware sind (auf dem Pi ist dies ein Teil des SoC), es gibt jedoch keinen Treiber für verschiedene, spezifische Marken und Modelle von Karten.
Und doch haben sie alle Mikrocontroller in sich, die sehr unterschiedlich funktionieren können. 1. Dies macht die Karte zu einer Black Box. Es interagiert mit dem Betriebssystem über ein standardisiertes SD-Protokoll. Dies ist der letzte Kontrollpunkt, über den das Betriebssystem verfügt.
SD-Karten und andere Solid-State-Medien unterscheiden sich unter anderem von herkömmlichen rotierenden Festplatten durch die Verwendung einer undurchsichtigen virtuellen Adressierung. Sie speichern Informationen nicht physisch in den Sequenzen, die das Betriebssystem wahrnimmt. Dies ist meistens eine gute Sache, andernfalls benötigen wir möglicherweise unterschiedliche Treiber für unterschiedliche Kartenmarken usw., und es ermöglicht den Karten, eine (undurchsichtige) Abnutzungskorrektur durchzuführen , was ihre Lebensdauer erheblich verlängert.
Eine andere Sache, auf die sie sich verlassen, sind relativ große "Löschblöcke"; Wenn Daten in einem Block geändert werden müssen, wird der gesamte Block gelöscht und neu geschrieben. Dateisysteme tun dies selbstverständlich auch, beachten Sie jedoch, dass dies auf der Ebene der Systemsoftware erfolgt und dass Probleme, die daraus resultieren, genau die Art von Problemen sind, die beim Aufzeichnen und Behandeln auftreten
fsck
.Der springende Punkt des unüberwindlicheren Problems ist, dass das Dateisystem der Waage, auf dem dies ausgeführt wird, in der Regel viel kleiner ist als das der Waage, auf der SD-Karten ausgeführt werden. Andernfalls würden Sie viel Speicherplatz verschwenden, da ein Dateisystemblock nur Daten aus einer Datei enthalten kann. Wenn der Block 2 MB groß ist und nur wenige KB Daten vorhanden sind, wird der Rest verschwendet. Daher reichen Dateisystemblöcke in der Regel von 1/2 KB bis 4 KB.
Es ist ziemlich offensichtlich, dass SD-Karten dies nicht tun und es auch nicht konnten, da der Controller auf einer SD-Karte keine Grenzen wie "Datei", "Dateisystem" oder sogar "Gerätepartition" kennt. Es behandelt nur die Datenblöcke, die das Betriebssystem benötigt, und zwar über eine undurchsichtige Ebene in einer Blackbox, in der auf physischer Ebene alles passieren kann.
Einer der Gründe, warum es offensichtlich ist (abgesehen von den Prämissenkarten, die "das überhaupt nicht konnten"), ist, dass diese Blöcke häufig recht groß sind, aber die Karten scheinen einen anständigen Job darin zu leisten, den gesamten Raum auszunutzen. Ein Löschblock kann mehrere Megabyte groß sein. Darüber hinaus sind die Details urheberrechtlich geschützt. Es kann zwar Mechanismen geben, mit denen das Betriebssystem die Größe des Löschblocks von der Karte anfordern kann, die Karte muss dies jedoch nicht bereitstellen, sie kann darüber lügen, und es wäre absurd, wenn das Betriebssystem versuchen würde, sie zu nutzen.
Daraus folgt, dass seit:
Der SD-Karten-Controller hat keine Vorstellung davon, welche Daten "richtig" wohin im Sinne von kohärenten Dateisystemen und Parititionen gehören, und
Die SD-Karte ist eine Blackbox, in die das Betriebssystem nicht wirklich sehen kann.
Dann ist das, was sich in einem gegebenen 1-MB-Löschblock befindet, in dem eine Karte mehrere Partitionen mit 4-KB- oder kleineren Dateisystemblöcken enthält, willkürlich, sobald die Karte ausreichend verwendet wurde (und möglicherweise auch dann, wenn sie nicht viel verwendet wurde) alle). Dies ist wahrscheinlich auch dann der Fall, wenn Sie versuchen, das Betriebssystem zur Verwendung größerer / entsprechender Blockgrößen zu zwingen. sie werden falsch ausgerichtet enden.
So:
Wenn der Stromausfall während der SD-Karte in der Mitte ist einen Block zu verändern, das könnte in dem Verlust eines ziemlich großen Volumen von beliebigen Daten führt, könnte etwas von der Karte. Dies können Informationen sein, die als "schreibgeschützt" gekennzeichnet sind. Dies können Informationen von einer Partition sein, die noch nicht einmal gemountet ist , und natürlich auch von der meist nicht verwendeten Boot-Partition.
Wenn dies passiert und die Karte kein eigenes Schutzsystem hat (was einige haben, aber ich bin mir sicher, die meisten nicht), dann könnte es sich um eine FUBAR-Situation handeln. Journalling schützt nicht vor zufälliger Beschädigung der MB-Größe, die nicht einmal Partitionsgrenzen erkennt. Oder fsck.
Oder, da die Hardware der Karte im Allgemeinen proprietär ist, alles andere als die vom Kartenhersteller hergestellte Software - vorausgesetzt, dies ist plausibel. Ich habe noch nie davon gehört. Dies würde Karten komplizierter, teurer und umständlicher machen. Welches ist nicht das Ziel.
Anders ausgedrückt, SD-Karten sind nicht dazu gedacht, auf diese Weise zuverlässig verwendet zu werden . Sie sind billig und sehr handlich, aber das ist das Ergebnis eines Kompromisses im Protokoll: Im Allgemeinen gibt es keine Garantie für die Datenintegrität für irgendetwas auf der Karte, wenn Sie die Stromversorgung abbrechen.
Es wird den Pi nicht physisch schädigen, nein, sei nur vorsichtig, "Datenverlust" könnte sich auf "nutzlose Karte" erstrecken, die komplett neu formatiert werden muss. Ich würde jedoch sagen, dass die Wahrscheinlichkeit, dass Sie dies tun, wenn das grüne ACT-Licht ausgeschaltet ist, sehr gering ist.
quelle
Dies hängt stark von Ihrem Betriebssystem ab:
ro
Option von Ihrer SD-Karte laden, ist es auf jeden Fall kein Problem, nur einen Stecker zu ziehen: Sie beenden die Arbeit Ihrer Dienste Zum Sichern von Daten auf einem externen beschreibbaren Speicher (z. B. NAS oder NFS / SMB / CIFS-Freigabe) und nach dem Herunterfahren der Dienste - ja, ziehen Sie einfach den Stecker: Sie benötigen keinen RAM / TMPFS-Datenträger ) nicht mehr, und Sie werden nichts beschädigenquelle
Wie @goldilocks geantwortet hat, besteht nur ein geringes Risiko, aber die meisten von uns tun es nicht.
Es ist sehr einfach, einen sicheren Ausschalter hinzuzufügen, den ich auf meinem kopflosen Pi verwende. Siehe So schalten Sie den Raspberry Pi sicher aus Dies verbraucht fast keine Ressourcen - abgesehen von ein wenig RAM und einem einfachen Druckknopf.
quelle