2020年10月29日更新
アロケーションユニットサイズとは?確認方法など解説!
USBの初期化時などに見かける「アロケーションユニットサイズ」。アロケーションユニットサイズとは何なのか全くわからない人もいるでしょう。不適切なものに設定されている場合のデメリットや、最適なサイズとは、またシステム上のサイズ確認する方法を含め解説していきます。
目次
アロケーションユニットサイズとは
アロケーションユニットサイズとはどのようなものか、全く知らない人もいれば、名前だけは見たことがあるという人もいるでしょう。まずはアロケーションユニットサイズとは何なのかについてを解説していきます。
アロケーションユニットサイズとは何?
アロケーションユニットサイズというのは、ファイルを管理する単位を示していて、1つのファイルを保管するための最小単位を示します。
どんな時に必要?
アロケーションユニットサイズとはどんな時に必要なものなのかというと、データを保存する際、その保存領域を利用するために必要なものです。
データの記録に利用する最小単位は「セクター」と呼ばれ、アロケーションユニットサイズの中にいくつもの「セクター」がある状態です。
このセクターで区切るとファイルの読み込みにいくつかのセクターにアクセスする必要が出ます。
そのため、それを防ぐため、いくつかのセクターごとにアロケーションユニットサイズを設定し、そのアロケーションユニットサイズへアクセスするという方法でファイルの読み込みを行うのです。
別名はクラスターサイズ
なお、アロケーションユニットサイズはクラスターサイズとも呼ばれます。最小単位を数える際に1クラスタ、2クラスタと数えるためです。
アロケーションユニットサイズ(クラスターサイズ)は荷物を詰める1つのロッカーのような役割を果たしています。データを保管するWindowsなどのシステムのハードディスクの中にはそういったロッカーがいくつもあって、その中にデータを保管しているのです。
イメージとしては下記のような形です。四角の1つ1つがシステムに設定されているアロケーションユニットサイズ(クラスターサイズ)で、それらがたくさん組み合わさって一つの保存領域になっているわけです。
アロケーションユニットサイズにはそれぞれファイルを格納できます。容量が1つのアロケーションユニットサイズ(クラスターサイズ)を超えると別のアロケーションユニットサイズ(クラスターサイズ)を利用して保存する、という方法をとって保管されます。
アロケーションユニットサイズ(クラスターサイズ)で比較をおこなってみましょう。例えば8KBのものをシステム内に保存したとします。この場合、4KBのアロケーションユニットサイズ(クラスターサイズ)を2クラスタ利用することになります。
逆に、アロケーションユニットサイズ(クラスターサイズ)が16KBの場合は1クラスタ利用するだけで8KBのファイルの保存に事足りることになります。図を比較すると余裕の有無がよく分かりますね。
アロケーションユニットサイズ(クラスターサイズ)によって保存に要するクラスタ数が異なってくるわけです。最適なサイズに設定されていれば、この読み込みをシステムでもスムーズに行うことができるわけです。
ファイルの実例で確認してみましょう。そのファイル自体が4KB未満でも、上記画像のようにディスク上のサイズとしては4KBと表示されます。ディスク上のサイズ=ハードディスクの消費量です。
余談ですが、Windows8以降は、小さいファイルはMFT(Master File Table)に入るシステムになっていますので、アロケーションユニットサイズを消費していないことにより上記のように0バイトと表示されることもあります。
サイズが不適切だとどうなる?
アロケーションユニットサイズ(クラスターサイズ)は、不適切な値で設定されていると当然デメリットが生じます。なお、サイズの変更はフォーマットをおこなうことで可能です。
アロケーションユニットサイズ(クラスターサイズ)が不適切な場合どうなるかについては、そもそもアロケーションユニットサイズ(クラスターサイズ)のサイズ変更をおこなうとどういうことになるのか、ということを理解する必要があります。
アロケーションユニットサイズ(クラスターサイズ)のサイズが違うとどうなるかというところから分からないと思いますので、そちらも含めて簡単に確認していきましょう。そこからそのサイズが不適切な場合どうなるのかの確認もしていきます。
ファイルの読み書き速度が変わる
基本的に、アロケーションユニットサイズ(クラスターサイズ)の大きさでファイルの読み書き速度が変わります。アロケーションユニットサイズ(クラスターサイズ)が大きければその分ファイルの読み書き速度が上がるのです。
USBメモリなどはより顕著に変わってきます。Windows OSなどのシステムのハードディスクなどは影響がないことが多いため、こちらはそういった外部ストレージにとってより影響が大きいものだと言えます。
ファイルのサイズが大きくてアロケーションユニットサイズ(クラスターサイズ)を複数活用する場合、あまりに不適切な値になっていると読み書き速度が大きく変わってくるのです。
また、あまり細かくアロケーションユニットサイズ(クラスターサイズ)を分割すると、そのファイルの大きさが大きいほどファイルを利用する際にバグが起こりやすくなります。詳細については後述します。
ストレージの使用効率が変わる
それならアロケーションユニットサイズ(クラスターサイズ)が大きいほうが良いのでは、と思うかもしれませんが、アロケーションユニットサイズ(クラスターサイズ)が大きい場合はストレージの使用効率が変わるのです。
こちらは保存可能な量が変化してきて、不適切な値であればあるほど保存できるファイルの量が変わってきます。最適なものにしてあれば適切にストレージを使用することが可能です。
これは、1つのファイルがどれほど小さくても、そのファイルの保管方法として少なくとも1クラスタ利用することになるためです。この件の詳細も後述しますので、そちらで確認を行いましょう。
アロケーションユニットサイズの確認方法
さて、ここからはアロケーションユニットサイズの確認方法についての説明に移ります。アロケーションユニットサイズは誰にでも関わりのあるものです。
不適切なサイズに設定しないよう、最適なアロケーションユニットサイズについても解説していますので確認しておきましょう。
調べ方
アロケーションユニットサイズは「コマンドプロンプト」もしくは「Windows PowerShell」を管理者として実行して確認します。「コマンドプロンプト」はWindows7や8、8.1で利用し、「Windows PowerShell」はWindows10で利用してください。
なお、どちらでも利用するコマンドは「chkdsk c:」です。c:はドライブの指定なので、USBドライブを検索したい場合はそのUSBドライブが接続されているドライブ名(e:など)に変更してください。
アロケーションユニットサイズの部分で確認可能です。
システムの標準値はどのくらい?
Windows10においてのシステム標準値は4KB(4096B)です。そのため、標準値として設定されている4KB以下で作成されたファイルも1つのアロケーションユニットサイズに保管されることになります。
Windows10だけでなく、Windows OSのシステム標準は4KBに設定されています。
大きいサイズと小さいサイズを比較すると
前述したとおり、アロケーションユニットサイズの大きさによって、ファイルを保存するのに必要なクラスタ数が異なります。サイズの大きさで比較/確認していく方法で解説していきます。
8KBのファイルを保存する場合、アロケーションユニットサイズがWindows10のシステム標準である4KBとした場合、2つのアロケーションユニットサイズへアクセスしてそのファイルを読み込む必要があります。
1つのロッカーに保管できるものは限られてきて、どう詰め込んでもその容量以上のものを入れることはできないですよね。そのため、入り切らない場合は次のアロケーションユニットサイズに保管することになるため、このようなことになるわけです。
なお、アロケーションユニットサイズが4KBの次の値である8KBの場合、8KBのファイルを保管する場合は1つのアロケーションユニットサイズへアクセスするだけで済みますので、ファイルの読み書き速度が上がるのです。
ロッカーに保管してあるものを1つのロッカーから出すか、2つのロッカーから出すかはほんの少しのさとはいえ手間が違うことは分かりますよね。
そのイメージのまま、アロケーションユニットサイズにアクセスする回数が減れば、それだけ読み書きの速度が向上します。
8KBの次のアロケーションユニットサイズである16KBの場合と比較してみましょう。16KBのアロケーションユニットサイズの場合は上記のような形になります。
8KBのものを保管するため、16KBのアロケーションユニットサイズ1つで事足りるため、この場合も標準設定されている4KBのときと比較するとやはりアクセス速度は向上します。
ただし、アロケーションユニットサイズが大きいと、今度ストレージの使用効率が悪くなってしまいます。
複数の8KBのファイルがあるとします。標準値の4KBのアロケーションユニットサイズで保管した場合、上記のように4つに分割して保管されることになります。
アロケーションユニットサイズが8KBの場合と比較してみましょう。この場合は上記のようにそれぞれ1つずつアロケーションユニットサイズを利用します。ここまではおそらく理解が及ぶ部分だと思います。
問題はアロケーションユニットサイズが16KBの場合です。8KBのファイルを2つ保管しようとする場合、上記のような形になります。比較すると1つのアロケーションユニットサイズに余裕を持って保管できていることが確認できます。
なお、緑で示した部分は使われないままになります。ファイルの上書き時にもアロケーションユニットサイズが利用されるため、上書きするだけで容量不足になる、ということも十分にありえます。
ちなみに、アロケーションユニットサイズが8KBの場合に10KBのファイルを保管した場合は、上記のように8KB+8KBでの保管が行われます。緑色部分はやはり使われないまま残ってしまう部分です。
削除されて空いたアロケーションユニットサイズ部分は、ファイルを追加すれば消費されます。この場合もアロケーションユニットサイズのサイズごとに比較してみましょう。
まずはアロケーションユニットサイズが標準値である4KBの場合です。
6KBのファイル部分を削除して9KBのファイルを保存したとします。その場合上記のようになります。これまでと比較してあちこち飛んでしまうのが分かりますよね。これによってファイル読み込み時などのバグが起きやすくなるわけです。
同じ条件でアロケーションユニットサイズが8KBの場合を見てみましょう。
同じく6KBのファイルを削除して9KBのファイルを保存した場合、上記のようになります。やはり削除前と比較すると分割されていることが確認できます。
これがアロケーションユニットサイズが16KBになるとかなりの余裕ができます。1つのファイルを1つのアロケーションユニットサイズに保管でき、ファイルの読み書き速度も上がります。
その反面、余っている部分(緑色)の範囲がかなり大きくなるため、多くのファイルを保管したい場合はこの余剰分がデメリットにもなりえます。
最適なサイズはどのくらい?
アロケーションユニットサイズは大小それぞれにメリットとデメリットが存在していて、何が適切か不適切かは分かりづらいと思います。最適なサイズが何なのかというのはストレージの種類によって異なります。
Windows10などのハードディスクのストレージの種類は「NTFS」と呼ばれるものです。標準では4KBに設定されており、基本的にはこの標準の4KBのままで問題ありません。
それではファイルの読み込み速度が低下するのでは、と思うかもしれませんが、HDDやSSDは元々のファイル読み込み速度は早いのです。アロケーションユニットサイズを増やしてもその速度はほとんど変化しませんので、低いから不適切というわけではありません。
むしろアロケーションユニットサイズを増やすことでストレージ容量の使用効率が低下するため、この場合の最適サイズは4KBのままで問題ないのです。
SDカードやUSBメモリなどはハードディスクのストレージの種類とは異なっており、総称してFATフォーマットと呼ばれます。SDカードやUSBメモリはハードディスクと異なり読み込み速度が遅いため、アロケーションユニットサイズを大きくするメリットは高めです。
標準のアロケーションユニットサイズが最適というわけではないため、下記表を参考にして各外部ストレージの容量に合わせた設定をしてみてください。
ストレージ容量に対する最適なアロケーションユニットサイズ(参考) | |
---|---|
外部ストレージの容量 | 最適なアロケーションユニットサイズ |
64MB未満 | 2KB |
64MB~256MB | 8KB |
256MB~512MB | 16KB |
512MB~1GB | 32KB |
1GB~4GB | 64KB |
4GB以上 | 128KB |
もちろん、これが最適と言ってもその外部ストレージで利用するものによってはこの最適なアロケーションユニットサイズが不適切な可能性もあります。
テキストデータなど細かいデータを保管することが多いのであればアロケーションユニットサイズを下げる。
画像や音楽などの大きいデータしか保管しないということであればアロケーションユニットサイズを上げる。そういった用途から最適なアロケーションユニットサイズの設定をしても問題ありません。
最後に
アロケーションユニットサイズとはどのようなものか、最適なサイズなどを含め理解できたと思います。USBメモリなどをフォーマットする際の参考にしてみてください。