知识 - 硬盘

概述

目前硬盘大体上分为三种,分别有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。

硬盘简史

1956 年世界第一台磁盘存储设备 IBM 305 RAMAC 诞生,盘片直径为24英寸,盘片数为50片,重量则是上百公斤。这个设备用盘片来存储数据,用磁头来读写数据。其体积大约有两个冰箱那么大,不过其储存容量只有5MB,如图所示

由于RAMAC体积过于庞大,性能低效等缺点,IBM提出“温切斯特/Winchester”技术,并于1973年研制成功了一种新型的硬盘IBM 3340(温彻斯特硬盘)。这种硬盘拥有几个同轴的金属盘片,盘片上涂着磁性材料。它们与能够移动的磁头共同密封在一个盒子里面,磁头从旋转的盘片上读出磁信号的变化。这种硬盘的特点就是磁头和磁片装在一个密闭空间里,当磁片高速自传之后磁头会因为空气动力而悬浮起来,然后磁头臂会操作磁头沿着盘片划圆弧状移动。

真正的第一款GB级容量硬盘是由IBM 于1980年推出的IBM 3380,容量达2.5GB。跟现在的轻量级硬盘不同,IBM 3380的重量超过500磅。

在20世纪80年代末,IBM公司推出MR(Magneto Resistive磁阻)技术,这种新型磁头采取磁感应写入、磁阻读取的方式,令磁头灵敏度大大提升,大幅度提高硬盘的工作效率,与此同时盘片的储存密度较之前的20Mbpsi(bit/每平方英寸)提高了数十倍,为硬盘容量的巨大提升奠定了基础。在1991年IBM应用该技术推出首款3.5英寸的1GB硬盘0663-E12。虽然在此之前1983年已经出现了第一款3.5英寸硬盘,1988年出现了第一款2.5英寸硬盘,但容量方面都没有突破GB,可以说0663-E12是开创了民用级GB硬盘的先河,从此硬盘容量开始进入了GB数量级,3.5英寸的硬盘规格也由此成为现代计算机硬盘的标准规格。

1997年,划时代技术“GMR巨磁阻效应磁头”诞生。

在2007年,日立推出的第一款突破TB级容量的硬盘。到2012年,有了第一款4TB硬盘的现身。

2012-2017年,SSD的时代HDD几乎是停滞的。受限于机械硬盘的瓶颈难以突破,性能上升空间极为有限,又加上SSD这个大敌崛起。从2012年开始,机械硬盘技术的发展几乎是停滞的。以希捷、西数为代表的机械硬盘厂商,新品没发布几款,如今电商在售的桌面机械硬盘还是5、6年的老产品,令人惋惜。

现在的机械硬盘就是这样运行的,这么多年过去了,还是典型的「温切斯特」结构,也称为温盘。

至于为什么取这个代号,是因为当时研究出来的那个硬盘拥有两个 30MB 的存储单元,而「温切斯特来福枪」的口径和装药也刚好都是 30 ,所以代号就为 「温切斯特」。

硬盘的结构

先来看看硬盘的真实样子,我就标注了一些重点部位。

硬盘运行原理**:通电之后主轴带动盘片开始旋转,到达一定转速之后磁头就会悬浮在盘片上方,然后磁头臂就可以控制磁头做圆弧形的移动,通过盘片的旋转和磁头的移动就可能访问到盘片上任意地方的数据。**

为什么要让磁头浮起来?

首先磁头和盘片触碰的话就会有摩擦,摩擦久了肯定会有磨损,磨损了之后数据不就没了?

其次有摩擦力转速变慢,那磁盘的访问速度也就慢了。

所以悬浮很关键,而磁头悬浮的高度比头发丝还细,约 0.1微米,如果有灰尘进去可能会导致磁头和盘片磨损,这也是硬盘需要密封的原因。

刚启动时磁头不是和盘片接触的吗?

是的,就是磁头停靠点,也就是上面图中画的地方。

当通电之后等达到一定转速磁头才会移动到盘片上,等断电之后靠着电容剩余的电量会把磁头移到停靠处,这样每次启动就不会磨损啦!

还有一种停靠方式是在盘片内圈搞了个不存数据的地方,材质都不一样,专门给磁头停靠。

