NTFSのクラスタサイズについて調べてまとめました。
クラスタとは何か
クラスタについてwikipediaでは以下のように説明されています。
ディスクドライブにおけるクラスタ(英: cluster)は、ファイルシステムのファイルやディレクトリに割り当てられるディスク上の単位である。ディスク上のデータ構造管理のオーバーヘッドを低減するため、ファイルシステムはディスクセクタ単位での割り当てを行わず、いくつかのセクタをまとめたクラスタ単位で割り当てる。
Wikipedia「クラスタ (記憶媒体)」2022年6月27日取得
完結な説明となっていますが、この簡潔さは初学者にとって理解が難しいと思います。
以下もう少し冗長に、辞書的完結さが省いていしまったいくつかの点を補足しながら説明してみます。
ディスクが扱う2つの単位
先ほど引用したwikippediaの説明の通り、クラスタはファイルシステム、つまりプログラムからみたディスク上のデータのかたまりです。
クラスタはシステムが定義した論理的なデータの最小単位と言い換えることができます。
コンピューター関係のお話では「論理的な~」と出てきたら「物理的な~」と出てくるのが鉄板です。
ディスクにおける物理的な最小単位はセクタと呼ばれます。
- 物理的な最小単位のセクタ
- 論理的な最小単位のクラスタ
ディスクはこの2つの単位を使用してデータを管理しています。
物理と論理で対照的に説明したため、セクタとクラスタが対立するような印象を抱いてしまったかもしれません。
実際はそうではなく、X個のセクタがファイルシステムによってまとめられることでクラスタが形成されます。
ディスクの中に沢山用意されているセクタを効率的に利用するためにファイルシステムが一定のルールに沿ってクラスタを作る。
そしてOSはクラスタを利用する。
ファイルシステムによってセクタをまとめ上げたものがクラスタ。
そんなイメージです。
Windowsにおけるクラスタサイズ
特別なオプションを設定せずにWindows10をインストールするとクラスタサイズは4KB(4096Byte) になります。
一般的にPCを使用するユーザーがクラスタサイズを変える必要がある場面に遭遇することはまずないと思います。
DBサーバーを利用する場合にクラスタサイズを変えることを求められるケースはあるようです。
The atomic unit of storage in SQL Server is a page, which is 8 KB in size. Eight physically contiguous pages make up an extent (which is 64 KB in size). SQL Server uses extents to store data. Therefore, on a SQL Server machine, the NTFS allocation unit size for hosting SQL database files (including tempdb) should be 64 KB.
AWSドキュメント「Set the NTFS allocation unit size to 64 KB」2022年6月27日取得