YAFFS(Yet Another Flash File System)は、Charles Manningによって設計され、Aleph Oneに所属しています。
ニュージーランドのWhitecliffsを拠点とし、このプロジェクトはフラッシュメモリの特性に特化した
ファイルシステムを提供しています。YAFFS1が2002年に初めてリリースされ、それ以降、YAFFS2などの改良版が登場しました。
YAFFS1の特徴
YAFFS1は、512バイトのデータ領域と16バイトのOut-Of-Band(OOB)領域を利用した初の
ファイルシステムです。このシステムは、2〜3回書き換え可能な初期のNANDチップに対応しており、新たに記録する際に「ダーティーページ」を管理する仕組みを導入しています。ブロック毎の32ページがダーティとしてマークされ、これにより効率的なデータ管理が可能です。
新しいファイルが作成されると、その
メタデータ(タイムスタンプや名前など)が一つのページとして書き込まれ、同時に一意のオブジェクトIDが振り当てられます。このIDはファイル内の情報と紐づけられ、物理的な位置情報はRAM内のツリー構造で管理されます。古いページは無効化されるとダーティとしてマークされ、全体のブロックがダーティの場合は再利用のために消去されます。
YAFFS2の革新
YAFFS2は、YAFFS1の流れをくみつつも、より新しいNANDフラッシュ技術に対応しています。重要な違いは、内部データ構造が柔軟になり、書き込まれた各ページにシーケンス番号が付与される点です。これにより、古いページを論理的に上書きすることが可能になり、「ライトワンス」ルールに従った運用が実現されています。2003年後半にリリースされたYAFFS2は、下位互換性も考慮されています。
YAFFS2では、「縮小ヘッダー」の概念が導入され、ファイルサイズが小さくなる際のデータ管理が改善されています。従来の方式と異なり、影響を受けるすべてのページを無効にするのではなく、特定のページ数を示すことで効率的な記録が可能です。
パフォーマンスと適用範囲
YAFFSは、高い
データ完全性とパフォーマンスを追求したログ構造の
ファイルシステムです。
Linuxや
Microsoft Windows Embedded CE、
RTEMSなど、さまざまなOS上で利用できるため、幅広い用途に対応しています。また、特に「YAFFS/Direct」は、OSなしの環境や組み込みOSでの使用に適した設計がなされています。
このシステムは、GPLおよびAleph Oneとのプロダクトライセンスの元で公開されており、オープンソースとして利用できます。YAFFSは、最新のフラッシュ技術に対応しつつ、効率的で高性能なデータ管理を実現する
ファイルシステムとして広く認知されています。