Diese Diskussion wurde archiviert.
Es können keine neuen Kommentare abgegeben werden.
|
|
|
|
|
|
|
|
|
|
|
>Journalling ist ein Bequemlichkeitsfeature >(schnellerer fsck), nicht ein Sicherheitsfeature.
Das stimmt nicht. Journalling ist orthogonal zu Filesystemchecks. Es ersetzt keinen
fsck. Im Gegenteil ist ein regelmaessiger fsck
empfohlen um Fehler in der Filesystemimplementation oder defekte Kabel zu entdecken.
Journalling erhoeht das Risiko von Datenkorruption nicht, es erniedrigt sie, da man mit einem (richtig implementierten) Journal alle Daten, ausser diejenigen, die noch in Cache waren, noch lesen kann. Ohne Journalling riskiert man das ganze Filesystem zu verlieren.
Dies ist unabhaengig von Einsatz von RAID.
Ob man Write-back Caches einsetzen will ist in erster Linie abhaengig vom Cache. Bei 4MB kann man schon einiges an Daten verlieren...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also, nochmals ganz langsam:
0. Wenn Du bei Schreibzugriffen gar keine Daten verlieren willst, darfst Du gar keine Write-Caches halten. Weder auf Festplatte, noch im RAM. Das hat nicht mal Unix V6 geschafft, weil sogar da ein Sektor im RAM zwischengespeichert wurde.
1. Ansonsten:
1a. Du kannst synchron mounten. Laeuft immer noch Gefahr Daten zu verlieren, falls man im falschen Moment abstellt, da Write-Cache vorhanden.
1b. Falls Du die Schaeden lokalisieren willst, brauchst Du einen Log-Mechanismus, also einen
Mechanismus, wo Du die Reihenfolge der Schreibzugriffe eruieren kannst und Rollbacks durchfuehren zu koennen.
-> Journalling-Filesystem.
1c. Alternative zu 1a: Soft-Updates
2b. Wo der Log liegt ist Dir freigestellt. Das muss nicht auf der Platte sein, es kann auch ein NVRAM sein.
War das klar genug?
Ach ja:
- Nicht nur das File System muss mitspielen, auch das Virtual Memory Subsystem und die Harddisk-Komponenten (zu Punkt 0).
- Kein Log: kann Dir das gesamte Filesystem crashen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ein Log kann nur helfen, Veränderungen an der Dateisystemstruktur rückgängig zu machen. Solche sollten ein Dateisystem nicht aus dem Tritt bringen.
Du widersprichst Dir im uebernaechsten Satz.
Im Log hast Du immer die Metadaten und (je nach Journalling-Filesystem einstellbar) auch die Daten. Die Veraenderungen im Filesystem kannst
Du nicht rueckgaengig machen, wenn Du die
Reihenfolge nicht kennst.
Sogar bei FAT lässt sich sowas reparieren.
Glaube ich nicht.
Lies
File System Implementation, continued und
File System Implementation
Kritisch wird es immer dann, wenn wichtige Dateisysteminformationen beschädigt werden (Superblock etc.).
Das sind die Metadaten.
Die kann ein Journal nicht retten.
Der Trick ist, erst konsistente Zustaende zu speichern (auf die Platte zu schreiben). Damit ist
die Platte immer metadatenkonsistenz (und wenn Du die Daten mitloggst auch datenkonsistenz), bis
auf die letzte Transaktion.
Es ist vielmehr ein Teil davon.
Einstellbar. Falls es auf NVRAM liegt, eben
nicht. Ansonsten ist es es Aufgabe der Filesystemimplementation die beiden auseinander zu halten.
|
|
|
|
|
|
|
|
|
|
|
|
|
Okay, die Aufteilung der Metadaten in Strukturdaten und Informationen war ungenau, und für unseren Fall eigentlich irrelevant. Vergiss sie.
Worauf ich hinaus will, zeige ich am besten anhand eines Zitates: "Die Veraenderungen im Filesystem kannst Du nicht rueckgaengig machen, wenn Du die Reihenfolge nicht kennst." Wenn du damit meinst, dass der exakte Zustand der Metadaten beim letzten Syncpoint vor Absturz nur mittels eines Logs garantiert wiederhergestellt werden kann, dann stimme ich dir zu. Aber: Es muss immer möglich sein, diesen Zustand auch ohne Log mittels eines klassischen fsck wiederherzustellen. Ansonsten ist das Dateisystem futsch, wenn das Log fehlt. Genau das war ja lange ein grosser Kritikpunkt an ReiserFS.
Ich habe mir das ganze mal etwas durch den Kopf gehen lassen, und habe beschlossen, mein Statement etwas zu entschärfen. Statt "Journalling erhöht die Sicherheit nicht" sage ich jetzt "Journalling erhöht die Sicherheit nur wenig." ;-) Dabei bleibe ich aber, denn erfahrungsgemäss sind in der Praxis Fehler, die von einem fsck nicht behoben werden können, auch durch ein Journal nicht zu beheben.
Hmmm, was ziehen wir jetzt für ein Fazit? Ach ja: Journaling entbindet nicht von der Pflicht zum Backup.
PS: FAT ist eigentlich noch erstaunlich stabil. Aber mit aktuellen Dateisystemen kann es nicht mithalten, dass ist klar.
|
|
|
|
|
|
|
|
|
|
|
|
|
Wenn du damit meinst, dass der exakte Zustand der Metadaten beim letzten Syncpoint vor Absturz nur mittels eines Logs garantiert wiederhergestellt werden kann, dann stimme ich dir zu.
Ja, das meine ich.
Aber: Es muss immer möglich sein, diesen Zustand auch ohne Log mittels eines klassischen fsck wiederherzustellen.
Dies ist genau das Problem. Man kann diesen Zustand unter (klassischem) FFS (und Derivaten) nicht immer wiederherstellen (unsere Diskussion :)
Ansonsten ist das Dateisystem futsch, wenn das Log fehlt.
Genau.
Genau das war ja lange ein grosser Kritikpunkt an ReiserFS.
Das ist gut moeglich.
denn erfahrungsgemäss sind in der Praxis Fehler, die von einem fsck nicht behoben werden können, auch durch ein Journal nicht zu beheben.
Richtig, das ist der Umkehrschluss.
Dies sind die wirklich groben Fehler
(Konsistenz des Filesystems im Eimer).
Ein Journal kann dies hoechstens zu verhindern versuchen, aber wenn fsck unkorrigierbare Fehler
findet, ist es definitiv zu spaet.
Hmmm, was ziehen wir jetzt für ein Fazit? Ach ja: Journaling entbindet nicht von der Pflicht zum Backup.
Natuerlich nicht. Nur schon wegen Human-Errors.
PS: FAT ist eigentlich noch erstaunlich stabil.
Solange man kein Write-Caching einsetzt.
Ich weiss nicht, wie es heute ist, aber
1992 war FAT ohne smartdisk (oder wie das
Write-Cache Program hiess) erstaunlich stabil.
D.h. gleiche Situation wie Unix ca. 1976.
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Friday 21. February, 18:27 MEW (#2)
|
|
|
|
|
wenn ich das richtig sehe sind da doch auch SCSI-Platten betroffen? Es sei denn SCSI-Platten würden alle Daten immer in-order schreiben.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ja klar, sie sind auch betroffen.
|
|
|
|
|
|