Ist es in Ordnung, nur den Stecker zu ziehen?

18

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.

James Vickery
quelle
1
Ich würde davon abraten, den Stecker sozusagen herauszuziehen, da ein ständiges Ein- und Ausstecken des Netzkabels die Lebensdauer des Steckers am Pi verkürzt. Zweitens führt die SD-Karte möglicherweise gerade einen Vorgang aus, wenn Sie am Stecker ziehen. Dies kann die SD-Karte beschädigen. Und das wird eine Unannehmlichkeit sein, unabhängig davon, wie gut Sie Ihre Daten sichern.
Darth Vader
2
@DarthVader Was bedeutet "Verkürzung der Lebensdauer des Steckverbinders"? Ich würde nicht öfter den Stecker ziehen und wieder einstecken, ich würde nur den Stecker ziehen, bevor ich herunterfahre. Ist die Beschädigung der SD-Karte ansonsten das einzige Problem? Würde das Formatieren der SD-Karte die Karte immer wieder verwendbar machen?
James Vickery
1
Ich denke immer noch, es ist besser, den Pi eingesteckt zu lassen und den Strom an der Wand auszuschalten. Sie können eine beschädigte SD-Karte wiederherstellen, indem Sie das Betriebssystem Ihrer Wahl formatieren und neu installieren. Es ist jedoch auf jeden Fall ratsam, eine Beschädigung der SD-Karte zu vermeiden. Ein weiteres Problem ist, dass Teile des Pi dabei sein könnten, etwas zu tun, und dass Sie die Stromversorgung unterbrochen haben, ohne dass ihnen die Möglichkeit gegeben wurde, das zu beenden, was sie taten.
Darth Vader

Antworten:

23

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:

  1. Der SD-Karten-Controller hat keine Vorstellung davon, welche Daten "richtig" wohin im Sinne von kohärenten Dateisystemen und Parititionen gehören, und

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

Was kann schief gehen, wenn Sie nur den Pi ausstecken? Soll ich einfach den Stecker ziehen? Hinweis: In diesem Fall mache ich mir keine Sorgen um Datenverlust.

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.


  1. Dies kann von Bedeutung sein, wenn man bedenkt, warum bestimmte Kartenfabrikate / -modelle für manche Menschen eindeutig schlechter sind als für andere. Obwohl zwei Karten, die identisch gekennzeichnet sind, hinsichtlich der angegebenen Merkmale (Größe, Geschwindigkeit usw.) identisch sein können, sind die Hersteller leider nicht verpflichtet, sie hinsichtlich der Bestandteile zu 100% identisch zu machen.
Goldlöckchen
quelle
1

Dies hängt stark von Ihrem Betriebssystem ab:

  • Wenn Sie ein Standardschema verwenden, verwenden Sie Ihre SD-Karte im R / W-Modus für tatsächliche Daten (Swap- Partitionen zählen hier nicht), handelt es sich um ein Problem wie beim normalen "Einstecken eines PCs" : Es dreht sich alles um Google, sodass Sie jede Menge Informationen über den Fall haben. Es ist genau das gleiche: gleiche Probleme, gleiche Risiken und gleiche Auswirkungen.
  • Wenn Sie nur Daten von Ihrer SD-Karte lesen , dh jede Partition, die Daten enthält, mit der roOption 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ädigen
Alexey Vesnin
quelle
1
Ihr erster Punkt ist falsch; Die SD-Karte führt zu Komplikationen, die das Problem nicht "genau gleich" machen wie beispielsweise bei sich drehenden Festplatten, bei denen das Aufzeichnen und Überprüfen die meiste Zeit eine wirksame Schutzmaßnahme sein sollte, oder bei teureren SSD-Medien, die möglicherweise zusätzliche Hardware aufweisen und mit a übereinstimmen Strengere Standards im Vergleich zu SD-Medien. Vgl. Meine Antwort, in der ich über "In abstrakten Begriffen, ohne die Natur von SD-Karten zu berücksichtigen ..."
spreche
1
@goldilocks natürlich in der Tiefenbearbeitung von Speichermedien Mechanik ist es anders. Ich spreche hier allgemeiner, dh "warum ist es schlecht, den Stecker zu ziehen, wenn Sie nicht sicherstellen, dass alle Ihre Daten sicher und sicher gespeichert werden".
Alexey Vesnin
@goldilocks Vielen Dank für Ihre hervorragenden Antworten. Sie haben beide hervorragende Punkte erzielt, obwohl ich mich entschlossen habe, die Antwort von Goldlöckchen zu akzeptieren, da sie viele relevante Informationen enthält, während die Frage noch beantwortet wird. Ich habe jedoch beide Antworten positiv bewertet.
James Vickery
1

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.

Milliways
quelle