UBIFS (Unsorted Block Image File System)
UBIFSは生の
フラッシュメモリを使用する
ファイルシステムの一つで、特に大容量のNAND型
フラッシュメモリにおいて優れた性能を発揮します。このシステムは、
JFFS2の後継として2007年初頭に開発が始まり、2008年10月に
Linuxカーネル2.6.27向けに初の安定版がリリースされました。UBIFSはハンガリーのセゲド大学と
ノキアの技術者によって共同開発されました。
UBIFSの基本構成
UBIFSはUnsorted Block Image (UBI) デバイスの上で動作し、さらにその下にはMemory Technology Device (MTD) が存在します。UBIFSはMTDを直接利用することはなく、UBIを通して操作を行います。この関係により、UBIFSはライトキャッシュ機能に対応することができます。従来の
JFFS2との大きな差は、内部のデータ管理が画期的に改善されている点にあります。
UBIFSは設計上、迅速なマウントを実現し、大きなファイルへの迅速なアクセスと高い書き込み速度を追求しています。また、データ圧縮機能も充実しており、zlibやLZOといったアルゴリズムを用いることで、データ転送時の圧縮を行うことができます。これは、システムの全体的なパフォーマンスを向上させ、DFFS2に比べて多くの点でメリットを持つことを証明しています。
JFFS2は
ファイルシステムのインデックスをメモリに保持しますが、UBIFSではそのデータを
フラッシュメモリに格納します。このため、UBIFSはボリュームをマウントするたびにテーブルを再構築する必要がなく、スケーラビリティの面でも大きな利点があります。
JFFS2は、メモリでのテーブル保持によって、いくつかのイメージが使用できない場合にシステムのRAMを消費してしまうことがありますが、UBIFSはこの問題を回避しています。
Unsorted Block Image (UBI)
UBIは
フラッシュメモリデバイスの消去ブロックの管理を行うレイヤです。具体的には、NANDフラッシュの不良ブロックを追跡し、
ウェアレベリングの機能を提供します。
ウェアレベリングは、フラッシュデバイス全体にわたって均等に消去や書き込みを行うために重要です。UBIは物理的な消去ブロックとマッピングされる論理消去ブロックを提供し、UBIFSが
ウェアレベリングや不良ブロックを気にすることなく動作できるように設計されています。また、UBIはNANDフラッシュでsquashfsを利用する際にも役立ちます。
fastmap機能
Linux 3.7以降、UBIはfastmap機能に対応しています。この機能は、以前に全てのフラッシュデバイスをスキャンし記録した情報を基に動作します。もし、情報の取得に失敗した場合には、完全スキャンを行う仕組みです。古いUBIシステムは、このfastmap情報を無視して運用されていました。
まとめ
UBIFSは、
フラッシュメモリ専用の
ファイルシステムとして、
JFFS2の後継に位置付けられています。UBIやfastmap機能と相まって、その高い性能や耐障害性が実現されているため、今後の
フラッシュメモリシステムにおいて重要な役割を果たすことでしょう。