Flash-Dateisysteme unter Linux

Linux Dateisystemarchitektur


[ Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [ Inhaltsübersicht ] ... [ Flash-Dateisysteme ]

Virtual File System

An dieser Stelle ein kurzer Exkurs in die Architektur des Linux Kernels, bzw. wie dort Dateisysteme verwaltet werden. Dies wird helfen die Flash-Dateisysteme besser in den Gesamtkontext einordnen zu können.
Da es unter Linux eine Vielzahl verschiedener Dateisysteme gibt und diese in der Regel die gleichen System Aufrufe nutzen war gibt es eine Abstraktionsebene zwischen Kernel und eigentlichem Dateisystem: Das VFS verwaltet alle eingehängten Dateisysteme. Es weiss welcher Typ das Dateisystem ist und auf welchen Medien es beherbergt ist. Neue Dateisysteme können dynamisch hinzugefügt oder auch entfernt werden.
Zusätzlich hält das VFS je einen Cache für Inodes und Dentries bereit. Dies ermöglicht es auf oft oder gerade genutzte Datei-Metadaten schnell zuzugreifen.

Abbildung 5: Dateisystemarchitektur im Linux Kernel
Flash Cell

Flash Translation Layer

Bevor es speziell an die Bedürfnisse von Flash Speichern angepasste Dateisysteme gab, wurde ein sogenanntes FTL im Kernel verwendet. Der erste einfache Ansatz war dabei eine 1:1 Abbildung eines emulierten "Block Devices" auf den Flash Chip. Sollte ein Block des emulierten Geräts geschrieben werden, so wurde der gesamte Erase Block des Chips gelesen, die entsprechenden Stellen modifiziert und der gesamte Block, inklusive der alten Daten, wieder neu geschrieben.
Abbildung 6: Das FTL zwischen VFS und Dateisystem
Flash Cell


Dieser Ansatz hatte jedoch einige entscheidene Nachteile: zum einen gibt es keinerlei Wear Leveling und zum anderen ist diese Methode sehr anfällig für Datenverlust bei Stromausfällen. Fiel der Strom zum falschen Zeitpunkt aus, so waren weder die neuen, noch die alten Daten auf dem Flashmedium zu finden. Für einen ernsthaften Einsatz war dieser Weg also nicht geeignet.

Um Wear Leveling zu implentieren und eine höhere Zuverlässigkeit garantieren zu können wurde das FTL später als eigenes Journaling Filesystem aufgebaut, das die physikalische Lage der einzelnen Erase Blöcke kennt.

Es existieren heute mehrere Implementationen eines FTL. Eine entstammt der PCMCIA Spezifikation, eine andere wurde von der Firma M-Systems entwickelt. Linux unterstützt beide Implementationen, allerdings sind sie als "deprecated" markiert. Abgesehen von Patentstreits sind diese Verfahren sehr ineffektiv, da das FTL nicht entscheiden kann welche Daten auf dem Medium obsolet sind und welche nicht. Diese Unterscheidung findet auf Userebene bzw. auf Ebene des Dateisystems statt. Eine Garbage Collection ist so nur sehr schwer bis gar nicht zu realisieren. Das FTL müsste die genauen Interna des Dateisystems kennen, um eine effektive Garbage Collection betreiben zu können. Dies wurde zwar für das FAT Dateisystem versucht, aber wird von Experten noch immer als gefährlich eingeschätzt.
Nach oben

[ Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [ Inhaltsübersicht ] ... [ Flash-Dateisysteme ]