少しでも分かりやすく伝えたいアロケーションユニットサイズ

少しでも分かりやすく伝えたいアロケーションユニットサイズ

皆さんこんにちは!!
今回はフォーマットする時に出てくるアロケーションユニットサイズについて説明していきます!

アロケーションユニットサイズとは

まず、とにかく文字数長いですね。とりあえず文字の意味を追っていきましょう。
ばらばらに分けてそれぞれの意味を調べてみると、

  • allocation:割り当て
  • unit:(それ自体で完全な)単一体
  • size:大きさ

となります。
要約すると、一つの割り当ての大きさみたいな感じになります。

アロケーションユニットサイズの意味はまあそんな感じでもう少し正確にすると1つのデータを保存する領域といったところでしょうか。

実際に見てみる

では実際にアロケーションユニットサイズがどれか見ていきましょう。

実際のファイルサイズとディスク上のサイズ

今回着目して欲しい点はここです。「サイズ」と「ディスク上のサイズ」というものがあります。
「サイズ」というのは実際のファイルのサイズを表していて、
「ディスク上のサイズ」というのはディスクに確保された領域分のサイズを表しています。

アロケーションユニットサイズというのは、「ディスク上のサイズ」の方を示しています。
この2つの違いについて例を用いて説明していきます。

実際のファイルサイズとディスク上のサイズの違い

例として以下の条件での保存の流れについて見ていきましょう。

名前容量
アロケーションユニットサイズ4KB
保存するデータ(データA)2KB

まずはデータAを保存するにあたってアロケーションユニットサイズが4KBの箱を定義します。
4KB容量が確保されているならば、データAは1つの箱に収まりきりますよね。しかし、ディスク上に4KB分容量を確保しているため、残り2KB分は余ってしまいます。

この箱が「ディスク上のサイズ(アロケーションユニットサイズ)」、保存しているデータ(今回だとデータA)が「サイズ」となるのです。

4KB(4096バイト)となっている理由

「実際に見てみる」にて掲載している画像で、ディスク上のサイズが4KB(4096バイト)になっている理由について説明していきます。
そのためには、まずファイルがどの記憶媒体に入っているかを知る必要があります。
今回画像を貼り付けたファイルは、HDD(ハードディスク)に保存しています。

HDDではNTFSというファイルシステムが定められています(既定)。
このNTFSではアロケーションユニットサイズがデフォルトで4KBとなっています。勿論値を変えることもできますがフォーマットをしなければ4KBのままなのでそういったことからアロケーションユニットサイズは4KBとなっています。

4KB以上のファイルを保存する時

では保存するデータが以下の条件の時ではどうでしょうか。

名前容量
アロケーションユニットサイズ4KB
保存するデータ(データA)7KB

もちろん一つの箱では収まりきりません。
そうなれば箱を複数用意してデータを入れる形になります。

7KBファイル保存時の保存状態

今回の場合では箱を2つ用意すれば7KBのデータを保存することができます。
また、ディスク上のサイズは4KB*2で8KB確保されます。

複数のファイルを保存する時

では保存するデータが以下の条件の時ではどうでしょうか。

名前容量
アロケーションユニットサイズ4KB
保存するデータ(データA)1KB
保存するデータ(データB)3KB
保存するデータ(データC)2KB

データが複数ありますが合計して6KBあります。
ならばディスク上のサイズは8KBで済むのか、というとそうでもありません。
実際にはディスク上のサイズは12KB必要です。

というのもアロケーションユニットサイズはあくまで1つのデータに対する割り当ての規模を示すため、データが複数ある場合はそれぞれにディスク領域を割り当てる必要があるのです。

1,3,2KBファイル保存時の保存状態

図にすると上の画像のようになります。
画像の黒い枠がディスクに確保された領域で赤い枠が保存されるデータになります。

実際にデータA,B,Cと同じようなデータを「データフォルダ」にいれディスク上のサイズを見てみました。

1,3,2KBのデータファイルの用意
3つのファイルの実際のファイルサイズとディスク上のサイズ

そうすると実際のデータの合計は6KBにも関わらずディスク上のサイズは12KB確保されていますね。

まとめ

アロケーションユニットサイズは、データやリソースを割り当てる際の最小単位のサイズのことです!
また、例としてHDDの時のアロケーションユニットサイズについて説明しましたが、USB用のファイルシステムやアロケーションユニットサイズもあるのでぜひ調べてみてください!