互联网时代下机械硬盘的发展史(上)

简介: 互联网时代下机械硬盘的发展史

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

拆解机械硬盘

机械硬盘的IOPS大概只能做到每秒100次左右。机械硬盘拆开,自然知道为什么它的IOPS是100左右了。


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


1.png一块机械硬盘是由盘面、磁头和悬臂三个部件组成的。

盘面(Disk Platter)

实际存储数据的盘片。

本身通常是用的铝、玻璃或者陶瓷这样的材质做成的光滑盘片。有层磁性涂层。数据就存储在这个磁性的涂层上。

中间有个受电机控制的转轴。控制盘面去旋转。


硬盘的转速5400转的、7200转,指的就是盘面中间电机控制的转轴的旋转速度,英文单位叫RPM,也就是每分钟的旋转圈数(Rotations Per Minute)。所谓7200转,其实更准确地说是7200RPM,指的就是一旦电脑开机供电之后,我们的硬盘就可以一直做到每分钟转上7200圈。如果折算到每一秒钟,就是120圈。

磁头(Drive Head)

数据并不能直接从盘面传输到总线上,而是通过磁头,从盘面上读取到,然后再通过电路信号传输给控制电路、接口,再到总线。


一个盘面有两个磁头,分别在盘面的正反面。盘面在正反两面都有对应的磁性涂层来存储数据,而且一块硬盘也不是只有一个盘面,而是上下堆叠了很多个盘面,各个盘面之间是平行的。每个盘面的正反两面都有对应的磁头。

悬臂(Actutor Arm)

悬臂链接在磁头上,并且在一定范围内会去把磁头定位到盘面的某个特定的磁道(Track)。

磁道

一个盘面通常圆形,由很多同心圆,每个“甜甜圈”就是个磁道。每个磁道都有自己的编号。

悬臂只是控制到底读最里面那个“甜甜圈”,还是最外面的“甜甜圈”数据。

1.png

扇区(Sector)

一个磁道,会分成一个个扇区。

柱面(Cylinder)

上下平行的一个个盘面的相同扇区叫一个柱面。

读取数据

两个步骤:

  • 把盘面旋转到某个位置

在这个位置,悬臂可定位到整个盘面的某个子区间。该子区间像块披萨饼,叫几何扇区(Geometrical Sector),即“几何位置上”,所有这些扇区都可以被悬臂访问到。

  • 把悬臂移动到特定磁道的特定扇区,即在这个“几何扇区”里,找到实际扇区。找到后,磁头会落下,即可读取到正对着扇区的数据。


image.png

image.png

一次硬盘的随机访问所需时间

平均延时(Average Latency)

盘面旋转,把几何扇区对准悬臂位置的时间。

和机械硬盘转速相关。随机情况下,平均找到一个几何扇区,需旋转半圈盘面。

7200r硬盘,1s可旋转240个半圈,平均延时:

1s / 240 = 4.17ms

平均寻道时间(Average Seek Time)

盘面选转之后,我们的悬臂定位到扇区的的时间。我们现在用的HDD硬盘的平均寻道时间一般在4-10ms。


若随机在硬盘找个数据,需 8~14 ms。硬盘只有一个电机转轴,也只有一个悬臂,所以无法并行定位或读数据。那一块7200r硬盘,1s随机的I/O访问次数就是:


/

1s / 8 ms = 125 IOPS
1s / 14ms = 70 IOPS

若不是随机的数据访问,而是顺序的数据读写,应如何最大化读取效率?


顺序存放的数据,尽可能存放在同一柱面。这就只需旋转一次盘面,进行一次寻道,就可写或读,同一个垂直空间上的多个盘面的数据。

若一个柱面上的数据不够,也不要去动悬臂,而是通过电机转动盘面,即可顺序读完一个磁道上的所有数据。所以,对HDD的顺序数据读写,吞吐率还不错,约200MB/s。

目录
相关文章
|
API 网络架构 微服务
带你读《微服务架构设计模式》之三:微服务架构中的进程间通信
成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本独特的书籍中,微服务架构的先驱、Java 开发者社区的意见领袖 Chris Richardson 收集、分类并解释了 44 个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。本书不仅仅是一个模式目录,还提供了经验驱动的建议,以帮助你设计、实现、测试和部署基于微服务的应用程序。
13715 0
|
Ubuntu 数据安全/隐私保护
Ubuntu 下建立WiFi热点的方法
使用ap-hotspot来创建WIFI热点。终端里输入: $ sudo add-apt-repository ppa:nilarimogard/webupd8 $ sudo apt-get update $ sudo apt-get install ap-hotspot $ sudo ap-...
2618 0
|
Java Linux 计算机视觉
全网首发:LINUX OpenCV编译java/jar版本注意事项
全网首发:LINUX OpenCV编译java/jar版本注意事项
631 0
|
存储 人工智能 达摩院
达摩院重要科技突破!空天数据库引擎Ganos解读
Ganos空天数据库引擎是李飞飞带领的达摩院数据库与存储实验室研发的新一代位置智能引擎,采用了平台即服务、多模融合、计算下推和云原生全新处理架构,为政府、企事业单位、泛互联网客户提供移动对象、空间/时空、遥感多模态数据混合存储、查询与分析服务,解决空天大数据使用流程复杂、使用门槛高、应用效率低等问题,主要应用于城市管理、交通物流、自然资源、航空航天、物联信息等领域。
达摩院重要科技突破!空天数据库引擎Ganos解读
|
前端开发 JavaScript 测试技术
前端组件/库打包利器rollup使用与配置实战
目前主流的前端框架vue和react都采用rollup来打包,为了探索rollup的奥妙,接下来就让我们一步步来探索,并基于rollup搭建一个库打包脚手架,来发布自己的库和组件。
1281 0
|
关系型数据库 MySQL 数据库
mysql插入表时报错ERROR 1067 (42000): Invalid default value for ‘end_time‘
mysql插入表时报错ERROR 1067 (42000): Invalid default value for ‘end_time‘
|
域名解析 缓存 网络协议
【TCP/IP】【调试】Windows常用网络相关DOS命令一览
【TCP/IP】【调试】Windows常用网络相关DOS命令一览
656 0
PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
1107 0
PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。