UBIFS

Unsorted Block Image File System (UBIFS)は、生のフラッシュメモリメディアに用いられるファイルシステムである。JFFS2の後継であり、LogFSと競合関係にある。2007年の初頭に開発が始められ、2008年10月に最初の安定版がLinuxカーネル 2.6.27向けにリリースされた。UBIFSは、ハンガリーのの協力により、ノキアの技術者によって開発された。
概要.
UBIFSはUnsorted Block Image (UBI) デバイスの上で動作し、UBIデバイスはMemory Technology Device(MTD)の上で動作する。MTDを直接には使用しない。UBIFSとJFFS2の大きな違いは、UBIFSがライトキャッシュ (write caching) に対応していることと、UBIFSが未使用エリアの計算で悲観的な方に誤ることである。大容量NAND型フラッシュメモリで、UBIFSはJFFS2よりもより良く動作する傾向がある。これは、UBIFSの設計の「速いマウント、大きなファイルへの速いアクセス、書き込み速度の向上」という目標の結果である。UBIFSは、伝送時データ圧縮(on-the-fly compression)や回復性、電源断への耐性についても、JFFS2の性能を維持しているか向上している。UBIFSの伝送時データ圧縮には、zlib（deflateアルゴリズム）やLZOが使用できる。
JFFS2はファイルシステムのインデックスをメモリに保持するが、UBIFSはフラッシュに格納する。JFFS2ではボリュームをマウントするたびにテーブルを作り直す必要があり、これがJFFS2のスケーラビリティに直接影響を与えている。また、JFFS2のテーブルは、いくつかのイメージが使えない場合のために十分なシステムRAMを消費する。
Unsorted Block Image.
Unsorted Block Image(UBI)は、フラッシュメモリデバイスの消去ブロック("erase block")の管理レイヤである。UBIは、NANDフラッシュの不良ブロック("bad block")を追跡し、ウェアレベリングを提供する。ウェアレベリングは、フラッシュデバイスの全体にわたって消去や書き込みが行えるようにする。UBIは物理的なフラッシュの消去ブロックにマッピングする、高レイヤの論理消去ブロック(LEB: "logical erase block")を提供する。UBIは、UBIFSにおいてウェアレベリングや不良ブロックを気にする必要がないように、UBIFSのために設計された。しかし、UBIはNANDフラッシュでsquashfsを使う場合にも有用である。squashfsはNANDフラッシュの不良ブロックを意識しない。
fastmap.
UBIはLinux 3.7で"fastmap"に対応した。"fastmap"は、それ以前に全てのフラッシュ装置をスキャンしてメモリ上に作られる情報のディスク上のバージョンを維持する。情報の取得に失敗した場合には完全スキャンを行う。古いUBIシステムは単に"fastmap"の情報を無視する。