具体结构

盘面

  • A 就是磁道,盘面就是由磁道这样的一组同心圆构成,注意是标红部位,是个环,有横截面的

  • B 是扇面,C 就是扇区,每个磁道都会被划分成一组扇区,每个扇区包含相等数量的数据位,一般为 512 字节,是硬盘存储数据最基本的单位。

  • D 是簇,即多个扇区组成的,像 DOS 就是以簇为单位为文件分配磁盘空间的。

从图中看,扇区好像是连续着的,但是扇区之间其实有间隙,这些间隙是用来标识扇区的格式化位的,不会存储数据。

每个扇区包含相等的数据位,那明显距离圆心更近的同心圆扇区看起来能存的数据比最外围的扇区小很多,那岂不是外围的数据位要迁就最内部的?

是的。为了让每个磁道都有相等的扇区数,外圈磁道的扇区之间间隔很大,不过以前硬盘的数据存储密度很低,所以还能接受。

而随着硬盘存储密度的上升这样就造成了极大的浪费,因此就搞了个 zoned-bit recording 技术,目的就是在外圈磁道上放置比内圈磁道更多的扇区,如图。

ZBR 区位记录(Zoned-bit recording)是一种物理优化硬盘存储空间的方法,或指对磁道进行分区域,在不同区域采用不同密度以提高磁盘容量的记录方法。特点是内部磁道的扇区数目较少,外部磁道的扇区数目较多。在使用ZBR的硬盘,在最外面的环带中的轨道上的数据将具有最高数据传输率。

盘片

硬盘通常由一个或者多个盘片组成。例如下图就有三个盘片,每个盘片有上下两个盘面,对应的会有六个磁头。

磁头号从上到下以 0 开始计数,由磁头臂带领着磁头做圆弧形运动。每个盘面的磁道也由 0 开始计数,相同编号的磁道组成的区域称之为柱面。

为什么要有柱面这一术语呢?

因为几个磁头其实都是依靠同一个磁头臂运动的,所以要转就一起转,并且都是一个角度。因此想要数据读取的快,那么数据就应该在统一柱面上顺序存储。比如最上面的盘面的第 1 个磁道上写不下了,那继续写到背部的第二个盘面上,这样磁头臂只要寻道一次即可,读数据的时候也只要寻道一次即可。

所以说如果一个硬盘的盘片越多,速度就越快。

硬盘访问的时间

硬盘是以扇区为基本单位的,所以硬盘的访问就是要找到对应的扇区。

寻道时间:盘片的表面是磁性的,盘片随着主轴旋转而转动,当要访问某个扇区的时候首先要转动磁头臂找到对应的磁道。

旋转时间:盘片还是在旋转中的,磁头可以感知到下方数据位上的值,等旋转到目标扇区的时候就晓得该读/写数据了。所以我们买硬盘的时候会看到 7200RPM、15000RPM 啥的,转的越快磁盘找到扇区的时间就越短。

传送时间:读取数据。

硬盘数据访问延迟就是这三个时间相加,而最慢的就是寻道时间, CSAPP 提供的数据:

总延时=寻道时间+旋转时间+传送时间=9ms+4ms+0.02ms=13.02ms

当然不同的硬盘总延时肯定不一样,反正知道寻道时间最慢就行了。

逻辑磁盘块

从上述的物理结构已经知道需要找到盘面,再找到磁道,最后找到扇区才能读取数据。

没必要把这么不友好的访问方式暴露给操作系统,所以就搞了个逻辑磁盘块,屏蔽了底层访问的细节,提供编号 0 、1、2.....n 这样的逻辑块序列来对应具体的物理块。

这样操作系统要访问磁盘就很简单,不过最终还是要找到对应的扇区的,而磁盘控制器就维护了逻辑块和实际物理扇区的映射关系

磁盘控制器属于硬盘里面的一个硬件,它会将逻辑块翻译成**:盘面、磁道、扇区这么一个三元组**。

至此平时我们说的逻辑块与硬盘的物理访问也对应上了。

tips: 顺序写之所以快是因为硬盘读取同一块扇区里的内容比读取不同扇区的快。