exFatのアロケーションユニットサイズの選び方

 MacとWindowsで共有するためにHDDをexFatで使ってたけど、容量の問題が発生して3TBのデータが4TBのHDDに保存できなかったので原因を調べてみました。

 

通常のHDDのフォーマットとexFatの違い

NTFSなどのシステム用のフォーマットはアロケーションユニットサイズが4kに設定されています。

exFatは、32GB以上のパーティションは128kbがデフォルトの設定になっています。

アロケーションユニットサイズは、ファイル一つの最低限の格納場所として扱われるので、通常のexFatの場合、ファイル毎に128kb以内の無駄な容量が発生します。

この違いで、ファイル数が多くなると無駄な容量も増えるので、保存できる容量が異なる原因になっているようです。


アロケーションユニットサイズの確認方法

1バイト程度の小さなファイルを作成してプロパティを参照するとディスク上のサイズを確認できます。

 

 適切なアロケーションユニットサイズ

サイズを小さくすれば容量の問題は改善すると思って4kにしてみました。

大きいファイルは問題なかったけど、 小さいファイルがあると遅くなります。

簡単に調べた感じサイズを半分にすると、小さなファイルの書き込みが25%ぐらい遅くなるようです。

なので、128を基準にすると32kbにすると書き込み速度が半分になります。

 調べたデータはこんな感じです。

ファイル数 12000
容量 112MB
NTFS 2分
exFat 128kb 5分40秒
exFat 64kb 7分
exFat 32kb 11分

容量の問題が発生した128kbは速度優先な感じがするので、バランスが良いのは64kbですかね。

このテストはHDDで行っているのでSSDやSDカードなどでは異なる可能性があります。

また、大きなファイルの場合は、テストしてませんがあまり差が無いように感じます。


ベンチマークでは分からない

ベンチークは、exFatの方が速いけど、実際使うと違うようです。 


NTFS

exFat 64kb

exFat 4kb


microSDでテストしてみた

microSDは64kb以下の方が速くて、それより下げても差があまり出ませんでした。今回は16kbを選択してみました。

128kb 5分

64kb 4分30秒

32kb 4分40秒

16kb 4分32秒


microSDカードのベンチマークです。


サイズが小さく出来ないとき

エクスプローラのフォーマットだと小さい値に出来ないときがありました。その場合は、ディスク管理を使って、ボリュームを削除して新しいボリュームを作成すると小さい値に変更できます。

 

フォーマットに依存しないファイル管理

今回のテストデータをzipでまとめると、フォーマットに関係なく1秒で書き込めます。

なので、小さなファイルは出来るだけ一つのファイルにまとめて管理した方が良いかもしれません。

 

最後に

64kbでフォーマットして3TBをコピーしたら書き込めました。増えた容量は40GBぐらいでした。すこし遅くなった気もするけど、書き込めないよりは良いかな。


yuki

初めての作業で調べた事、困った時の解決方法を記録するブログ。 主なテーマは、パソコン、プログラミング、カメラ、DTM、スピリチュアル、化学物質過敏症

コメントを投稿

Please Select Embedded Mode To Show The Comment System.*