机械硬盘

机械硬盘(HDDHard Disk Drive)主要由盘片、磁头、电机马达、接口等组成。

机械硬盘

机械硬盘的结构

机械硬盘结构

一个 机械硬盘 由多个盘片 叠加而成。

盘片(Platters)的表面涂有磁性物质,这些磁性物质用来记录二进制数据。工作时在主轴马达的带动下进行高速旋转(比如每分钟 7200 转)。每个盘片都有上下两面,称为盘面,每个盘面都有一个对应的读写磁头负责读写该盘面上的数据。

每个盘面对应一个磁头,所有的磁头都是连在同一个机械臂杆上的,因此所有磁头只能 “共进退”,即做相同运动。

当关机时,磁头会停留在硬盘的停泊区,工作时才会移动到盘面上方,依靠磁盘高速旋转引起的空气动力效应悬浮在盘面上。

磁头停泊区

在硬盘系统中,盘面按照从上到下的顺序从 0 开始编号,盘面号也叫磁头号,比如一个硬盘有两个盘片,则盘面号为 0 ~ 3

分解结构 1
分解结构 2

名词解释:

  • Boom:机械臂杆。
  • Head:磁头。
  • Sector:扇区。
  • Spindle:轴。
  • Track:磁道。
  • Platter:盘面。
  • Cylinder:柱面。
分解结构 3

其中 A磁道B扇面C扇区D(扇区组)

在盘片高速旋转时保持磁头不动,那么磁头就会在盘面上形成一个圆形的轨迹,这些同心的圆形轨迹就是磁道Track)。每个盘面上都有多个磁道,这些磁道由外向内从 0 开始顺序编号。

【注意】磁道之间并不是紧挨着的,因为磁化的单元挨得太近会相互影响。

所有盘面上半径相同的同心磁道垂直堆叠在一起构成的一个圆柱,称为柱面Cylinder)。柱面是一个抽象出来的概念,它在物理上不是一体的,只是在空间上类似于一个圆柱的外壁。为了方便理解,可以认为柱面就是磁道。柱面上的磁头由上到下从 0 开始顺序编号,数据的读写也是按照柱面进行。

在读写数据时,首先在同一柱面内从 0 号磁头开始操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只有当同一柱面的所有磁头全部读写完毕后才将磁头切换到下一个柱面同心圆往里的柱面)。这么做的原因是选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换,电子切换是相当快的,而机械切换磁头则要慢得多

概括来说,就是当一个磁道写满数据后,就在同一柱面的下一个盘面上写,一个柱面写满后,才会移动到下一个柱面,读数据也是按照同样的方式。

盘面上可以划分出很多磁道,但是我们并不需要每次都读写这么多数据,所以又将磁道划分为了若干更小的弧段,每段被称为一个扇区Sector)。

由于这些弧段转动的角速度一样,但是长度不同,所以线速度也不一样,外圈的线速度大于内圈,即相同的转速下,在同样的时间段内外圈划过的弧段长度要比内圈划过的弧段长度大

扇区从 1 开始编号,是硬盘进行读写操作的最小单位,一般硬盘的一个扇区大小为 512 字节——这也就意味着哪怕我们只存放 1 字节的数据也会占用硬盘的一个扇区(512 字节)。后来为了提升硬盘的效率和使用率又推出了 4K 大小的扇区标准。

扇区的物理地址

扇区存储的第一个主要部分就是标识符,也就是扇区头标,它是一个扇区的三维地址,包括盘面号、柱面号和扇区号,通过这三个地址可以唯一确定一个扇区。可用(柱面号盘面号扇区号)来定位任意一个 “磁盘块”。

在 【文件的物理结构】中,我们经常提到文件数据存放在外存中的几号块(逻辑地址),这个块号就可以转换成(柱面号盘面号扇区号)的地址形式。

可根据该地址读取一个 “块”,操作如下:

  • (1)根据 柱面号 移动磁臂,让磁头指向指定柱面;
  • (2)激活指定盘面对应的磁头;
  • (3)磁盘旋转的过程中,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写。

扇区的第二个主要部分就是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。

容量计算

存储容量 = 磁头数(盘面数)* 磁道数(柱面数)* 每个磁道的扇区数 * 每个扇区的字节数

  • 以前的硬盘每个磁道的扇区数是一样的,外圈扇区的密度小,内圈扇区的密度大。
  • 现在的硬盘内外圈扇区的密度一致,这样磁道的长度越长,扇区就越多,存储的数据量就越大。

簇或块

从硬盘的物理结构来看,数据存取信息的最小单位是扇区,一个扇区可能为 512 字节或者是 4K
由于扇区的容量小且数量众多,在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个整体,这个整体就是操作系统对硬盘进行存取的最小单位,在 Windows 下称为Cluster),在 Linux 等系统中称为Block)。每个簇或块可以包含 2, 4, 8, 16, 32 等,2 的 n 次方个扇区

Windows 系统上通过管理员身份运行 fsutil fsInfo ntfsInfo C: 命令,会得到以下信息:

