ファイル・システム設計ガイド2010 _記事「ファイル・システム導入についてのポイント」
tag:
キャッチアップ 2010年7月26日
近年の組み込み開発では,ミドルウェアを積極的に採用して開発期間・開発コストを低減する手法が一般的になってきました.組み込みミドルウェアの中でも,特に使われているミドルウェアの一つがファイル・システムです.データの記録・保存もさることながら,ブート・イメージのダウンロードやネットワークを介してのデータ受け渡しなど,「ファイル」はデータを取扱うのに非常に都合が良い概念です.ここでは,組み込み機器へのファイル・システムの導入ポイントについて解説します.
ファイル・システムの使用目的とFAT の種類
ファイル・システムが無くてもSDメモリ・カードやUSBメモリの物理アドレスに直にデータを読み書きすることは可能です.しかし,それではPC など他のプラットフォームとデータを共有するためのルールを別途取り決めしなければならず大変です.ファイル・システムを使うことでPC や他の機器と簡単にデータを授受する環境を容易に構築することができます.最近ではPC との互換性を保つため,組み込み機器にはWindowsで採用されているFAT(File Allocation Tables)が一般的に利用されています.
現在,FAT にはFAT12,FAT16,FAT32,exFATの種類があります(表1).
表1 FAT の種類
FAT の種類 | 最大ファイル・サイズ | 最大クラスタ・サイズ | 最大ボリューム・サイズ |
FAT12 | 32MB | 32KB | 32MB |
FAT16 | 2GB | 32KB | 2GB |
FAT32 | 4GB | 64KB | ・8TB(2KB/ セクタ) |
exFAT | ・16EB ・2TB(SD カードの場合) | 32MB | ・セクタサイズ×264 ・2TB(SD カードの場合) |
FAT12 .FAT32の違いは,クラスタ識別子のビット幅の違いによるものです.当初,FAT12で設計されたFAT ファイル・システムは,その後のメモリ増大に伴ってクラスタ識別子のビット幅を12bit→16bit→ 32bitと拡張してきました. しかしFAT32においても1ファイルの最大サイズは4GBまでであり,動画や長時間録音などの要求に対応できなくなってきたこともあってWindowsCE 6.0 やWindows Vista では新たにexFAT(Extended FAT)に対応しています.
exFATはフラッシュドライブに最適化されたファイル・システムで,理論上の最大ファイルサイズは16EB(264:160億GB),ボリュームサイズはセクタサイズ×264Byteと現在のストレージサイズからみるととてつもなく広大なメモリ領域を扱うことができます.
効率のよいファイル操作
大きなファイルを小さいアロケーション・ユニット・サイズ(クラスタサイズ)で扱うと頻繁にメディアにアクセスしなければならず,アクセス効率がよくありません.逆に小さなファイルを大きいアロケーション・ユニット・サイズで扱うと,メモリ効率がよくありません.
例えば,アロケーション・ユニット・サイズが64KByteの場合,実際に書き込むデータが100Byteでもメディア上は64KByteの容量を占有してしまいます( クラスタ・ギャップ).メモリ単価が安くなってきたからと言っても,組み込みの世界ではまだまだメモリを潤沢に使えることは少なく,装置コストの観点からも効率的なメモリ使用を心がけるべきです.そのため,小さいログ情報をたくさん作成するアプリケーションなのか,あるいは1ファイルが巨大な動画ファイルを扱うアプリケーションなのか,設計時に使うアプリケーションにとって最適なFAT種別,アロケーション・ユニット・サイズを考慮する必要があります.
高速性に対する要求
FAT はその構造上FAT チェーンを辿って目的のファイル・データを探すため,ディレクトリの中に格納するファイル数が多くなってくるにつれ目的のファイルにアクセスする時間が増大したり,大容量ファイルへのアクセスに時間が掛かってしまうことがあります. しかしファイル・システム製品によっては,そういった状況でも効率よくファイル・アクセスできるように,FAT 情報やディレクトリ情報をキャッシュ化してアクセス効率を上げる機能を持っている製品もあります.頻繁にアクセスするFAT 情報をキャッシュに持つことによってメディアへのアクセス頻度を抑え,全体のパフォーマンスを低下させないよう工夫しています.
また,FAT 情報をビットマップ化して空きFAT検索を高速に行えるようにすることで,大容量メディア上でも高速でファイル操作を行う,といったことも可能です.
高信頼性に対する要求
組み込み機器においても,データ記録にSDメモリ・カードやUSBメモリを使うのがごく一般的になってきました.リムーバブル・メディアに大敵なのが「突然の抜去」や「突然の電源断」であることは言うまでもありません.しかし,組み込み機器に電源断は付き物ですし,メディアの挿入/抜去が人の手で行われる以上,むしろそういったことが起
こりえる前提でシステムを設計しなければなりません.
突然の電源断に対して,書き込み途中のファイルを完全に保護・救済しなければならないのか,それともメディア全体への影響を最小限に留め,対象ファイル以外は保護・救済するのか,などの要求仕様によって,それらの機能に対応しているファイル・システムを選択する必要があります.