Gewährleisten Journaling-Dateisysteme nach einem Stromausfall Korruption?

Antworten:

21

Es gibt keine Garantien. Ein Journaling File System ist widerstandsfähiger und weniger korruptionsanfällig, aber nicht immun.

Alles, was ein Journal ist, ist eine Liste von Vorgängen, die kürzlich mit dem Dateisystem ausgeführt wurden. Der entscheidende Teil ist, dass die Journalbuchung erfolgt, bevor die Operationen stattfinden. Die meisten Operationen haben mehrere Schritte. Wenn Sie beispielsweise eine Datei löschen, müssen Sie möglicherweise den Eintrag der Datei im Inhaltsverzeichnis des Dateisystems löschen und anschließend die Sektoren auf dem Laufwerk als frei markieren. Wenn zwischen den beiden Schritten etwas passiert, kann ein Journaled File System dies sofort feststellen und die erforderliche Bereinigung durchführen, um die Konsistenz zu gewährleisten. Dies ist bei einem nicht journalisierten Dateisystem nicht der Fall, bei dem der gesamte Inhalt des Datenträgers überprüft werden muss, um Fehler zu finden.

Während dieses Journaling viel weniger anfällig für Korruption ist als das Nicht-Journaling, kann es dennoch zu Korruption kommen. Zum Beispiel, wenn die Festplatte mechanisch gestört ist oder das Schreiben in das Journal selbst fehlschlägt oder unterbrochen wird.

Die Grundvoraussetzung für das Journaling ist, dass das Schreiben eines Journaleintrags in der Regel viel schneller vonstatten geht als die tatsächlich beschriebene Transaktion. Die Zeitspanne zwischen der Bestellung eines (Journal-) Schreibvorgangs durch das Betriebssystem und der Ausführung durch die Festplatte ist also viel kürzer als bei einem normalen Schreibvorgang: Ein engeres Fenster, in dem Fehler auftreten können, aber es gibt immer noch ein Fenster.

Weitere Lektüre

Andrew Lambert
quelle
Könnten Sie bitte etwas näher erläutern, warum dies so ist? Vielleicht könnten Sie ein Beispiel dafür geben, wie Korruption in einem bestimmten Szenario auftreten würde.
Nathan Osman
1
@ George Edison Siehe meine erweiterte Antwort.
Andrew Lambert
2
Das letzte Bit ist falsch. Es gibt kein Fenster, durch das etwas schief gehen könnte. Da aufgezeichnet wird, was zu tun ist, bevor mit der Ausführung begonnen wird, kann der Vorgang nach dem Stromausfall neu gestartet werden, unabhängig davon, zu welchem ​​Zeitpunkt er während des Vorgangs auftritt. Es ist eine Frage der Bestellung, nicht des Timings.
Psusi
@psusi Es gibt noch ein Fenster, in dem das Schreiben in das Journal unterbrochen werden kann. Journal-Schreibvorgänge erscheinen dem Betriebssystem möglicherweise uneinheitlich, sie werden jedoch weiterhin auf die Festplatte geschrieben.
Andrew Lambert
5
@Amazed sie sind atomar, weil sie Sequenznummern und / oder Prüfsummen haben, so dass der Journaleintrag entweder vollständig geschrieben ist oder nicht. Wenn es nicht vollständig geschrieben ist, wird es nach dem Neustart des Systems einfach ignoriert und es wurden keine weiteren Änderungen am fs vorgenommen, sodass es konsistent bleibt.
Psusi
18

Nein.

Die gebräuchlichste Art der Aufzeichnung, das so genannte Metadatenjournal, schützt nur die Integrität des Dateisystems, nicht die der Daten. Dies beinhaltet xfsund ext3/ ext4im Standardmodus data=ordered.

Wenn ein Nicht-Journal-Dateisystem abstürzt, wird es fsckbeim nächsten Start mit überprüft . fsckDurchsucht jeden Inode im Dateisystem nach Blöcken, die als verwendet, aber nicht erreichbar markiert sind (dh keinen Dateinamen haben), und markiert diese Blöcke als nicht verwendet. Das dauert lange.

Bei einem Metadaten-Journaling-Dateisystem fsckweiß es, welche Blöcke gerade geändert wurden, anstatt ein zu machen , sodass es sie als frei markieren kann, ohne die gesamte Partition nach ihnen zu durchsuchen.

Es gibt eine seltenere Art der Aufzeichnung, die als Datenaufzeichnung bezeichnet wird. Dies ist der ext3Fall, wenn Sie sie mit der data=journalOption bereitstellen.

Es wird versucht, alle Ihre Daten zu schützen, indem nicht nur eine Liste der logischen Operationen, sondern auch der gesamte Inhalt jedes Schreibvorgangs in das Journal geschrieben wird. Da Ihre Daten jedoch zweimal geschrieben werden, kann dies viel langsamer sein.

Wie andere darauf hingewiesen haben, ist auch dies keine Garantie, da die Festplatte möglicherweise dem Betriebssystem mitgeteilt hat, dass sie die Daten gespeichert hat, als sie sich noch im Cache der Festplatte befand.

