【计算机组成原理】学习笔记——总目录

【45】机械硬盘:Google早期用过的“黑科技”

  • 引言
  • 一、拆解机械硬盘
    • 1、机械硬盘的物理构造【盘面+磁头+悬臂】
    • 2、机械硬盘读取数据流程
      • 1)读取数据的两个步骤
      • 2)一次硬盘上的随机访问时间=平均延时+平均寻道时间
  • 二、Partial Stroking:根据场景提升性能【“空间换时间”的解决方案】
    • 1、引言
    • 2、缩短行程(Partial Stroking 或者 Short Stroking)
  • 三、总结【个人总结的重点】
  • 四、精选问答
    • 问:
    • C盘在最外边的磁道 的理解:

引言

在 1991 年,我刚接触计算机的时候,很多计算机还没有硬盘。整个操作系统都安装在 5 寸或者 3.5 寸的软盘里。不过,很快大部分计算机都开始用上了直接安装在主板上的机械硬盘。到了今天,更早的软盘早已经被淘汰了。在个人电脑和服务器里,更晚出现的光盘也已经很少用了。

机械硬盘的生命力仍然非常顽强。无论是作为个人电脑的数据盘,还是在数据中心里面用作海量数据的存储,机械硬盘仍然在被大量使用。不仅如此,随着成本的不断下降,机械硬盘还替代掉了很多传统的存储设备,比如,以前常常用来备份冷数据的磁带。

那这一讲里,我们就从机械硬盘的物理构造开始,从原理到应用剖析一下,看看我们可以怎么样用好机械硬盘。

一、拆解机械硬盘

【问题引入】
机械硬盘的 IOPS,大概只能做到每秒 100 次左右。那么,这个 100 次究竟是怎么来的呢?

1、机械硬盘的物理构造【盘面+磁头+悬臂】

硬盘的构造:接口、对应的控制电路板、以及实际的 I/O 设备(也就是我们的机械硬盘)。

一块机械硬盘是由盘面、磁头和悬臂三个部件组成:

  1. 盘面:实际存储数据的盘片。

    • 盘面本身通常是用的铝、玻璃或者陶瓷这样的材质做成的光滑盘片。然后,盘面上有一层磁性的涂层。我们的数据就存储在这个磁性的涂层上。
    • 盘面中间有一个受电机控制的转轴。这个转轴会控制我们的盘面去旋转。
    • 我们平时买硬盘的时候经常会听到一个指标,叫作这个硬盘的转速。我们的硬盘有 5400 转的、7200 转的,乃至 10000 转的。这个多少多少转,指的就是盘面中间电机控制的转轴的旋转速度,英文单位叫 RPM,也就是每分钟的旋转圈数(Rotations Per Minute)。所谓 7200 转,其实更准确地说是 7200RPM,指的就是一旦电脑开机供电之后,我们的硬盘就可以一直做到每分钟转上 7200 圈。如果折算到每一秒钟,就是 120 圈

  2. 磁头:通过磁头把盘面上的数据传到总线上。(通过电路信号传输给控制电路、接口,再到总线上的。)
    • 通常,我们的一个盘面上会有两个磁头,分别在盘面的正反面。盘面在正反两面都有对应的磁性涂层来存储数据,而且一块硬盘也不是只有一个盘面,而是上下堆叠了很多个盘面,各个盘面之间是平行的。每个盘面的正反两面都有对应的磁头。
  3. 悬臂:悬臂链接在磁头上,并且在一定范围内会去把磁头定位到盘面的某个特定的磁道(Track)上

2、机械硬盘读取数据流程

我们刚才说的一个磁道,会分成一个一个扇区(Sector)。多个盘面上相同磁道组成的圆柱,我们叫作一个柱面(Cylinder)。

1)读取数据的两个步骤

  1. 把盘面旋转到某一个位置。【找到“几何扇区”】

    • 在这个位置上,我们的悬臂可以定位到整个盘面的某一个子区间。这个子区间的形状有点儿像一块披萨饼,我们一般把这个区间叫作几何扇区(Geometrical Sector),意思是,在“几何位置上”,所有这些扇区都可以被悬臂访问到。
  2. 把我们的悬臂移动到特定磁道的特定扇区。【找到最终的“实际扇区”】
    • 在这个“几何扇区”里面,找到我们实际的扇区。找到之后,我们的磁头会落下,就可以读取到正对着扇区的数据。

