Content #
读取数据,其实就是两个步骤。
- 把盘面旋转到某一个位置。在这个位置上,悬臂可以定位到整个盘面的某一个子区间。这个子区间的形状有点儿像一块披萨饼,一般把这个区间叫作几何扇区(Geometrical Sector),意思是,在“几何位置上”,所有这些扇区都可以被悬臂访问到。
- 把悬臂移动到特定磁道的特定扇区,也就在这个“几何扇区”里面,找到实际的扇区。找到之后,磁头会落下,就可以读取到正对着扇区的数据。
所以,进行一次硬盘上的随机访问,需要的时间由两个部分组成。
- 平均延时(Average Latency)。这个时间,其实就是把我们的盘面旋转,把几何扇区对准悬臂位置的时间。这个
时间很容易计算,它其实就和机械硬盘的转速相关。随机情况下,平均找到一个几何扇区,需要旋转半圈盘面。7200 转的硬盘,一秒里面,就可以旋转 240 个半圈。那么,这个平均延时就是
1s / 240 = 4.17ms
- 平均寻道时间(Average Seek Time)也就是在盘面选转之后,悬臂定位到扇区的的时间。现在用的 HDD 硬盘的平均
寻道时间一般在 4-10ms。这样,我们就能够算出来,如果随机在整个硬盘上找一个数据,需要 8-14 ms。我们的硬盘是机械结构的,只有一个电机转轴,也只有一个悬臂,所以没有办法并行地去定位或者读取数据。那一块 7200 转的硬盘,一秒钟随机的 IO 访问次数,也就是
1s / 8 ms = 125 IOPS 或者 1s / 14ms = 70 IOPS
一般来说,HDD 硬盘的 IOPS 每秒 100 次左右。