UBIFS - UBIFS

UBIFS
Entwickler Nokia mit Unterstützung der Universität Szeged
Vollständiger Name Unsortiertes Blockbilddateisystem
Eingeführt 2008 ; Vor 13 Jahren mit Linux-Kernel 2.6.27 ( 2008 )
Strukturen
Verzeichnisinhalt B+ Bäume
Grenzen
Erlaubte Zeichen in Dateinamen Jedes Byte außer NUL und Schrägstrich "/"
Merkmale
Gabeln Jawohl
Attribute Jawohl
Dateisystemberechtigungen POSIX
Transparente Kompression Jawohl
Sonstiges
Unterstützte Betriebssysteme Linux

UBIFS ( UBI File System , vollständiger Unsorted Block Image File System ) ist ein Flash-Dateisystem für nicht verwaltete Flash-Speichergeräte . UBIFS arbeitet auf einer UBI- Schicht (Unsorted Block Image), die sich selbst auf einer MTD-Schicht ( Memory Technology Device ) befindet. Das Dateisystem wurde von Nokia-Ingenieuren mit Hilfe der Universität Szeged , Ungarn, entwickelt. Die Entwicklung begann 2007 mit der ersten stabilen Version des Linux-Kernels 2.6.27 im Oktober 2008.

Zwei Hauptunterschiede zwischen UBIFS und JFFS2 sind, dass UBIFS Schreib-Caching unterstützt und UBIFS auf der pessimistischen Seite der Berechnung des freien Speicherplatzes irrt. UBIFS ist bei großen NAND-FLASH-Geräten tendenziell besser als JFFS2. Dies ist eine Folge der UBIFS-Designziele: schnelleres Mounten, schnellerer Zugriff auf große Dateien und verbesserte Schreibgeschwindigkeiten. UBIFS auch Konserven oder verbessert auf JFFS2 ‚s on-the-fly Kompression, Wiederherstellbarkeit und Leistungstoleranz versagen. Die On-the-Fly-Datenkomprimierung von UBIFS ermöglicht zlib ( deflate algorithm), LZO oder Zstandard .

UBIFS speichert Indizes im Flash, während JFFS2 Dateisystem-Indizes im Speicher speichert. Dies wirkt sich direkt auf die Skalierbarkeit von JFFS2 aus, da die Tabellen bei jedem Mounten des Volumes neu erstellt werden müssen. Außerdem verbrauchen die JFFS2-Tabellen möglicherweise genug System-RAM, sodass einige Bilder möglicherweise unbrauchbar sind.

UBI

UBI ( Unsorted Block Images ) ist eine Löschblock- Verwaltungsschicht für Flash-Speichergeräte . UBI dient zwei Zwecken, nämlich der Verfolgung fehlerhafter NAND-Flash-Blöcke und der Bereitstellung von Wear-Leveling . Wear-Leveling verteilt die Lösch- und Schreibvorgänge über das gesamte Flash-Gerät. UBI präsentiert logische Löschblöcke höheren Schichten und ordnet diese physischen Löschblöcken zu. UBI wurde speziell für UBIFS geschrieben, damit UBIFS sich nicht mit Wear Leveling und Bad Blocks auseinandersetzen muss. UBI kann jedoch auch bei Squashfs und NAND-Flash nützlich sein ; squashfs kennt keine fehlerhaften NAND-Flash-Blöcke.

Die Dokumentation von UBI erklärt, dass es sich nicht um eine vollständige Flash Translation Layer (FTL) handelt. Obwohl eine FTL auch schlechte Blöcke und Wear-Leveling handhabt, ist die Schnittstelle, die eine FTL bietet, ein Blockgerät mit kleinen (typischerweise 512 Byte) Sektoren, die völlig unabhängig geschrieben werden können. Im Gegensatz dazu stellt die Schnittstelle von UBI Löschblöcke und programmierbare Seiten (die unterschiedliche Größen haben und viel größer als typische Blockgerätesektoren sind) direkt offen, und Dateisysteme, die UBI verwenden, müssen sich der Größen und Beschränkungen bewusst sein, wie Blöcke vor dem Schreiben gelöscht werden müssen .

UBI entspricht in gewisser Weise einem Logical Volume Manager . Anstatt Flash in feste Bereiche zu unterteilen, erstreckt sich bei der typischen Verwendung ein einzelnes UBI-Gerät über den gesamten Flash (mit Ausnahme vielleicht einiger Seiten an festen Speicherorten, die für den Bootloader reserviert sind), und innerhalb des UBI-Geräts werden mehrere Volumes erstellt. Dadurch kann das Wear-Leveling über den gesamten Flash verteilt werden, auch wenn einige Volumes häufiger beschrieben werden als andere. UBI-Volumes können statisch sein (die eine ganze Datei oder ein Bild enthalten, die einmal geschrieben und von UBI durch CRC-32 geschützt werden) oder dynamisch (die ein Dateisystem mit Lese-/Schreibzugriff enthalten, das für seine eigene Datenintegrität verantwortlich ist). Das einzige Dateisystem, das UBI direkt unterstützt, ist UBIFS, aber gluebies ist möglich, ein MTD-Gerät zu emulieren, das dann verwendet werden kann, um andere Flash-Dateisysteme wie JFFS2 und YAFFS auszuführen, und ubiblkes ist möglich, Blockgeräte zu emulieren, die gängige Dateisysteme ausführen können wie Ext4.

Fastmap

UBI wurde in Linux 3.7 mit Fastmap-Unterstützung erweitert. Fastmap verwaltet eine On-Disk-Version von Informationen, die zuvor im Speicher erstellt wurden, indem das gesamte Flash-Gerät gescannt wird. Der Code greift auf den vorherigen Mechanismus eines vollständigen Scans bei Fehlern zurück und ältere UBI-Systeme ignorieren die Fastmap-Informationen einfach.

Siehe auch

Verweise

Externe Links