exFAT

Vista SP1でexFATという新しいファイルシステムが導入されるらしい。

SDカードは、FAT16の壁(2GB)にぶちあたった時にSDHCというFAT32の規格出してきたけど、それでも32GBが限界というとっても不安な容量で、現在あっさりとその限界に到達した32GBのSDカードが販売されている。

SDカードみたいなメディアで採用するファイルシステムに最低限求められるのは、特許フリーで、Windowsが対応していて、組み込み機器に安心して実装できるくらいシンプルな事。なので、ext3やNTFSはダメ、現実的に言ってFATしか許されないのだ。

また、デジカメのような記録型機器では、プアなCPUでも一刻も早く空き容量計算ができることが求められる。例えば、FAT32でクラスタサイズ16KB、総容量32GBの場合、クラスタ数が2048個で、FATで1クラスタあたり4byte利用するので8MBになる。FATを走査する速度が1MB/secとすると8秒かかる。SDカードの初期化とFATの読み込みにかかる時間も合計すると、電源を入れてから「残り」を計算できるまでに10秒かかってしまうかもしれない。

が、exFATではクラスタのbitmapが導入されて空きクラスタ検索が高速に実行可能になったようだ。空きクラスタ数のカウントにかかる時間が、さすがに1/32とまでは言わないが、1/10以下になることが期待できる。電源ONしてから2、3秒で「残り〜枚」と出せるようになる。素晴らしい。

・・・まぁ、独自規格にこだわらずに、Windowsが最初からext2/3に対応してくれていれば全く問題なかったんだが。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。