C:\WINDOWS\system32>fsutil fsInfo ntfsInfo C:
NTFS 卷序列号 :        0x01d5a3f9fb0c2900
NTFS 版本      :                3.1
LFS 版本       :                2.0
总扇区     :                466,752,274  (222.6 GB)
总群集    :                 58,344,034  (222.6 GB)
空余群集     :                  9,150,639  ( 34.9 GB)
总保留群集 :               79,649  (311.1 MB)
用于存储备用的保留 :               0  (  0.0 KB)
每扇区字节数  :                512
每物理扇区字节数 :        512
每群集字节数 :                4096
每 FileRecord 分段字节数    :  1024
每 FileRecord 分段群集数 :  0
Mft 有效数据长度 :            1.32 GB
Mft 开始 Lcn  :                   0x00000000000c0000
Mft2 开始 Lcn :                   0x0000000000000002
Mft 区域开始 :                   0x0000000002676580
Mft 区域结束   :                   0x0000000002682da0
MFT 区域大小  :                   200.13 MB
最大设备修剪程度计数 :     64
最大设备修剪字节计数 :       0x7fff8000
最大卷修剪程度计数 :     62
最大卷修剪字节计数 :       0x40000000
Resource Manager 标识符:     E19CBA6D-0FE9-11EA-9980-484D7ECA4B02

这台设备使用的文件系统是 NTFS,默认的簇大小为 4096 字节

Linux 系统上通过以下命令可以查看 block 信息:

$ sudo tune2fs -l /dev/sda1 | grep "Block size"
Block size:               4096

$  stat /boot/ | grep "IO Block"
  Size: 4096            Blocks: 8          IO Block: 4096   directory

【设置 cmd 的显示语言】

# 设置为英文
C:\WINDOWS\system32>chcp 437
Active code page: 437

# 设置为中文
C:\WINDOWS\system32>chcp 936
活动代码页: 936

访盘过程

当需要从硬盘读取数据时,操作系统会将数据的逻辑地址发送给硬盘,硬盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读取的数据在哪个磁道,哪个扇区。

为了读取这个扇区的数据,需要将磁头移动到这个扇区的上方,为了实现这一点:

  • (1)首先必须找到对应的柱面,即磁头需要移动到对应的磁道上,这个过程叫做寻道,所耗费的时间叫做寻道时间
  • (2)然后目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间
  • (3)接下来磁头读取该扇区的信息,然后就需要进行数据传输,即数据从硬盘传输到内存。

可以看到,进行一次读写硬盘所需要的时间可以概括为:寻道时间旋转时间传输时间。目前硬盘的平均寻道时间在 3ms15ms 之间,普通硬盘的转速一般为 5400 rpm7200 rpm

局部性原理与磁盘预读

由于存储介质的特性,硬盘本身的存取速度就比主存慢很多,再加上磁头的机械运动,存取速度就更慢了。
为了提高硬盘的效率,尽量减少磁盘 I/O,硬盘往往不是严格的按需存取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序地向后读取一定长度的数据放入内存,这样做的理论依据是计算机科学中著名的空间局部性原理

当一个数据被用到时,其附近的数据通常也会马上被用到。

程序在运行期间,一段时间内所需要的数据通常都比较集中,由于磁盘的顺序读取效率很高(不需要寻道时间,只需要很少的旋转时间),因此预读一般都可以提高磁盘 I/O 的效率

磁盘预读的长度一般为 Page)的整数倍。由于操作系统经常与内存和硬盘这两种设备进行通信,为了屏蔽底层物理存储结构的设计细节,需要抽象出一种逻辑上的存储单位。

当与硬盘打交道时,操作系统使用簇或者块;当与内存打交道时,操作系统使用页

当程序要读取的数据不在内存中时,会触发一个缺页异常,此时操作系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置然后连续读取一页或者几页的数据放入内存,然后异常返回,程序继续执行。

分类

硬盘数据接口不同,大致分为 ATASATA(可参阅IDE界面)以及 SCSISAS

  • ATA,全称 Advanced Technology Attachment,是用传统的 40-pin 并口数据线连接主板与硬盘的,外部接口速度最大为 133Mb/s

    • 因为并口线的抗干扰性太差,且排线占空间,不利计算机散热,将逐渐被 SATA 所取代。
    • SATA2002年推出后,原有的 ATA 改名为 PATAParallel ATA)。
  • SATA,全称 Serial ATA,也就是使用串口ATA 接口。

    • 因抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能,已越来越为人所接受。SATA-I 的外部接口速度已达到 150Mb/s
    • SATA-II 达到 300Mb/sSATA-III 达到 600Mb/s
    • SATA 的前景很广阔。而 SATA 的传输线比 ATA 的细得多, 有利于机壳内的空气流通。
  • SCSI,全称为 Small Computer System Interface(小型机系统接口)。

    • 历经多世代的发展,从早期的 SCSI-II,到 Ultra320 SCSI 以及 Fiber-Channel光纤通道),接头类型也有多种。
    • SCSI 硬盘广为工作站级个人计算机以及服务器所使用。
    • 因为它的转速快,可达 15000 rpm,且数据传输时占用 CPU 运算资源较低,但是单价也比同样容量的 ATASATA 硬盘昂贵。
  • SASSerial Attached SCSI)是新一代的 SCSI技术。

    • SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 3Gb/s
    • 此外也透过缩小连接线改善系统内部空间等。

TIPS:硬盘转速以每分钟多少转来表示,单位表示为 RPMRPMRevolutions Per minute 的缩写,是 转/每分钟RPM 值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。

参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容