アロケーションユニットサイズとは?確認方法と最適なサイズについて

アロケーションユニットサイズとは?確認方法と最適なサイズについて

HDDやSDカードなどのストレージデバイスで重要なアロケーションユニットサイズについて知っていますか?言葉だけ聴いたことが合っても意味は全く知らないという方も多いと思います。今回はアロケーションユニットサイズについて、図を使って詳しく解説していきます。


目次[非表示]

  1. アロケーションユニットサイズとは?
  2. アロケーションユニットサイズで何が変わる?
  3. アロケーションユニットサイズの調べ方
  4. 最適・おすすめのアロケーションユニットサイズは?
  5. まとめ

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

アロケーションユニットサイズについて具体的にどのようなものかよくわかってない方もいらっしゃるでしょう。

アロケーションユニットサイズとは、1つのデータを保存する最小単位のことです。

この最小単位のことをクラスタサイズといい、1クラスタ・2クラスタのように数えるのが一般的です。

ロッカーや部屋
簡単に考えるのであればロッカーや部屋をイメージすると良いでしょう。
12KBのデータのロッカーの例
例えば1つのロッカーにつき4KBのデータを保存できる場合、12KBのデータを保存しようと思うと3つのロッカーに分けて保存されます。

このようにある程度まとまったデータを1かたまりとして保存することで、効率よくファイルにアクセスできるようになっているのです。

アロケーションユニットサイズで何が変わる?

アロケーションユニットサイズを変更すると、パフォーマンスに直接影響します

ファイルの読み書き速度が変わる

アロケーションユニットサイズを大きくすると、ファイルの読み書き速度が上がります。

例えばWindows10だとデフォルトのアロケーションユニットサイズが4KBです。

32KBのファイルを8クラスタに分ける
この場合において32KBのファイルを保存した場合、8クラスタに分けられます。

もしこのファイルを読み出そうと思うと、8クラスタそれぞれにアクセスする手間が生まれます。荷物全部取り出すために8つのロッカーを順番に開けていく感じですね。

もちろん、単純に計算したとしても32KBのファイル1つ読み出すために8アクセスもかかるため、とても効率が良いとは言えません。

ですが、アロケーションユニットサイズが16KB担った場合どうなるでしょうか?

アロケーションユニットサイズが16KBの例
アロケーションユニットサイズが16KBだと、32KBのデータを格納するために必要なクラスタ数が2クラスタにまで抑えられます。

つまり、32KBのデータの読み出しにかかるアクセス数も2回で済むためファイルの読み込みを高速化できます。

このように、アロケーションユニットサイズが大きくなると、必然的に必要なクラスタ数も少なくなるためファイルの読み書きをする速度(アクセス速度)が高速化されるのです。

ストレージ使用効率が変わる

アロケーションユニットサイズが4KBの状態で1バイトのファイルを保存したときに使われるストレージ容量はいくらになると思いますか?

ディスク上のサイズ
正解は4KBです。1バイトではありません。

なぜ1バイトのファイルのために4KBも使ってしまうのかと思うでしょう。

これはロッカーをイメージするとわかりやすいです。荷物の量が少ないからといってロッカーの大きさが勝手に小さくなることはありませんよね?

アロケーションユニットサイズも勝手に変わることはないため、闇雲に大きくしすぎるとストレージの使用効率が落ちてしまうのです。

では先ほどと同じ条件(アロケーションユニットサイズ4KB)で、1バイトのファイルを3つ保存した場合どうなるでしょうか?

正解の図
正解はこちらです。

Windowsでは複数のファイルを1つのクラスタに格納することが出来ません。

たとえ複数ファイル容量合計がアロケーションユニットサイズを下回っていたとしても別々のクラスタに保存されるため、設定しているアロケーションユニットサイズによっては無駄がかなりが大きくなってしまうのです。

今回の場合だと、たった総容量3バイトの3ファイルだけで12KBも使っています。アロケーションユニットサイズを大きく下回る容量のファイルがたくさんあった場合は無駄に消費している容量も大きくなってしまいかねません。

そのため、ファイルのアクセス効率が上がるからといって無闇にアロケーションユニットサイズを大きくしていいわけではないのです。

応用編

もう少しアロケーションユニットサイズについて詳しくなりたいのであれば、以下の問題について考えてみてください。

では、アロケーションユニットサイズが4KBで、9KBのファイルを保存した場合どうなるでしょうか?

正解の図
正解はこちら。3クラスタ使われます。

この答えをすぐに理解できたのであればアロケーションユニットサイズの計算についてはもう問題ないでしょう。