Weitere Informationen finden Sie in der Wikipedia Journaling File System-Artikel und im Abschnitt Datenmodus in der ext4-Dokumentation .

Mikel
quelle
1
+1 für die Unterscheidung zwischen Dateisystembeschädigung und Datenbeschädigung. Dieser kleine Unterschied ist in der Praxis ziemlich doozy.
SplinterReality
Entschuldigen Sie meine völlige Ignoranz, aber macht das data=journalals Feature überhaupt keinen Sinn?
Boehj
Wieder weiß das Betriebssystem, wann das Laufwerk Daten zwischenspeichert und zwingt es, diese bei Bedarf zu löschen, um eine kohärente fs aufrechtzuerhalten. Ihre Datendatei kann natürlich verloren gehen oder beschädigt werden, wenn die Anwendung, die sie bei einem Stromausfall geschrieben hat, nicht so sorgfältig vorgegangen ist und dies unabhängig davon, ob Sie data = journal verwenden oder nicht.
Psusi
@psusi spielt keine Rolle, wie vorsichtig das Programm beim Schreiben der Daten ist. Viele Festplatten
beschädigen
@ user3338098, Laufwerke, die unbemerkt beschädigte Daten enthalten, sind fürchterlich kaputt und sollten niemals verwendet werden. Dies ist eine völlig andere Konversation als die Beschädigung, die durch Software verursacht wird, die das Falsche tut.
Psusi
7

Ein Dateisystem kann die Konsistenz seines Dateisystems bei einem Stromausfall nicht garantieren, da es nicht weiß, was die Hardware tun wird.

Wenn eine Festplatte Daten zum Schreiben puffert, dem Betriebssystem jedoch mitteilt, dass sie die Daten geschrieben hat und die entsprechenden Schreibbarrieren nicht unterstützt, kann es zu Schreibfehlern kommen, bei denen ein früherer Schreibvorgang den Plattenteller nicht getroffen hat, sondern einen späteren hat. Sehen Informationen finden dieser Serverfehlerantwort .

Auch die Position des Kopfes auf einer magnetischen Festplatte wird mit Elektromagneten gesteuert. Wenn die Stromversorgung während eines Schreibvorgangs ausfällt, können einige Daten weiterhin geschrieben werden, während sich die Köpfe bewegen, wodurch Daten auf Blöcken beschädigt werden, die vom Dateisystem niemals geschrieben werden sollten.

camh
quelle
Ist die Firmware des Laufwerks nicht intelligent genug, um das Schreiben auszusetzen, wenn der Kopf zurückgezogen wird?
Nathan Osman
@ George: Es wird von der Fahrt abhängen. Da draußen gibt es eine Menge und Sie wissen nicht, wie gut Ihre (billige) Festplatte funktioniert.
6.
1
Die Festplatte teilt dem Betriebssystem mit, ob ein Write-Behind-Cache verwendet wird, und das Betriebssystem ergreift Maßnahmen, um sicherzustellen, dass sie in der richtigen Reihenfolge gelöscht werden. Auch Laufwerke sind so konzipiert, dass sie bei einem Stromausfall nicht mehr schreiben. Ich habe einige Fälle erlebt, in denen der Sektor, der zum Zeitpunkt des Stromausfalls geschrieben wurde, beschädigt wurde, weil die Aktualisierung des ecc nicht abgeschlossen war (dies kann jedoch leicht korrekt umgeschrieben werden), aber noch nie von zufälligen Sektoren gehört wurde, die beim Stromausfall beschädigt wurden.
Psusi
2

ZFS, ein naheliegendes, aber nicht unbedingt ein Journaling-Dateisystem, schützt nach einem Stromausfall durch sein Design vor Beschädigung.

Es spielt keine Rolle, ob ein laufender Schreibvorgang in der Mitte unterbrochen wird, da in diesem Fall die Prüfsumme mit Sicherheit falsch ist und der Block ignoriert wird. Da das Dateisystem beim Schreiben kopiert wird, befinden sich die vorherigen korrekten Daten (oder Metadaten) noch auf der Festplatte und werden stattdessen verwendet.

jlliagre
quelle
2

Die Antwort lautet in den meisten Fällen nein:

  • Wie schon mikel , können die meisten Journaling-Dateisysteme nur (Informationen wie den Namen einer Datei, ihre Größe, ihre Berechtigungen usw.) schützen, keine Dateidaten (den Inhalt der Datei). Dies geschieht, weil der Schutz von Dateidaten zu einem sehr langsamen (in der Praxis unbrauchbaren) Dateisystem führt.
  • Da das Journal auch eine spezielle Art von Datei ist, die auf der Festplatte gespeichert ist, kann es nach einem Stromausfall beschädigt werden. Wenn das Journal beschädigt ist, kann das Dateisystem daher keine unvollständigen Transaktionen ausführen, die beim Auftreten des Stromausfalls stattgefunden haben.
Sakisk
quelle
Welche Ereignisse könnten zu einer beschädigten Zeitschrift führen? Das einzige, woran ich denken konnte, waren schlechte Sektoren - gibt es sonst noch etwas?
Nathan Osman
Richtig, Hardwareausfälle sind der Normalfall.
Sakisk