HDDに含まれている主要な部品の一つに、プラッタというものがあります。
プラッタとは、HDDに内蔵される円盤状の部品で、この部品に情報を磁気を用いて記憶しています。 プラッタは一つのHDDに複数枚内蔵されていることが多いようです。 このプラッタの記憶密度が高くなれば、ディスク一回転で読み書きできる量が多くなるので、 HDDへの読み書きの速度は速くなると予想されます。
また、読み書きする位置によってもアクセス速度は変わっていきます。 プラッタの外側と内側を比較すると外側の方が一周の長さは長くなるので、 一周あたりの記録できる量は大きくなります。 外側を読むときも内側を読むときも回転数は同じなので、 結果的に、外側の方が読み書きする速度は高速になると予想されます。
通常は、先頭のセクタがディスクの外側になるので、先頭が高速、後尾が低速ということになります。
それでは、本当に密度や外周・内周で明確な速度の差があるのでしょうか。 あるとしたら、それは具体的にどの程度の差が出るのでしょうか。 実際に1プラッタHDDで、容量が320GB、250GB、80GBのものを用意し、 それぞれ先頭/後尾で読み書きの速度を測定してみました。
計測方法
計測環境
Motherboard | Supermicro X7SBi |
---|---|
CPU | Xeon X3350(2.66GHz) |
Memory | 2 GB |
比較するHDD
型番 | 容量 | プラッタ | インターフェイス | 回転速度 | キャッシュ |
---|---|---|---|---|---|
ST3320613AS | 320GB | 1枚 | Serial ATA 300 | 7200rpm | 16MB |
ST3250410AS | 250GB | 1枚 | Serial ATA 300 | 7200rpm | 16MB |
ST380815AS | 80GB | 1枚 | Serial ATA 300 | 7200rpm | 8MB |
※これ以降、ST3320613ASを320GB HDD、ST3250410ASを250GB HDD、ST380815ASを80GB HDDと表記します。
(参考) Seagateの型番は、番号自身がそのHDDの情報を表しています。
以下がその見方です。
キャッシュ容量の数字は、6=>16MB、8=>8MB、2=>2MBとなっています。 またインターフェイスの記号については、AS=SATA、NS=ES-SATA、A=Ultra-ATAとなっています。 それ以外は数字そのままになっています。
(参考)
計測方法
(1) 計測するHDDを装着し、PXEブートで起動します。
すべてメモリ上で動作するので他のプログラムがHDDにアクセスしないようになっています。
(2) fdiskで、ディスクの先頭2GBと、ディスクの後方2GBに パーティションを作成します。
それぞれのHDDについて、fdisk -lをした結果を記しておきます。
・320GBのHDD
# fdisk -l /dev/sdb
Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 250 2008093+ 83 Linux
/dev/sdb2 38663 38912 2008125 83 Linux
・250GBのHDD
# fdisk -l /dev/sda
Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 250 2008093+ 83 Linux
/dev/sda2 30151 30400 2008125 83 Linux
・80GBのHDD
# fdisk -l /dev/sda
Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 250 2008093+ 83 Linux
/dev/sda2 9479 9728 2008125 83 Linux
(3) 読み取り速度の計測
読み込みには、ddコマンドを用いてパーティションをそのまま読込み、速度を計測しました。
3つのディスクについて、それぞれ先頭のパーティションと後方のパーティション、 全部で6パターンについて計測しました。
count=1(合計100MB)と、count=10(合計1GB)の場合について計測してみました。
# dd if=/dev/sd?x of=/dev/null bs=100M count=1 iflag=sync
# dd if=/dev/sd?x of=/dev/null bs=100M count=10 iflag=sync
(4) 書き込み速度の計測
書き込みに関しては、mkfs.ext3でそれぞれのパーティション上にファイルシステムを 作成し、そのファイルシステム上のファイルに書き込む速度を計測しました。
読み取りと同様に、count=1(合計100MB)と、count=10(合計1GB)の場合について計測してみました。
# dd if=/dev/zero of=/mnt/sd?/testfile bs=100M count=1 oflag=sync
# dd if=/dev/zero of=/mnt/sd?/testfile bs=100M count=10 oflag=sync
結果
単位はすべて[MB/秒]です。
HDD | count | 先頭(読込) | 先頭(書込) | 後方(読込) | 後方(書込) |
---|---|---|---|---|---|
320GB HDD | count=1 | 123 | 88.7 | 63.5 | 53.5 |
320GB HDD | count=10 | 126 | 89.3 | 63.8 | 53.1 |
250GB HDD | count=1 | 87.1 | 67.2 | 53.8 | 47.6 |
250GB HDD | count=10 | 88.3 | 70.2 | 54.2 | 44.1 |
80GB HDD | count=1 | 74.4 | 32.5 | 37.0 | 23.0 |
80GB HDD | count=10 | 76.1 | 32.1 | 37.4 | 22.5 |
プラッタ密度は、速度に結構大きな影響を与えるようです。 ただしその差は、プラッタの記憶容量に単純に比例している分けではないということも分かりました。 プラッタの記憶容量と速度の関係を調べるためにはもう少し多くのデータが必要かもしれません。