【存储学习笔记】1:机械硬盘(Hard Drive Disk)结构和寻址方式

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。再加上寻道时间就是寻址所需要的时间。

相关推荐

  1. arm方式

    2024-07-21 19:58:01       54 阅读
  2. 【汇编】指令系统的方式

    2024-07-21 19:58:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 19:58:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 19:58:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 19:58:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 19:58:01       55 阅读

热门阅读

  1. 信息增益与基尼指数:决策树分裂准则的比较

    2024-07-21 19:58:01       20 阅读
  2. WebGIS主流的客户端框架比较|OpenLayers|Leaflet|Cesium

    2024-07-21 19:58:01       18 阅读
  3. [强化学习马里奥 MarioRL]-- 环境ENV 3

    2024-07-21 19:58:01       17 阅读
  4. ubuntu 上安装中文输入法

    2024-07-21 19:58:01       16 阅读
  5. 记一次通过udev自动加在i2c接口触摸驱动过程

    2024-07-21 19:58:01       16 阅读
  6. 优选算法之滑动窗口(下)

    2024-07-21 19:58:01       18 阅读