HDD的结构
- 盘面(Platter):单面或者双面覆盖着用于记录数据的磁性物质,一块HDD由同轴上下多块Platter组成。
- 轴(Spindle):所有的Platter都绕着这个Spindle,被主轴电机驱动着进行匀速旋转。
- 主轴电机(Spindle Motor):用于旋转Platter,通常HDD转速是每分钟5400或者7200转。
- 读写头(Read/Write Head):每个面上都有一个读写投用来读取或者写入数据。
- 磁头臂(Arm):读写头都固定在Arm的末端。
- 制动杆(Actuator)轴:所有的Arm都连接到Actuator上,由定位电机来驱动,以控制读写头沿着Platter的半径方向移动。所以,Platter的旋转,配合读写头在Arm上的移动,可以让读写头访问到Platter上的所有部分。
- 磁道(Track):Platter表面划分了一堆同心圆,也就是一个个Track。
- 柱面(Cylinder):到Spindle有相同的半径距离的Track的集合。因为读写头的移动影响它在Platter上半径的哪个位置上,所以当某个面的读写头在某个Track上时,其它面的读写头也会在对应的这个半径的Track上,所有这些不同面上相同半径的Track称为一个Cylinder。看起来就像一个镂空的圆柱面一样。
- 扇区(Sector):Track被划分成的一个个扇形区域,它是磁盘驱动器进行读写访问的最小单位,经典的Sector Size能容纳512B的数据。Sector的头部包含扇区标识符和时钟同步信息,尾部包含错误校验码(ECC),ECC是根据Sector头部信息和存储的数据计算得到的。
- 簇(Cluster):HDD本身的读写基本单位是Sector,但对文件系统(File System)来说,基本读写单位是Cluster,相邻的若干个Sector组成一个Cluster。Cluster一般有4K、8K、…、64K等。
- 等密度结构磁盘:一般,所有的Track上Sector数量一样,但这样外磁道的记录密度会远远低于内磁道,所以会造成空间浪费,就限制了HDD的容量。在等密度结构磁盘实现上,Sector只需要固定的面积大小就可以了,所以外层的Track放了更多的Sector。
HDD的寻址方式
CHS寻址(不适用于等密度结构磁盘)
CHS寻址是利用HDD的三维结构,给个三个方向的参数来进行寻址:
Heads:磁头编号,比如双面磁盘,磁盘正反面各有一个磁头,所以用磁头编号就能表示数据在哪个磁面上。
Cylinders:柱面编号,表示数据在哪个柱面上,利用H和C就能定位到唯一磁道Track。
Sectors:扇区编号,因为已经定位到了唯一Track,所以用Sectors就能找到唯一的扇区。
CHS寻址方式下,HDD的大小很有限,根据HDD的容量计算公式:
硬盘容量= 盘面(磁头)数 × 柱面数 × 扇区数 × 每扇区字节数
例如
磁头数最大为255 (用 8 个二进制位存储)。从0开始编号。
柱面数最大为1023(用 10 个二进制位存储)。从0开始编号。
扇区数最大数 63(用 6个二进制位存储)。从1始编号。
所以CHS寻址方式的最大寻址范围为:
255 * 1023 * 63 * 512 / 1048576 = 7.837 GB ( 1M =1048576 Bytes )
对于等密度结构磁盘,内外层的扇区不能组成一个扇形(外磁道的扇区更多),所以没法使用CHS寻址方式。
LBA寻址(目前普遍使用的线性寻址方式)
LBA(Logical Block Addressing)寻址方式是给每个数据块一个从0开始线性增长的编号,所以不需要考虑硬盘的物理结构。
传统的28位LBA,能表示的范围就是2^28,乘以数据块大小就是最大数据容量。现代硬盘和OS已经支持48位LBA。
HDD的寻址速度
- 寻道时间(Seeking Time):为了访问数据块,磁盘控制器要移动控制读写头到正确的Cylinder上,这个过程称为Seeking。
- 旋转延迟(Rotational Latency):找到正确的Cylinder之后,还要等待要访问的那个Sector旋转到读头下面,这个时间称为Rotational Latency。
例如,7200转/分钟的HDD,转换一周的时间是60(秒)×1000(转换毫秒)÷7200(转)=8.33毫秒,平均情况下认为每次寻址需要转换半圈,则平均旋转延迟时间为8.33÷2=4.17ms。再加上寻道时间就是寻址所需要的时间。