JFFS2

Journaling Flash File System, version 2（または JFFS2）は、Linux向けNAND型フラッシュメモリ用の1つ。スウェーデンのAxis Communicationsが開発したJFFSを、Red HatのDavid Woodhouseが改良したもの。
JFFSの後継でJFFS2は、カーネルバージョン2.4.10リリースの一部としてLinuxカーネルメインラインにマージされた2001年9月23日以降、Linuxカーネルに含まれています。 JFFS2は、Das U-Boot、Open Firmware、eCos、RTEMS 、RedBootなどのいくつかのブートローダーでも利用できます。 JFFS2の最も顕著な使用法は、OpenWrtから来ています。
JFFS2の代替として、LogFS、UBIFS、およびYAFFSの少なくとも3つのファイルシステムが開発されています。
概要.
JFFSのウェアレベリングアルゴリズムは、NOR型フラッシュメモリの寿命を短くしがちであったため、JFFS2ではアルゴリズムの再設計が行われ、循環ログが廃止された。また、NAND型フラッシュメモリ用に設計され、圧縮によってパフォーマンスも改善されている。
特徴.
JFFS2で導入された新機能：
設計.
JFFSと同様に、ファイルとディレクトリへの変更はノードにフラッシュするために「ログに記録」されます。ノードには次の2つのタイプがあります：
JFFSと同様に、ノードは作成時に有効なものとして開始され、新しいバージョンが別の場所に作成されると廃止されます。
ただし、JFFSとは異なり循環ログはありません。代わりに、JFFS2はフラッシュメディアの消去セグメントと同じサイズの単位であるブロックを扱います。ブロックは、一度に1つずつ、下から上にノードで埋められます。クリーンブロックは、有効なノードのみを含むブロックです。 ダーティブロックには、少なくとも1つの廃止されたノードが含まれています。 空きブロックにはノードが含まれていません。
ガベージコレクタはバックグラウンドで実行され、ダーティブロックを空きブロックに変換します。これは、有効なノードを新しいブロックにコピーし、廃止されたノードをスキップすることによって行われます。これが完了すると、ダーティブロックが消去され、空きブロックとして指定する特別なマーカーでタグ付けされます（消去操作中に電源が失われた場合の混乱を防ぐため）。
ウェアレベリングをより均一にし、消去がほとんど静的なファイルシステムに集中しすぎないようにするために、ガベージコレクタはクリーンなブロックを消費することもあります。
短所.
構造化ログの設計により、JFFS2の欠点は次のとおりです：