JFFS

Journaling Flash File System（または JFFS）は Linux オペレーティングシステム上の NOR フラッシュメモリデバイス上における利用向けのである。JFFS は JFFS2 によって置き換えられてきている。
設計.
フラッシュメモリは磁気ディスクとはまったく異なるアクセス上の制約がある。特に、フラッシュメモリを消去することは
ext2 のようなファイルシステムは典型的には、すべての更新の後に inode やディレクトリのようなデータ構造をディスク上で更新して、適当な位置でデータ構造を更新する。このようにウェアレベリングが大きく欠落しているため、従来のファイルシステムがフラッシュデバイス上での読み書きの利用に対して不向きになっている。
JFFS はフラッシュデバイスを循環ログとして扱うことでウェアレベリングを強化している。ファイルやディレクトリへのすべての変更は"ノード"内のログの末尾に書き込まれる。個々のノード内では、メタデータを含むヘッダが最初に書き込まれ、次にファイルデータがあれば書き込まれる。ノードはヘッダ内のオフセットポインタでつながれている。ノードは最初有効として始まり、より新しいバージョンのノードが作成されたとき廃止になる。
ファイルシステムに残っている自由空間はログの先頭と末尾の間のすき間である。これが少なくなると、ガベージコレクタが先頭から末尾まで有効なノードをコピーし、廃止されたノードを飛ばす。このようにして空間を回収する。