HDDの仕組みと読み書きの方法
ハードディスク(HDD)の仕組みと、読み書きの方法について説明しています。
セクターとクラスター
ハードディスクは、円盤状のプラッタにデータを書き込みます。
アームの先端に磁気ヘッドが付いていて、プラッタが回転する事で読み書きが出来ます。ハードディスクが読み書き出来る最小単位は、セクターと呼ばれます。サイズは、512バイト等です。
OSでの読み書きの最小単位は、クラスターです。
Windows10ではアロケーションユニットサイズとも呼ばれ、サイズは4KiB等です。つまり、セクターが512バイトの時、8セクターで1クラスターとなります(512×8=4,096バイト)。
尚、実際の読み書きは、クラスターをセクターに変換(×8等)して行います。例えば、Windows10ではファイルのクラスターをMFT(Master File Table)*1で管理していますが、セクターに変換してからハードディスクで読み書きしています。
- *1:ファイル名や属性等、ファイル(ディレクトリ含む)に関連した情報を管理しています。
トラックとシリンダー
トラックは、プラッタで同心円上の1周の事を言います。
ハードディスクには、複数のプラッタがあります。各プラッタ上で同じ位置にあるトラックの集合をシリンダーと呼びます。
プラッタの両面に書き込みが可能で、磁気ヘッドも各プラッタの両面にあります。このため、上記では6トラックで1シリンダーとなります。
全てのアームは同じ動きをするため、同一シリンダー内のデータは同時に読み書き出来ます。
ハードディスクの読み書き
ハードディスクは、以下の待ち時間の後に読み書きします。
- ・シーク時間
- アームを動かして、目的のシリンダーまで磁気ヘッドを移動させる時間です。
- ・回転待ち時間
- プラッタが回転し、目的のセクターが磁気ヘッドの所に来るまでの待ち時間です。
ハードディスクの回転数は、RPM(1分間の回転数)で表されます。5,400RPM、7,200RPM等のハードディスクがあります。
クラスターサイズが大きい事のメリットとデメリット
OSが、セクターとは異なるクラスター単位で読み書きするのにはメリットがあるためです。以下に、クラスターサイズが大きい場合のメリットとデメリットを示します。
メリット1:大きなボリューム(Cドライブ等)が作れる
以下は、Windows10でのクラスターサイズと最大ボリュームサイズの関係です。
クラスターサイズ | 最大ボリュームサイズ |
---|---|
512B | 2TiB |
4KiB | 16TiB |
8KiB | 32TiB |
16KiB | 64TiB |
32KiB | 128TiB |
64KiB | 256TiB |
クラスターサイズが大きい程、大きなボリュームサイズが使える事が分かると思います。これは、クラスターを管理出来る最大数が232-1までとなっていて、クラスターサイズが大きい程大きなボリュームを管理出来る(クラスターサイズ×管理出来る最大数)ためです。
メリット2:大きなファイルが作れる
大きなファイルを作る時は、複数のクラスターに書き込む事になります。このクラスターを管理出来る数にも限界があるため、クラスターサイズが大きい程大きなファイル(1TiB以上等)が作成出来ます。
メリット3:高速な読み書きが期待できる
クラスターは連続したセクターを確保するため、バラバラのセクターに配置される事がありません。つまり、シーク時間や回転待ち時間が少なくなるため、クラスターサイズが大きい方が高速に読み書きが出来ます。
デメリット:無駄な領域が多くなる
クラスターサイズが大きいと、連続した領域が必ず確保されるため無駄な領域が発生します。例えば、810バイト等のファイルを作成した場合でも、クラスターサイズが4KiBの場合は4KiBが確保され、他のファイルのためには使えません。以下は、テキストファイルのプロパティです。
サイズは810バイトになっていますが、ディスク上のサイズは4,096バイト(=4KiB)になっているのが分かると思います。これは、クラスターギャップと呼ばれます。
因みに、1バイト等の小さすぎるファイルはMFTに直接保存されます。MFTは最初から確保されているため、ディスク上のサイズは0バイトになります。