2)一次硬盘上的随机访问时间=平均延时+平均寻道时间

  • 平均延时(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 次左右。

【顺序读写数据,如何最大化读写效率?】
现在你再思考一个问题。如果我们不是去进行随机的数据访问,而是进行顺序的数据读写,我们应该怎么最大化读取效率呢?

我们可以选择把顺序存放的数据,尽可能地存放在同一个柱面上。这样,我们只需要旋转一次盘面,进行一次寻道,就可以去写入或者读取,同一个垂直空间上的多个盘面的数据。

如果一个柱面上的数据不够,我们也不要去动悬臂,而是通过电机转动盘面,这样就可以顺序读完一个磁道上的所有数据。所以,其实对于 HDD 硬盘的顺序数据读写,吞吐率还是很不错的,可以达到 200MB/s 左右。

二、Partial Stroking:根据场景提升性能【“空间换时间”的解决方案】

1、引言

只有 100 的 IOPS,其实很难满足现在互联网海量高并发的请求。所以,今天的数据库,都会把数据存储在 SSD 硬盘上。

不过,20年前,没有SSD硬盘,数据库里面的数据,只能存放在 HDD 硬盘上。

今天,即便是数据中心用的 HDD 硬盘,一般也是 7200 转的,因为如果要更快的随机访问速度,我们会选择用 SSD硬盘。但是在当时,SSD 硬盘价格非常昂贵,还没有能够商业化。硬盘厂商们在不断地研发转得更快的硬盘。在数据中心里,往往我们会用上10000 转,乃至 15000 转的硬盘。甚至直到 2010 年,SSD 硬盘已经开始逐步进入市场了,西数还在尝试研发 20000转的硬盘。转速更高、寻道时间更短的机械硬盘,才能满足实际的数据库需求。

不过,10000 转,乃至 15000 转的硬盘也更昂贵。如果你想要节约成本,提高性价比,那就得想点别的办法。你应该听说过,Google 早年用家用 PC 乃至二手的硬件,通过软件层面的设计来解决可靠性和性能的问题。那么,我们是不是也有什么办法,能提高机械硬盘的 IOPS 呢?

2、缩短行程(Partial Stroking 或者 Short Stroking)

还真的有。这个方法,就叫作 Partial Stroking 或者 Short Stroking。我没有看到过有中文资料给这个方法命名。在这里,我就暂时把它翻译成“缩短行程”技术。

其实这个方法的思路很容易理解,我一说你就明白了。既然我们访问一次数据的时间,是“平均延时 + 寻道时间”,那么只要能缩短这两个之一,不就可以提升 IOPS 了吗

一般情况下,硬盘的寻道时间都比平均延时要长。

【解决方案分析过程】

  1. 最极端的办法就是我们不需要寻道,也就是说,我们把所有数据都放在一个磁道上。比如,我们始终把磁头放在最外道的磁道上。这样,我们的寻道时间就基本为 0,访问时间就只有平均延时了。那样,我们的 IOPS,就变成了1s / 4ms = 250 IOPS

  2. 不过呢,只用一个磁道,我们能存的数据就比较有限了。这个时候,可能我们还不如把这些数据直接都放到内存里面呢。所以,实践当中,我们可以只用 1/2 或者 1/4 的磁道,也就是最外面 1/4 或者 1/2 的磁道。这样,我们硬盘可以使用的容量可能变成了 1/2 或者 1/4。但是呢,我们的寻道时间,也变成了 1/4 或者 1/2,因为悬臂需要移动的“行程”也变成了原来的 1/2 或者 1/4,我们的 IOPS 就能够大幅度提升了。

比如说,我们一块 7200 转的硬盘,正常情况下,平均延时是 4.17ms,而寻道时间是 9ms。那么,它原本的 IOPS 就是

1s / (4.17ms + 9ms) = 75.9 IOPS

如果我们只用其中 1/4 的磁道,那么,它的 IOPS 就变成了

1s / (4.17ms + 9ms/4) = 155.8 IOPS

你看这个结果,IOPS 提升了一倍,和一块 15000 转的硬盘的性能差不多了。不过,这个情况下,我们的硬盘能用的空间也只有原来的 1/4 了。不过,要知道在当时,同样容量的 15000 转的硬盘的价格可不止是 7200 转硬盘的 4 倍啊
所以,这样通过软件去格式化硬盘,只保留部分磁道让系统可用的情况,可以大大提升硬件的性价比。

在 2000-2010 年这 10 年间,正是这些奇思妙想,让海量数据下的互联网蓬勃发展起来的。在没有 SSD的硬盘的时候,聪明的工程师们从硬件到软件,设计了各种有意思的方案解决了我们遇到的各类性能问题。而对于计算机底层知识的深入了解,也是能够找到这些解决办法的核心因素

三、总结【个人总结的重点】

  • 机械硬盘的物理构造:盘面+磁头+悬臂

  • 机械硬盘读取数据的两个步骤:

    • 把盘面旋转到某一个位置。【找到“几何扇区”】
    • 把我们的悬臂移动到特定磁道的特定扇区。【找到最终的“实际扇区”】
  • 一次硬盘上的随机访问时间=平均延时+平均寻道时间

  • 缩短行程(Partial Stroking 或者 Short Stroking)【“空间换时间”的解决方案】:

    • 把所有数据都放在一个磁道上
    • 只用最外面 1/4 或者 1/2 的磁道,缩短“平均寻道时间”,以提升IOPS

四、精选问答

问:

如果是用更慢的 5400 转的硬盘,使用 Partial Stroking 技术,只使用一半的硬盘空间,我们的 IOPS 能够提升多少呢?
答:

C盘在最外边的磁道 的理解:

【计算机组成原理】学习笔记——总目录

【45】机械硬盘:Google早期用过的“黑科技”相关推荐

  1. 国外发明的10大仿生机械,这才是真正的黑科技!

    来源:工信头条 仿生机械就是模仿生物的形态.结构和控制原理设计制造出的功能更集中.效率更高并具有生物特征的机械.研究仿生机械的学科称为仿生机械学,它是20世纪60年代末期由生物学.生物力学.医学.机械 ...

  2. 好强大的仿生机械,这才是真正的黑科技!

    全世界只有3.14 % 的人关注了 数据与算法之美 仿生机械就是模仿生物的形态.结构和控制原理设计制造出的功能更集中.效率更高并具有生物特征的机械. 研究仿生机械的学科称为仿生机械学,它是20世纪60 ...

  3. 计算机硬盘出现过哪些问题,出现这几种征兆, 说明您的电脑机械硬盘可能就有问题了!...

    原标题:出现这几种征兆, 说明您的电脑机械硬盘可能就有问题了! 伴随着科技的发展,电脑在不断地更新升级,游戏APP也都不断的更新换代,老款机器逐渐开始带不起来新型的大型游戏,再加上使用者经常不太保护自 ...

  4. Backblaze根据他们手中的历史数据,对不同品牌、容量的机械硬盘进行了一番对比

    日前,国外云备份服务公司Backblaze根据他们手中的历史数据,对不同品牌.容量的机械硬盘进行了一番对比,得出结论称无论故障率还是寿命,日立最好,西数其次,希捷第三,同时还宣称企业级硬盘反而不如消费 ...

  5. 固态硬盘是什么接口_什么是SSD固态硬盘,跟机械硬盘有什么不同?

    硬盘分为机械硬盘(HDD)和固态硬盘(SSD),早期电脑装的是机械硬盘,随着科技发展,固态硬盘开始普及.这句话告诉你固态硬盘有多重要:把电脑的机械硬盘换成固态硬盘,开机时间从60s瞬间变为10s,这就 ...

  6. 台式电脑计算机怎么看是固态硬盘,怎么看电脑是机械硬盘还是固态硬盘

    原标题:怎么看电脑是机械硬盘还是固态硬盘 不少用户在使用电脑几年之后,发现速度已经跟不上了,想要先加一根内存或者升级固态硬盘,但是由于自己对硬件不是很了解,所以根本分别不了自己是固态硬盘还是机械硬盘. ...

  7. 计算机机械硬盘上的一个扇区容量,计算机外设之——机械硬盘

    从计算机硬件结构一文得知,现阶段电脑永久存储数据的介质有:硬盘(机械.固态).U盘.光盘.磁带等.本节主要阐述硬盘(通常指机械硬盘) 一.什么是硬盘 打开硬盘来瞅瞅,到底是什么玩意(一言不合就贴图) ...

  8. 服务器固态硬盘跟机械硬盘之间差别是什么?

    首先是外观上,固态要比机械硬盘的体积小很多,有几十倍的差距.现在主流的固态硬盘,是上图的长条状的,一般支持NVME协议,读写速度在2000M每秒左右,高的能达到3500M每秒. 目前还有"P ...

  9. 【科普】机械硬盘选购

    一.关于硬盘 硬盘是当前使用最为广泛的数据存储设备. 从存储原理上讲,硬盘和磁带是一样的. 硬盘内部是几个叠在一起的磁性盘片,读取数据的时候,盘片以恒定的速度旋转,边上有一个小磁头进行读取和写入.磁头 ...

最新文章

  1. [算法] 求环形数组中和值最大子段
  2. python实现宿舍管理系统_基于PYTHON微信小程序的病历管理系统的设计与实现
  3. java编码技巧_两个Java初学者编码技巧
  4. java中do loop的使用_Java中do-while循环——通过示例学编程(11)
  5. Android常用的工具类
  6. 15什么时候你最想打人
  7. Didn‘t find class “android.view.View$OnUnhandledKeyEventListener“,Didn‘t find class “androidx
  8. 康宁玻璃ct值计算公式_防眩光玻璃的硬度及强度
  9. Advanced Installer 历史版本下载
  10. 2018年系列之设计模式汇总贴
  11. 训练赛20160403
  12. 调用微信扫码接口实现扫一扫功能
  13. 正则表达式(规则+代码)
  14. 免费收听--第2版招投标软件项目管理实战课
  15. Android手机存储路径
  16. 贪心算法(4.加工生产调度(做题思路分析))
  17. TCP连接的建立与终止
  18. 几种最小二乘法及python代码:ELS、TLS、RLS
  19. led显示屏十大品牌
  20. asp.net 隐藏url 简便方法

热门文章

  1. ThinkPHP整合微信支付之刷卡模式
  2. 【哈佛积极心理学笔记】第7讲 逆境还是机遇
  3. 使用CGLib实现动态代理
  4. sass,less,stylus
  5. pandas-groupby分组操作
  6. 《Java基础入门第2版》--黑马程序员 课后答案及其详解 第4章 面向对象(下)
  7. 程序员必修课-sql语句
  8. PAT A1105 Spiral Matrix ——黄师塔前江水东,春光懒困倚微风
  9. Android事件分发
  10. 前途未必是光明的,道路却一定是曲折的