Flash-Dateisysteme unter Linux
Anforderungen an ein Flash-Dateisystem
[
Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [
Inhaltsübersicht ] ... [
Linux Dateisystemarchitektur ]
Wear Leveling
Eine der größten Herausforderungen beim Design eines Dateisystems, das speziell für Flash-Speicher ausgelegt ist, ist die Tatsache, dass die einzelnen Zellen nur eine begrenzte Lebensdauer haben. Das Dateisystem muss also dafür Sorge tragen, dass die Erase Blöcke möglichst gleichmäßig oft gelöscht werden. Würde immer an die selbe Stelle auf dem Speichermedium geschrieben werden, so würde dies zu "Löchern" aus defekten Erase Blocks führen.
Garbage Collection
Erase Blöcke sind verglichen mit Dateisystemblöcken deutlich größer. Da aber stets nur komplette Erase Blöcke gelöscht werden können, ist es nicht ohne weiteres möglich einzelne Dateisystemblöcke zu löschen. Es könnten noch valide Daten in dem entsprechenden Erase Block vorhanden sein, die natürlich nicht überschrieben werden dürfen.
Die Lösung dieses Problems ist eine Garbage Collection. Hierbei werden Daten im Allgemeinen nicht sofort gelöscht, sondern zunächst nur als obsolet markiert. Durch geschicktes Verschieben der übrig bleibenden, noch validen Daten an andere Stellen ist es nun möglich Erase Blöcke komplett zu löschen.
In Abbildung 4 ist der allgemeine Ablauf der Garbage Colletion im JFFS dargestellt. Andere Dateisysteme nutzen ähnliche Techniken. Mehr dazu lesen Sie im Kapitel über Flash-Dateisysteme.
Abbildung 4:
Allgemeines Verfahren bei Garbage Collection
Quelle: IBM
|
Bad Block Management
Trotz Wear Leveling Strategien lässt es sich nicht vollständig verhindern, dass einzelne Zellen zerstört werden. Oft ist es sogar so, dass Flashspeicher bereits mit defekten Zellen ausgeliefert werden. Die Hersteller sparen sich auf die Weise teure und zeitaufwändige Tests der Chips. Logische Konsequenz ist ein Bad Block Management. Also eine Tabelle in der notiert wird, in welche Blöcke nicht mehr geschrieben werden kann, da sie defekte Zellen enthalten. In den meisten Fällen geschiet dies bereits in Hardware in Form eines Mikrocontrollers.
[
Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [
Inhaltsübersicht ] ... [
Linux Dateisystemarchitektur ]