分断されるHDDのファイル

PCを長年使っていて、「最近、アプリケーションの起動が遅くなった」と感じること経験した方も少なくないであろう。特に新しいアプリケーションをインストールしたわけでもないのだが、起動に時間がかかることがある。原因はいくつか考えられるのであるが、その1つが、ハードディスクのフラグメンテーションの進行である。フラグメンテーションとは、ハードディスクに書き込むファイルが、断片化された状態になってしまうことである。まずは、フラグメンテーションとはどういうもので、その原因について解説しよう。

ハードディスクでは、データやファイルが書き込む際に、セクタという最小単位で管理されている。ほとんどのハードディスクは、512バイト単位である。その最小単位であるセクタをヘッド数・シリンダ数・セクタ数という3つパラメータを使って管理している(CHSパラメータなどと呼ばれることもある)。図1は、320GBのハードディスクであるが、膨大な数のセクタがあることがわかる。同時に「CHS」が3つパラメータの最大値である。

図1 ハードディスクのセクタ

さて、WindowsなどのOSでは、このセクタをそのまま扱うことはしていない。ファイルシステムによっても異なるが、ハードディスクの連続したセクタを一まとまりにした「クラスタ」で管理する(クラスタは「ファイルアロケーションユニット」とも呼ばれる)。理由は、あまりにも膨大なハードディスクのセクタを細かく管理することによるオーバーヘッドを避けるためである。クラスタサイズは、ハードディスク上に作成するパーティションサイズ(ボリュームサイズとも呼ぶ)で、OSのインストール時に自動的に決定される。

したがって、普通にPCを利用する場合には、クラスタ単位でハードディスクへの読み書きをしていると考えていただきたい(しかし、物理的にはセクタ単位でアクセスをしている)。使用して間もない、フォーマットしたばかりのハードディスクに、ファイルを書き込もうとすると、図2のように、連続したクラスタに書き込まれていく。

図2 ファイルが連続して書き込み