9KBのファイルを「4KB・4KB・1KB」の3つのデータに分割して格納されるため、合計3クラスタ必要になります。

もし、アロケーションユニットサイズが10KBだった場合は、1クラスタに収めることが可能です。

ちなみにですが、アロケーションユニットサイズは2の累乗であるため、10KB(2の累乗ではない)のアロケーションユニットサイズは実在しません。ちょっとした豆知識として抑えておくと良いでしょう。

アロケーションユニットサイズの調べ方

アロケーションユニットサイズの基礎知識について抑えたところで、実際にアロケーションユニットサイズを調べる方法を見ていきましょう。

正規の方法で調べる場合、コマンドプロンプトでコマンド入力の必要がありますが、もっと簡単に確認する方法があります。

何でも良いのでテキストファイルを作成
まず、何でも良いのでテキストファイルを作成し、数文字書き込んだファイルを保存してください。

アロケーションユニットサイズ以下の容量のファイルが必要であるため、大量に書き込まないようにしましょう。

ファイルを右クリックして[プロパティ]を選択
次に、ファイルを右クリックして[プロパティ]を選択します。
プロパティ画面を開いたら「ディスク上のサイズ」を確認
プロパティ画面を開いたら「ディスク上のサイズ」を確認してください。

ここに表示されている容量がアロケーションユニットサイズです。

たとえ1バイトのファイルでもディスク上のサイズはアロケーションユニットサイズ単位になるため、簡単に確認できてしまうのです。

ディスク上のサイズが0バイトになる

ディスク上のサイズ
Windows10を仮想マシンで動作させている場合など、特殊な環境下で運用している場合、[ディスク上のサイズ]が0バイトになります。

この場合、アロケーションユニットサイズはそのゲストマシンではなく、仮想マシンを動作させているホストマシンに依存しているので、ホストマシンの方で調べるようにしましょう。

最適・おすすめのアロケーションユニットサイズは?

  • アロケーションユニットサイズを大きくするとファイルのアクセス速度が上がる
  • アロケーションユニットサイズを大きくするとストレージ容量の胸が大きくなる

  •  

このような一長一短のせいでジレンマを引き起こすかもしれません。

そこで、ここでは最適なアロケーションユニットサイズを紹介します。アロケーションユニットサイズの変更を検討している方はこちらを参考にしてください。

フォーマットによりおすすめのサイズが異なる

まず、大前提としてHDDやSSD、SDカード・USBメモリーというのは、ストレージの種類によってフォーマットが異なります。

フォーマットごとに適切なアロケーションユニットサイズが異なるので、フォーマット別に紹介していきます。

NTFS

Windows OSで使用されるHDD・SSDなどが当てはまるフォーマットです。

Windows10ではデフォルトのアロケーションユニットサイズが4KBに設定されていますが、基本的に4KBのままで問題ありません。

HDD・SSDはファイルのアクセス速度が速いため、アロケーションユニットサイズを変更しても大きな変化が起きません。

そのため、アロケーションユニットサイズを大きくすることで発生するストレージ容量使用の非効率化のデメリットのほうが大きいため、あまりおすすめしません。

FAT16・FAT32・exFAT

SDカード・MicroSDカード・USBメモリで使われるフォーマットです。

FATフォーマットと言っても3種類あり、それぞれデフォルトのアロケーションユニットサイズが異なりますが、はじめから最適なアロケーションユニットサイズが設定されているとは限りません。

SDカードやUSBメモリというのはファイルアクセス速度が遅いため、アロケーションユニットサイズを大きくするメリットは大きいです。

ですが、SD カードなどの使用しているストレージデバイスによっては容量が小さくてあまりアロケーションユニットサイズを大きくできないということもあるでしょう。

その場合は以下の表に記載した容量別おすすめアロケーションユニットサイズを参考にしてください。

 

容量 アロケーションユニットサイズ
64MB未満 2KB
64MB~256MB 8KB
256MB~512MB 16KB
512MB~1GB 32KB

1GB~4GB

64KB

4GB以上

128KB


アクセス効率と容量使用効率両方を考慮したものですので、SDカードなどの読み込みが遅くてストレスが溜まるという方はこれらの参考値でフォーマットしてみましょう。

まとめ

今回は知らないとよくわからないアロケーションユニットサイズ(クラスタサイズ)について解説しました。

各ストレージデバイスは、容量ごとにアロケーションユニットサイズが自動的に設定されていますが、そこで設定されている標準のアロケーションサイズはあまりあてになりません。

あくまで標準値であり、最適値ではないことを覚えておきましょう。

また、アロケーションユニットサイズを変更する際は必ずフォーマットが必要になることも忘れないようにしましょう。


関連記事