組み込みデバイスにおけるストレージにはハードディスクではなくフラッシュが採用されることが多い。特に大容量化が進んだことでこの傾向は顕著だ。ノートPCにおいてもハードディスクの代わりにSSDを搭載したモデルが増えはじめるなど、外部ストレージとしてフラッシュデバイスを活用する傾向はこれからますます増えることになりそうだ。
これまで開発されてきたファイルシステムはストレージとしてハードディスクを利用することを考慮しており、フラッシュストレージを考慮した作りにはなっていない。そこでいま熱望されている実装がフラッシュを考慮して設計されたファイルシステム、いわゆる「フラッシュファイルシステム(Flash FS)」だ。
組み込みでフラッシュデバイスを使う必要性から、すでにいくつかのフラッシュファイルシステム実装が存在する。そこでEmulex, Consultant Engineer, M. Tim Jones氏が公開したホワイトペーパ"Anatomy of Linux flash file systems"に注目したい。同ホワイトペーパではJFFS、JFFS2、YAFFS、Cramfs、SquashFSなどの基本的なアイディアや仕組みを紹介している。フラッシュファイルシステムを知るうえで興味深いドキュメントだ。
フラッシュデバイスにはその構造からNOR型とNAND型という2種類のデバイスが存在する。それぞれ特性が異なるためフラッシュファイルシステムはそれぞれを考慮して設計する必要がある。また書き込み回数に制限があるため、書き込みの処理を偏りなく均一に実施するといった工夫が必要になり、それにあわせてガベージコレクタや不良ブロックの管理なども必要になる。現在開発中の実装にはLogFSやUbiFSなどがある。
フラッシュファイルシステムの開発と実装はLinuxやFreeBSDなどのFLOSS OSで今最も注目されている事項のひとつだ。特に組み込みデバイスへの搭載が広まるにつれて、以前にも増してフラッシュファイルシステムの必要性が増えている。同氏のホワイトペーパはフラッシュファイルシステムについて知るうえで基本的で理解しやすいものであるため、デベロッパは一度目を通しておきたい。