IS01に使っているSDカード

IS01+8GB(SDHC)


IS01WiFiで使っています。
SDHCカードは、8GBのものを挿しています。

で。
オフライン地図としてMaps(-)をとても便利に使っているのですが、そのキャッシュがずいぶんと大きい。

キャッシュのフォルダをWindowsで見てみると、こんな感じ。

実データ量が 404MB に対して、消費しているのは 3.21GB !!

なんと、8倍以上の領域を無駄に消費しています。

これは、クラスタサイズ(ファイルアロケーションサイズ)というものに起因しています。
クラスタサイズというのは、ファイルを保存するときに消費するブロックのサイズです。
例えば、クラスタサイズが4kBの場合。

  • 1kBのファイル ==> 4kB分の領域を消費。
  • 5kBのファイル ==> 8kB分の領域を消費。
  • 10kBのファイル ==> 12kB分の領域を消費。

単純には、クラスタサイズで割り切れない分を切り上げた数のクラスタを消費する、という感じ。
(10kBなら、10[kB]÷4[kB/クラスタ] = 2[クラスタ] あまり 2kB → 3[クラスタ]を消費 = 3[クラスタ]×4[kB/クラスタ] = 12[kB]分を消費。この際の無駄になった2kB部分をクラスタギャップと呼ぶ)

クラスタサイズが大きいほどこのギャップは大きくなりやすく、また、ファイル数が多くなるほど、この影響が顕著になってきます。
容量を無駄にしないためには、小さなクラスタサイズが望ましいです。

なお、クラスタサイズが小さいと、管理するための領域が大きくなる、領域が細切れになるのでフラグメンテーション(断片化)が生じやすい、オーバーヘッドが大きくなるためアクセスが遅くなる、などのデメリットもあります。
(また、フラッシュメモリの場合は特に、クラスタサイズとはまた別に、物理的にブロック単位での読み書きが行われるため、パフォーマンスが著しく悪くなる可能性もあるらしい)


しかし、IS01で使う分には、容量のほうが重要。
特に、Maps(-)のように、小さなファイルが大量にある場合は、クラスタギャップで無駄になる容量が非常に大きい。


そこで、一度、PCで小さなクラスタサイズを指定してフォーマットし直すことにしました。

現在のフォーマットの確認

コマンドプロンプト(cmd.exe)から、chkdskコマンドで、現在のフォーマットを確認できます。
Windows Vista/7 の場合は、cmd.exeを右クリックで「管理者として実行」する必要があります。

アロケーション ユニット サイズ」というのが、クラスタサイズです。

確認してみると、フォーマットはFAT32クラスタサイズ 32kB になっていました。
これは、IS01本体でフォーマットしたものです。
8GBのSDHCの場合は、この設定でフォーマットされるようです。

SDカードのフォーマット

・・・もちろん、データは全部消えますので、全フォルダをPCにコピーしてバックアップしておく。
なお、ワンセグの録画データは、あとでSDに戻しても、再生できなくなっていましたのでご注意。*1

コマンドプロンプトから、

format g: /FS:FAT32 /A:2048

とする。ここで、「g:」はSDカードのドライブレターです。
ここでは、2048バイト(2kB)のクラスタサイズを指定しています。

ちなみに、4096バイト(4kB)と「/q」オプション(クイックフォーマット)を指定した場合、フォーマット後にクラスタサイズが4kBと正しく表示されるのに、書き込みをして確認したところ、どうも32kB単位で書きこまれているようでした。
確認していないので、クイックフォーマットのせいだったのかはよくわかりませんが、とりあえず上記の設定ではうまくいきました。(8GBのSDの場合です)
ちなみに、フォーマットには30分以上かかりましたので要注意。

*1:うまいバックアップの方法があれば教えて欲しいものです・・。

キャッシュフォルダの確認

ファイルコピー完了後、SD内のキャッシュフォルダを確認すると、以下のようになっていました。


実データ量が 404MB (最初と同じ)に対して、
消費しているのは 540MB !!

前後の比較を表にすると・・・。

クラスタサイズ 32kB 2kB
実データ量 404MB 404MB
消費領域 3,295MB 540MB
クラスタギャップ(無駄分) 2,891MB 136MB
実データ量に対する消費容量の割合 816% 134%

※ファイル数[105,240]、フォルダ数[3,531]です。
※全てMB単位(1MB=1024kB=1024×1024B)に換算しています。

同じデータを保存していながら、差し引きで 約2GB (1,955MB) 分も、空き容量が増えました!
(8GBのSDなので、2GBは 25% 分にも相当します!)


残念なのは、ワンセグの録画データが維持できないことですが、ファイル数が多い場合には、これほどまでにクラスタサイズの影響が出るのですね。
実際にやってみて、こんなに効果があるとは思いませんでした。


細かいファイルを大量に保存するPDAなどでは、かなり効果的と思います。