拆解机械硬盘
硬盘的构造里有接口、对应的控制电路板、以及实际的IO设备(机械硬盘)。
机械硬盘由盘面、磁头、和悬臂三个部分组成。
盘面
盘面是我们实际存储数据的盘片,盘面本身通常是铝、玻璃、陶瓷这样的材质做的光滑盘片,盘面上有一层磁性的涂层,我们的数据就存储在这个磁性的涂层上。
盘面中间有一个受电机控制的转轴,这个转轴会控制我们的盘面去旋转。
硬盘的转速:指的是盘面中间电机控制的转轴的旋转次数,英文单位交RPM(每分钟的转圈数Rotations Per Minute)。我们平常说的硬盘由7200转指的就是这个,即每分钟能转7200圈(每秒120圈)。
磁头
数据是通过磁头,从盘面读取到,然后再通过电路信号传输给控制电路、接口,再到总线上的。
- 一个盘面上会有两个磁头,分别在盘面的正反面,盘面的正反面都有对应的磁性涂层来存储数据
- 一块硬盘也不是只有一个盘面,上下堆叠了很多盘面,各个盘面之间是平行的
- 每个盘面的正反两面都有对应的磁头。
悬臂
悬臂链接在磁头上,并在一定范围内会去把磁头定位到某个特定的磁道上。这个磁道是怎么来的呢?
数据是怎么存放在盘面上的?
- 一个盘面通常是圆形的,由很多同心圆组成,就好像是一个个大小不一样的甜甜圈嵌套在一起。
- 每个圈都是一个磁道,每个磁道都有自己的一个编号
- 悬臂只是控制,到底读哪个甜甜圈的数据,最里面还是最外边。
数据是如何读取的?
- 一个磁道,会分成一个一个扇区,上下平行的一个一个盘面的相同扇区,叫做一个柱面。
- 第一步把盘面旋转到某一个位置,在这个位置上,我们的悬臂可以定位到盘面的某一个子区间。
- 悬臂移动到特定磁道的特定扇区,磁头落下,读到正对着扇区的数据。
一次硬盘的随机访问,需要两个时间组成:平均延时和平均寻道时间
- 平均延时:盘面旋转、几何扇区对准悬臂位置的时间。这个时间和转速相关,随机情况下找到一个几何扇区,需要转半圈盘面,7200转的硬盘,1s内可以转240个半圈。那么平均延时为1s / 240 = 4.17ms
- 平均寻道时间:盘面旋转之后,悬臂定位到扇区的时间,用的HHD硬盘的平均寻道时间一般在4-10ms
这样就能够算出来,随机在整个硬盘上找一个数据,需要8-14ms,硬盘是机械结构的,只有一个电机转轴,也只有一个悬臂,无法并行的去定位或者读取数据,一块7200转的硬盘,一秒钟的随机IO访问次数为
1s / 8 ms = 125 IOPS 或者 1s / 14ms = 70 IOPS
所以HDD硬盘的IOPS每秒100次左右。
顺序读取呢?
- 可以选择把顺序存放的数据,尽可能的放在同一个柱面上,这样我们只需要旋转一次盘面,进行一次寻道,就可以去写入或者读取数据,同一个垂直空间上的多个盘面的数据。
- 如果一个柱面上的数据不够,不要去动悬臂,而是通过电机转动盘面,就可以顺序读完一个磁道上的所有数据,对于HDD硬盘的顺序数据读写,吞吐率还是很不错的,达到200MB/s左右。