IS01に使っているSDカード
IS01をWiFiで使っています。
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で小さなクラスタサイズを指定してフォーマットし直すことにしました。
SDカードのフォーマット
・・・もちろん、データは全部消えますので、全フォルダをPCにコピーしてバックアップしておく。
なお、ワンセグの録画データは、あとでSDに戻しても、再生できなくなっていましたのでご注意。*1
コマンドプロンプトから、
format g: /FS:FAT32 /A:2048
とする。ここで、「g:」はSDカードのドライブレターです。
ここでは、2048バイト(2kB)のクラスタサイズを指定しています。
ちなみに、4096バイト(4kB)と「/q」オプション(クイックフォーマット)を指定した場合、フォーマット後にクラスタサイズが4kBと正しく表示されるのに、書き込みをして確認したところ、どうも32kB単位で書きこまれているようでした。
確認していないので、クイックフォーマットのせいだったのかはよくわかりませんが、とりあえず上記の設定ではうまくいきました。(8GBのSDの場合です)
ちなみに、フォーマットには30分以上かかりましたので要注意。
*1:うまいバックアップの方法があれば教えて欲しいものです・・。
データの書き戻し
・・・完了後、PCにバックアップしておいたファイルを全てSDに書き戻します。
これには2時間以上かかりました…。
キャッシュフォルダの確認
ファイルコピー完了後、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などでは、かなり効果的と思います。