Flash-Dateisysteme unter Linux

LogFS


[ Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [ Inhaltsübersicht ] ... [ Wear Leveling für den Superblock ]

LogFS

Ein noch in der Entwicklung befindliches, aber dennoch bereits jetzt sehr interessantes Dateisystem für Flash Speicher ist LogFS. Der Name lässt vermuten, dass es sich auch hier um ein Log basiertes Dateisystem handelt. Ursprünglich war es das aber nicht der Fall und der Name war lediglich eine Anspielung auf das "J" in JFFS1/2. Dieses steht für "Journaling". Keines der beiden Dateisysteme ist aber ein Journaling Dateisystem, beide sind Log basiert.
LogFS war das erste speziell für Flash Medien entwickelte Dateisystem, das ein Journaling Dateisystem ist. Wobei auch dies nicht mehr hundert prozentig stimmt. Denn mitlerweile hat auch LogsFS Log Ansätze implementiert, so dass man sagen kann es bietet das beste aus beiden Welten.

Das Konzept der "wandernden Bäume"

Die clevere Idee von LogFS ist die interne Dateisystemstruktur ähnlich wie bei Ext2 als Baum zu realisieren. Dies ermöglicht "out-of-place" Updates des Dateisystems. Sprich, Blöcke werden nicht an Ort und Stelle auf dem Medium aktualisiert, sondern wie bei einem Log basierten System ans Ende des verfügbaren Speichers geschrieben.
Ein Update einer Datei funktioniert dabei nach dem Prinzip des "wandernden Baums". Abbildung 8 zeigt das Vorgehen:

Abbildung 8: Wandering tree
Out-of-place updates with wandring trees in LogFS


Im Beispiel wird angenommen es soll Block E aktualisiert werden. Zunächst wird ein neuer Block E* ans Ende des freien Speichers geschrieben und geschaut welche weiteren Blöcke C referenziert. In diesem Fall D. Es wird daher ein neuer Block D* geschrieben und schliesslich C* mit Referenzen auf D und E*. Das gleiche Schema wird bis zum Wurzel Knoten durchgeführt. Erst jetzt ist das Update vollständig.
Positiver "Neben"effekt ist das so entstehende Wear Leveling.

Journaling

Würde während eines Updates der Baums der Strom ausfallen, so kann nach einem Stromausfall sehr einfach anhand des Journals nachvollzogen werden welche Operationen mitunter nicht vollständig ausgeführt wurden. Dadurch, dass alte Daten erst gelöscht werden, wenn der Root Node aktualisiert wurde, bestehen die alten Daten so lange noch. Im Falle eines Systemausfalls kann dies genutzt werden um Konsistenz in die Daten zu bringen.
Nach oben

[ Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [ Inhaltsübersicht ] ... [ Wear Leveling für den Superblock ]