这是少数派与国民好物 aigo 联合推出的信息储存设备的科普系列文章。作为国内早期的存储设备制造商及佼佼者,感谢 aigo 对本文提供的一系列支持,包括但不限于技术知识指导、市场难寻的老物件以及作者用于拆解介绍的最新产品等。
我们希望通过最简洁通俗的描述,带领大家了解信息储存设备的基本原理,知道那些复杂的参数,如何挑选购买适合自己的存储设备,又是如何更好地使用,更安全稳定地保存我们的数据,以及未来我们能够用上什么技术。 另本系列虽然与 aigo 联合发起,但所有内容不涉及任何品牌指导或要求的商业营销。
上一章我们了解到了储存设备发展的历史,认识到了人类是如何努力提升数据存储的量级与速度,我们在本篇介绍的机械硬盘的诞生,也离不开以前储存设备打下的基础。
说起储存设备,大部分人脑海中第一个闪现的估计都是机械硬盘,大部分人估计都没有想到,直到今年(2021)机械硬盘已经被人们使用大半个世纪(65 年,IBM 1956.09),即使现在固态硬盘已经普及多年,机械硬盘仍然是我们储存数据的主力。
本章节就为大家来讲解我们以前很常使用,现在依然有很多人在使用的机械硬盘(HDD),了解它是如何诞生的,如何为我们工作,如何快速安全地保存大容量数据,常见的那些参数又是什么意思。为接下来的机械硬盘选购和使用指南奠定一个基础。
机械硬盘正式被使用,应该是 1956 年 IBM 的 305 RAMAC:
它的体积十分庞大,基本就跟现在的双开门冰箱差不多,一吨+ 的重量容量只有 5MB 左右(据 IBM 自己的介绍,数据容量并不是不能加大,只是当时这个数据已经算是巨量,再大的话也没人买)。
有了这个基础,接下来几个关键的技术都是由 IBM 或者它的员工自己创业(比如希捷 Seagate 就是 IBM 前员工创立的公司)后推出的,比如我们下面会提到的各种 MR 技术和各种尺寸的硬盘。
其实从原理上讲,我们现在日常使用的机械硬盘原理和 RAMAC 差不多,结构更是直接与 IBM 后来推出的 3340 一样,只不过利用新技术将盘片密度和磁头灵敏度做到了极致从而把体积缩小。
IBM 3340 革新的点在于,它创新性地利用磁盘旋转产生的空气浮力,让磁头悬浮于盘片之上,从而避免了磁头对盘片的摩擦损耗,盘片也能实现更高速度的旋转从而提升读写速度。
IBM3340 有两个 30MB 的储存单元,不知道为啥跟另一个毫不相关的领域 —— .30-30 温切斯特步枪弹(美国人叫 Thirty-Thirty,前一个是口径后,一个是发射药重量,单位是格令 Krag)关联上了,然后大家都叫他温切斯特硬盘(搞不懂搞不懂~)。
我们现在使用的所有机械硬盘其实跟 IBM 3340 没有任何本质上的区别,只是新技术带来的容量和速度提升而已,于是大家又把现代机械硬盘统称为做温切斯特(Winchester)硬盘。
随着磁盘容量和盘片数量以及新技术的发展,从技术上讲,机械硬盘甚至比固态硬盘还要来的精密复杂,加上固态硬盘的来袭,机械硬盘技术发展缓慢,我们现在上电商网站能买到的硬盘大部分用的还是 5,6 年前的技术。所以经过各种整合收购后,整个世界也只有 3 家机械硬盘制造商,西部数据(Western Digital)、希捷(Seagate)、东芝(Toshiba,接下来我拆的硬盘就是这个)。在之后的选购部分,我会来详细介绍一下这几家公司。
相关文献:
[1]. IBM 305 RAMAC 的介绍和使用说明书。
[2]. IBM 历史上重要的磁盘型号和参数列表。
[3]. IBM 为 305 RAMAC 制作的宣传片 「ibm 305 ramac」
作为最广泛使用的储存设备,加上原理和结构相对比较简单,机械硬盘(温切斯特硬盘)的物理结构和工作原理是非常容易查到的。但最直观的还是直接拆开看实物,我们找到一个坏的机械硬盘,然后把它拆开(千万别对自己的硬盘下手,拆开就坏了)。
观察机械硬盘,我们可以看到前面有一个金属固定板,固定板上面的螺丝自然是用来固定整个结构的,相当于一个盖子。通常关于机械硬盘的参数,都会用一张贴纸贴在固定板上,我们下面介绍的参数在实际选购的时候一般就是看这张纸。
这些硬盘外部另外一个需要注意的点就是通气孔,通常旁边会有不要遮盖通气孔的标注。
这个孔是用来干什么的呢?学完下面机械硬盘的原理,大家就会知道机械硬盘对灰尘非常敏感,所以机械硬盘内部通常是要密封并做无尘处理,但是机械硬盘在工作时会产生热量,使内部的空气膨胀,如果整个机械硬盘完全密封,那么里面的气压就会变大,把磁头压向盘片,容易造成硬盘损坏。所以厂商会故意在机械硬盘上开一个小孔来保证内外气压平衡,但如果我们用放大镜或者显微镜观察这个孔,发现它并不是单纯的洞,也是有做防尘处理的(其实就是我们空气净化器里面的 HEPA 滤网),防止灰尘从这个孔进去。
另外通气孔也可以用来分辨这个盘是空气盘还是氦气盘,因为氦气盘生产的时候需要充入氦气,然后用激光焊接等把硬盘完全密封起来,不能留通气孔,不然氦气就跑光了,这也是为什么大家常说氦气盘很难做数据恢复,因为一旦开盘基本报废,至于为什么用氦气我们留着下面再说。
而在机械硬盘的顶部,我们就可以看到这个硬盘的接口,这里以 SATA 接口为例,通常可以分为三个部分,一个供电接口给硬盘提供建立一个数据接口来传输数据,还有一个跳线接口。
其中供电和数据接口的用途就跟它们名字一样,跳线接口的用途就比较古老,一是因为以前没办法直接在 BIOS 里面确定硬盘启动顺序,所以需要通过插不同的跳线针脚来确定硬盘的启动顺序,二是有些设备需要通过跳线接口把 SATA2 切换成 SATA1 模式,也就是降速来使用,不然老设备识别不出来。还有些厂商会用作调试、固件更新、数据恢复接口等。现在基本没人用这么老的设备了,这个接口根本就不用插,跳线接口当没有就可以。
外部剩下的就是控制电路板,基本上就是控制硬盘的各种芯片,RAM(用来做缓存),存储 ROM(用来放硬盘固件),电机驱动和主控芯片(微处理器)等,实现磁头驱动、定位、读写、接口控制等功能。
介绍完外部结构,我们终于来到了机械硬盘的内部。其实机械硬盘的内部结构相对简单,只有两个大结构,硬盘硬盘,中间最显眼的那块就是它的盘,因为是硬的,所以大家叫他硬盘(冷笑话~)。
另外一个大结构就是磁头组件,由磁头、传动手臂、传动轴三个部分组成。硬盘底下还有电机等等用来驱动整个磁头组件,通过磁头驱动电路精确控制电机带动传动轴传动手臂,使最尖端的磁头到达指定的位置。磁头组件是硬盘发生故障的主要位置,90% 的硬盘故障都是磁头组件的问题。
接下来就是最重要的盘片了,我们的数据都是存在它上面。物理上来讲,它就是一个铝合金或者玻璃盘子,上面涂一层磁性材料,然后加上保护润滑涂层等等其他东西一起加工一下,读写数据就是改变盘片上那些小磁颗粒的极性,不同物理性质材料直接影响盘片的数据密度,稳定性和鲁棒性。
另外盘片中间主轴还有一个马达让盘片高速旋转,通过前置控制电路控制速度等等。剩下的就是起落架,空气过滤片等等其他部件了。
整体来讲,机械硬盘的内部结构还算是蛮简单的,不过现在机械硬盘内部通常会叠多个盘片提升数据容量,对应地就会有很多个磁头。盘片的正反面都可以读写,所以正反面会各有一个磁头。
看完上一章软盘部分的同学,其实基本上就能够很好的理解机械硬盘的工作原理了。硬盘不通电时,磁头是放到起落架的,通电之后,首先盘片会高速旋转,接着控制器控制磁头组件将磁头放在盘片上,盘片高速旋转的空气浮力会将磁头稍微悬浮于盘片上一点点(0.10.3μm,新技术可以做到 0.0050.01μm,微米,1米的 100 万分之 1),横截面看大概是这么一点点:
针尖大小的磁头上包含两个小磁头,一个是读磁头一个是写磁头。想要读写数据的时候,控制器会控制电机将磁头放到对应位置,等盘片旋转到对应数据点的时候:
想要写入数据就通过给电流给写磁头产生一个强大的磁场,改变底下盘片上经过的磁颗粒的极性,从而实现写入数据。
想要读取数据就直接检测底下磁颗粒经过让读磁头产生的电流,从而确定对应位置磁颗粒的极性,达到读取数据的目的。
整个读写过程原理就是我们常说的电磁现象,所以盘片又叫做磁盘。而且看到磁头和磁盘的距离和速度,大家应该能理解为什么机械硬盘这么怕灰尘之类的小颗粒了吧。
厂商和科学家们一直在努力提高机械硬盘容量的方向,就是尽量提高盘片上磁性材料的密度,以及在不影响读取写入的同时尽量减小读写磁头的大小。
而机械硬盘提高容量密度里面有一个很重要的技术,那就是 IBM 1991 年(没错,还是 IBM,实在太强了)发明的 MR 磁阻技术,利用磁阻效应,将磁头灵敏度大大提升,从而使盘片的储存密度直接提升几十倍,让现在 GB,TB 级硬盘的出现成为可能。
磁阻效应是个很简单的物理原理,就是某些金属或半导体的电阻值会随着外部磁场的变化变化,因为磁场会改变电子的轨迹,洛伦磁力就会在宏观上改变材料的电阻值。
IBM 把对应的材料做成了 MR 磁头,后来又进一步做成了 GMR 巨磁阻效应磁头,现在的机械硬盘,包括我们上面介绍工作原理时候的磁头都是使用磁阻效应材料的磁头。
另外我们平时看到机械硬盘介绍的时候,可能还会看到 PMR、SMR 之类和 MR 有关的参数,这个是 MR 技术诞生后,使磁盘容量提升的另一个方法。因为 MR 技术之前磁头的灵敏度不够,所以盘片上的磁颗粒极性一般都是横向在盘片上的,称为水平磁记录 LMR,就像下面这样:
随着 MR 技术越来越成熟,灵敏度越来越高磁颗粒不仅能够做得越来越小,工程师们还能把磁颗粒竖起来放也能保证数据的正确读取写入,这样相同面积盘片就能塞进更多的磁颗粒,单盘片也能做到 1TB 的容量。
这就是现在这些硬盘都在用的 PMR 垂直磁记录,所以我们通常叫 PMR 硬盘,知道了这项技术的原理,我们就能在下面很好的给大家解释清楚,为什么 SMR 叠瓦式硬盘会出现?为什么尽量不要买它。
至于盘片在那么高转速情况下,读写磁头是怎么样实现快速精准改变底下磁颗粒的磁性等问题就不展开讲了,感兴趣的朋友可以找找相关文章,或者等我在这个系列最后一章拓展部分简单讲讲。
知道了硬盘的物理工作原理,但我们还有很多问题没有解决,比如为什么硬盘要分区?为什么要有扇区和磁道,为什么分区表炸了硬盘就读取不了数据等等,这就涉及到硬盘的逻辑工作原理了。
为了提高数据的写入读取速度,最大化减少磁头走过的路径,提升工作效率,统一标准等,我们需要在逻辑上给硬盘分区,和软盘一样,机械硬盘首次使用时也需要格式化,这一步会给硬盘重新划分逻辑分区。
看过上一张软盘部分的朋友,应该比较好理解,机械硬盘的逻辑分区和软盘差不多:
一个机械硬盘可以有好几个盘片,每个旁边有正反两个面,叫做磁盘面,每个面都像上面一样,分好磁道还有扇区。可以把它想象成有很多个跑道的操场,然后每个跑道再按照每 100 米分成一块一块去百米赛跑。,每一个盘片上面同一条磁道合起来组成的叫做柱面(图中所有白色的磁道合起来,就像一根竖起来的空心水泥管)。
盘片在高速旋转而磁头固定位置的情况下,磁头在盘面上画出的轨迹是一个圆,我们就把它规定为磁道;而一定时间内磁头在盘片上走过的轨迹是一个圆弧,我们就把它规定为扇区。
所以机械硬盘的逻辑分区从大到小是:磁盘面 -> 柱面 -> 磁道 -> 扇区,扇区就是机械硬盘逻辑分区的最小单位,一般大小为 512B,也就是 0.5KB,也就是说即使你只想读写几十 B 的数据,磁头也会把对应扇区 512B 的数据都读写。
每个扇区的容量(Byte,字节)* 一个磁道有多少个柱面 * 整个硬盘一共有多少个磁盘面 = 机械硬盘的总容量。
大家看到这里有没有发现扇区的划分有一个问题,磁盘面最外圈的周长比最内圈的周长要多几倍,如果每个磁道都划分同样的扇区数,那么最外圈磁道的扇区只放 512B 数据显然有点浪费。于是硬盘厂商开发出了 ZDR 等类似技术,把整个盘面的磁道由外到内分成几大块,根据每块的位置,越靠近外侧就分配越多的扇区,这样极大地提高了空间利用率。
ZDR 技术带来的另一个结果是,同样时间磁头在外侧能扫过更多扇区,带来更高的读写速度。所以我们给装 Windows 的时候,系统分区 C 盘一般都会放到靠近外面的磁道(当然现在不推荐把系统装在机械硬盘上了)。
平时我们格式化硬盘或者其它储存设备的时候,经常会看到有一个快速格式化的选项,同时还有低级格式化等其它的方式。
这些格式化方式的区别是有没有对储存设备重新分区,比如快速格式化一般就只是清除掉储存设备上的分区表,这样系统认为所有扇区可以重新写入数据;普通格式化往往是填零操作,也就是把所有扇区数据都变成 0,还伴随着检测标注坏道等操作,所以速度会慢上不少;低级格式化现在很少见,却是最彻底的,它会将整个盘面都归空,然后重新划分磁道和扇区分区表等等,经常低级格式化的话对硬盘寿命有一点影响,这几种格式化的恢复数据难度会在后面的章节讲到。
一些硬盘上有一个比较重要的磁道——最外圈的 0 磁道。这个磁道不会储存用户数据,我们开机常见的 MBR 引导,就是把引导数据(告诉电脑系统如何启动的数据)和 DPT 硬盘分区数据放到了 0 磁道 0 柱面 1 扇区(UEFI 引导则是把引导文件放在了 FAT 分区里),文件系统的 FAT 文件分配表有时候也是放到 0 柱面上。0 磁道损坏也是机械硬盘最常见的损坏原因。
这样子给柱面、磁头、扇区编号,再按照以下的公式给每个扇区编号:
逻辑扇区号 = (柱面号*总磁头数+磁头编号) * 每个磁道有多少个扇区 + 扇区编号 - 1
这样子就相当于每个扇区有自己独特的地址,跟我们给酒店房间编号一样,这个地址就是扇区的逻辑区块地址 LBA。有了编号,磁盘读写数据更方便。
至于机械硬盘在逻辑上的读取写入原理,我们会放到下面参数这一节再讲,这样大家理解比较容易。
机械硬盘能用相对便宜的价格获得大容量一直是它的优势,在各种技术的加持下,现在机械硬盘单盘片能够做到 2TB,单个机械硬盘的容量能够去到 24TB(希捷 Seagate,2021)。但受限于物理读写机制,一些硬盘的读写速度可以说不太尽如人意,一般不超过 300MB/s,家用机械硬盘一般不会超过 150MB/s,这个速度在现在看来是非常慢的,所以机械硬盘现在的使用用途一般都是存储大量不经常使用的数据,像是电影或者照片等,非常不建议把经常需要读写小文件的应用程序,游戏,操作系统安装到机械硬盘。
相关文献:
[1]. 原始机械硬盘的详细结构可以参考这份专利。
[2]. 机械硬盘,详细的结构和高清的微距图片,可以查看 HDDScan 的文章「 HDD from Inside Hard Drive Main Parts」。
[3]. 部分动图来源于 Youtube@TED-Ed,一个很好的机械硬盘原理讲解视频,原视频「硬盘是如何工作的?- Kanawat Senanan」。
[4]. 希捷对于自家新技术还有超大容量硬盘的介绍。
[5]. 查看更加专业的机械硬盘结构,可以参考这份移动机械硬盘的专利。
逻辑分区解释完,再往上一层就是我们熟知的文件和目录结构了。用来管理目录和文件的系统叫做文件系统,它规定了文件和目录数据如何储存到储存设备上,Windows 用的文件系统是 NTFS。
因为我们很少有只占用一个扇区以下的文件,所以文件系统会将磁盘面上相邻的若干个扇区合并为一个簇(又叫分配单元,Unix 类系统叫块,反正都是一个意思)。文件系统进行读写操作的基本单位就是簇。
每个系统规定的簇大小都不一样,簇越大读写速度就越好,但是空间浪费越严重,比如 64K 簇大小的文件系统,存放 1KB 的文件也要在磁盘上占用 64KB 的扇区 Windows NTFS 文件系统的簇大小是 4KB。
以我们常见的 Windows 文件属性为例:
可以看到大小和占用空间两个属性,后面跟着的容量是不同的。「大小」就是文件的实际大小,「占用空间」就是这个文件在磁盘上占用的簇大小 ,因为 10.2 KB > 8KB,而 NTFS 文件系统的簇大小是 4KB,所以他必须要占三个簇,也就是 12KB。比较大的文件看着大小和占用空间可能一样,但仔细观察后面的字节数,也会发现相差了簇以内的字节。
文件系统会将每个文件在磁盘上占用哪些扇区汇总成一个文件分配表,这就是我们上面说的 FAT。同时文件系统也会把目录里面包含哪些文件和每个文件的属性都汇总成一个目录表,和文件分配表放到一块。
到这里我们会发现,一个简单的文件操作,从操作系统到文件系统,到逻辑分区,再到物理操作上分成了很多层:
各层分离的机制既在保证最大性能的同时,也把兼容性拉满,不同的物理设备文件系统和操作系统都能够互相组合来运行。
Linux 和 MacOS 等其它操作系统里面文件系统的机制稍有不同,感兴趣的同学可以查找相关书籍,或者等我在系列最后一章简单解释一下。
了解完关于机械硬盘物理结构逻辑结构和文件系统的相关知识,接下来我们就能进入机械硬盘相关参数的讲解了。在这个部分我会将参数和机械硬盘逻辑工作原理一起来讲解,不仅能让你了解机械硬盘具体的工作流程,也能让你更加形象地了解到这些参数对机械硬盘性能产生的影响。
首先先介绍一下一些跟原理无关的基本参数。
对于普通消费者来讲,各种不同的硬盘,第一眼看上去最容易分辨的区别自然是三维尺寸了。为了能够方便在不同设备上统一使用,硬盘被分为了几个通用尺寸:
通常来讲高度越高的机械硬盘里面盘片数量越多,一般的硬盘盒和硬盘架都能放进最高的 3.5 寸硬盘。
2.5 英寸机械硬盘长宽 95mm~101.85mm*69.85mm,常见高度有 7mm、9.5mm、15mm、17mm、25mm 等,高度主要还是受到盘片数量,影响容量大的一般会比较厚。
因为是给空间要求较高设备使用,这些设备通常也不会留太多的余量,2.5 英寸机械硬盘的商品详情通常会标明自己的高度,有一些笔记本甚至 9mm 厚的硬盘放进 7mm 的槽里都会顶住底面,所以给笔记本之类的小设备换硬盘,不仅要注意硬盘尺寸还要注意硬盘高度,免得发生放得进去却盖不上盖儿的尴尬情形。
2.5 英寸硬盘因为空间还有技术等原因,比较不容易做到高转速,同容量下 2.5 英寸硬盘一般会比 3.5 英寸硬盘贵,不过优点是不需要额外的供电,适合做移动硬盘等低功率设备使用。空间供电足够的情况下,个人建议还是优先考虑 3.5 英寸硬盘。
另外还有一些比较少见的尺寸就不多介绍了,感兴趣的可以去相关文献那里看一下各种尺寸的表格。
容量这个就不用多说了吧,大家买什么储存设备,基本上第一眼看的就是这个参数。看你想要装多少东西,预算以内容量自然是越大越好的。
虽然大家可能在各种地方都看过了,这里还是要放上那个老生常谈的话题:为什么我买的新硬盘总容量比标称的容量小。
Flash(内存)或硬盘设备的厂家一般以 1000 为进制计算容量,即 1KB=1000 Bytes,1GB=1000MB,操作系统是以1024 为进制计算容量,即 1KB=1024 Bytes,1MB=1024KB,1GB=1024MB,格式化后的报告容量会少于标称容量。不同操作系统下,系统文件也会占用少量的空间。根据国家标准实际可用容量应大于等于标称容量的90%。
根本原因大家伙细心的话应该能想出来,因为上面提到的文件系统它规定的簇大小一般都是 4、8、16KB……所以操作系统只能用 1024 来作为进制,加上储存设备都会预留一些区域用来放固件或者分区数据等等非用户数据,所以最后的容量一般都会比标称的容量小。
而厂家以 1000 为进制来计算,其实是为了储存设备普及民用之后,方便大众消费者理解。,因为大家都知道 1 公斤等于 1 千克,1 公里等于 1 千米,为了对标公制单位,二进制的储存单位也就这样子定下来了 1000 进制(IEEE 标准,详细可以参考相关文献部分)。厂商也乐意这样子标注容量,毕竟可以显得容量大一点。,另外我们也能看到有些厂商会使用 GiB 这样子的单位来表示储存设备的容量,这其实就是1024 进制的单位,约等于储存设备的实际容量。
我们国家也有针对这个做出相关的标准,只要实际容量在标称容量的 90% 以上就是合规的,但我个人觉得厂商再良心一点其实可以把实际容量做足的,这样也算是一个可以用来宣传的优点。
另一个大家经常弄混,也经常有人解释的问题就是 bit 比特和 Byte 字节的区别。
很多人经常傻傻分不清这两个单位的区别,比如我们常说 100M 宽带,很多人就认为每一秒钟就能下 100MB 的文件,但其实 100M 宽带的理论下载速度只有 12.5MB/s;还有5G时代,各家运营商纷纷宣布自己的网络能够达到几百 Mbps 甚至 1G+Mbps,大家就把它当成真实下载速度了。加上 MBps 和 Mbps 还有 MB/s 和 mb/s 经常会被混用,搞的大家就更混乱了。
那么为什么要用两个单位呢?这是因为数据传输的最小单位是 bit,也就是二进制中的 0 或者 1,而文件储存的最低单位是 Byte,由 8 个 bit 组成,1Byte 的数据根据排列不同有 2 的 8 次方即 256 种排列方法,可以代表数字,大小写字母和常用字符。(这也是为啥 1Byte=8bit,同理一个中文字占 2 byte,因为 2 的 16 次方等于 65536,16bit 才足够覆盖常见中文字符)
所以数据传输领域经常用 bit 做单位(传输的是 0/1),下载和上传速度用 Byte 做单位(因为下载或上传 1Byte 以上的数据才有意义)。
介绍完原理无关的参数,接下来就要介绍和机械硬盘原理相关,并且能够切实影响机械硬盘性能的参数了。
系统给硬盘发布读取写入指令时,硬盘需要把系统发来的文件逻辑逻辑指令转化为物理位置,也就是说要找到这个文件在硬盘上哪块地方,借助文件分配表就可以。接下来就是将磁头移到对应位置上进行读取写入了。
首先电机会控制磁头移动到系统指定的磁道上,这个过程花费的时间就是机械硬盘的寻道时间。基本包括了三个参数,启动电机的时间、磁头臂的移动速度(常数)、现在位置到目标知道移动的距离。
寻道时间 = 电机启动时间 + 移动距离/移动速度
可以看到寻道时间并不是固定的,如果移动到第 1 个目标磁道后,第 2 个目标磁道离得比较远的话,寻道时间自然会变长,反之则会变短。而且盘片容量越大,寻道时间越短(因为密度越大,每个磁道的宽度也就越短)。商品详情里机械硬盘的寻找时间一般是测试出来的平均值,所以又叫平均寻道时间。
磁头现在在目标磁道上,下一步就是等待盘片将磁道上对应的扇区转到磁头底下。
这里盘片旋转的速度就是机械硬盘的转速参数,单位是 RPM,也就是每分钟转多少圈。大家常见的转速基本都是3600,5400 和 7200RPM,10000RPM 以上的比较少见。
之所以会有这个数字,是因为美国交流电是 110V60Hz 的,所以硬盘里面的主轴电机是每秒 60 转,一分钟就是 3600RPM 了。 而 5400,7200 则是 3600 的 1.5 和 2 倍。
而将扇区旋转到磁头底下这段时间就是旋转时间,这段时间比较短所以也叫旋转延迟,最长的延迟也就是盘片转一圈而已。
按照这个原理,转速越高,机械硬盘的读写速度自然是越快的。但是也要考虑到数据密度,如果数据密度比较高,5400RPM 的硬盘最后读写速度也能够比 7200RPM 更快。
IOPS 在处理设备或者其它电子设备上比较常见,但在机械硬盘这边还是比较少见的。不过偶尔也会有厂商在参数详情里面标出它,所以也简单介绍一下。
简单来说 IOPS 就是每秒能完成多少次 I/O 操作,I/O 指的是 input/output,也就是说每秒能完成多少次读写请求(读和写混着来测试)。
其中读写请求又分为随机和循环两种,循环请求就是不停的读取写入同样一个数据,通常最后会转化为 MB/s 显示。随机请求就是从随机不相邻扇区上读写数据,测出比较真实的速度。
通常机械硬盘的 IOPS 在 60-140IOPS 左右,这个参数还是比较能客观的反映出硬盘性能的。
等盘片将扇区转到磁头下这一瞬间,就可以开始读取和写入这个扇区的数据了。之前原理部分也有提到磁盘的读取写入都是以柱面为单位进行,因为所有磁头都是固定在一块同步移动的(当然也有不同磁头单独移动的技术,这里就不展开讲了)。
最上面盘片上的第 1 个柱面上的磁头,开始对扇区进行读取写入,这个扇区完成后硬盘发送指令,第 2 个柱面上的磁头开始进行读取写入……一直这样到最后一个磁盘面上的同一位置扇区写完,磁头之间切换只是一条指令,所以占用时间忽略不计。如果这时候文件数据还没写入完,就开始移动到下一个扇区继续写入,直到写完这个文件;如果文件数据还没有读取完,就获取剩余文件数据的磁道扇区位置继续读取。
寻道时间 + 旋转延迟 + 读取写入时间,最后再加上将数据放入运行内存的时间,就是硬盘的传输速度。我们可以发现完成一次读写请求的时间并不是固定的,受蛮多因素影响,比如盘片上,外边磁道和里面磁道的周长不一样,扇区数量可能也不一样,文件数据可能不会读取写入连续的扇区等等因素都会影响到最终的读写速度,机械硬盘商品详情上的读写速度通常都是最佳场景下测试出来的。
当然厂商们也会通过各种算法来对这个运行轨迹和文件数据排布等进行优化,以提高机械硬盘的读写速度。这个深究下去就非常深奥了,感兴趣的同学可以找相关的书籍来阅读。
很多人都知道固态硬盘是有缓存的,但实际上机械硬盘也是有缓存的,只不过它的大小与作用和固态硬盘不太一样。
机械硬盘的缓存又叫做磁盘缓冲区,一般使用速度比较高的固态颗粒,相当于一个小的内存条。它主要的作用是用作一个临时的高速存储空间。不同于固态硬盘缓存越大越好,机械硬盘的缓存通常比较小,传统的机械硬盘缓存一般只有 8MB ~ 64MB,叠瓦式硬盘由于特性缓存会比较大,有 128MB~ 256MB(稍后会详细介绍)。
缓存在机械硬盘中最终实现的效果还是以提高读写速度为主,详细来讲是发挥以下几个作用:
预读取:由于机械硬盘物理结构的原因,读取数据主要时间都花到了寻道和旋转延迟上,而大部分文件刚好数据都是放在相邻扇区上,当你请求一个文件时,机械硬盘会将这个扇区和周围扇区的数据全都读取(甚至同一个磁道上的所有数据,毕竟转一圈也不用多久),然后放到缓存里。最近我们请求相邻文件的情况还是蛮常见的,这样子如果这个文件读完之后,下一个文件在相邻扇区,那么这些硬盘就能够直接从缓存里面返回文件数据,而不用等待寻道和旋转延迟,命中率高的话能节省不少时间。
平衡数据读写速度:很多时候硬盘接口和硬盘本身读写数据的速率是不一样的,硬盘上读写数据比把数据通过接口传到外部里要慢得多,平衡之后,接口就可以通过自己最大的速度将一次性将部分写入数据放到缓存,而不用等硬盘写好一个扇区之后再发送另一个扇区的数据,读取也是同理,这样能让接口和机械硬盘磁头都能最大化工作效率。
减少写入等待时间:还是为了解决寻道时间和旋转延迟过长的问题,硬盘接收到写入数据的时候,可以将数据先放到缓存,然后直接向处理器发送写入完成的指令,这样子在计算机或者用户看来写入已经完成了,但实际上机械硬盘才开始慢慢的将缓存区里的数据写入盘片。
这样子不仅能够减少写入时间,也能够更好的给算法发挥,安排更高效的写入方式,从而提升写入速度和之后读取的速度。当然这样子做也有缺点,如果机械硬盘这个时候突然断电,那么缓存里面的数据清空,没有写入盘片的数据就没有了。
这也是为啥以前我们拔 U 盘或者移动硬盘之前,要先卸载设备或者等一段时间。因为这个时候处理器已经收到了写入完成的命令,文件分配表有可能也写入好了,文件系统会认为这个文件数据是完整的,但实际上已经随着断电灰飞烟灭了。等下次我们再打开这些文件,就会发现文件不见了,或者文件还在但是损坏打不开了。现在的新系统或者手机都不用担心这个了,比如 Win10 就默认将移动设备策略设置为快速删除,这样直接拔 U 盘移动硬盘没问题了,想要更好的性能还可以在磁盘属性 -> 策略里面开回来。
很多人听到缓存这个词,然后看到上面的好处,自然会觉得越大越好,甚至买机械硬盘的时候,就挑那些大大缓存的买。在固态硬盘上缓存越大可能越好,在机械硬盘上却不一定。
更大的缓存能够让硬盘预读取更多数据,也能增大命中率,在某种程度上的确是越大越好。大到某种程度的时候就没什么用了,因为我们需要一个请求读写单个大于 64 MB 文件的情景还是比较少的(多个文件,如果每个文件少于 64MB 也不会太阻塞 CPU),平时大文件下载读写等系统也会有分块算法优化,加上高速的内存颗粒比较贵,上大缓存导致硬盘涨价不太划算。另外一个少见的风险就是缓存越大,掉电时候数据损失的风险就越大,加上会使硬盘逻辑结构变复杂等原因,机械硬盘缓存一般少于 64MB。
国外的 Youtuber 像是 Linus 他们也对这方面进行过测试,证明实际上无脑堆大缓存对性能提升并不大。
而且在叠瓦盘上缓存是必须的,这也是为啥最近很多硬盘都上了256MB 缓存。简单来讲因为叠瓦盘的盘片太近了,写入数据磁头会破坏临近磁道的数据,所以要把数据读出来放到缓存,然后再一起写入(所以叠瓦盘比较慢,详细原理和工作过程会在下面讲到)。甚至还有 SSHD 这种利用固态硬盘作为机械硬盘缓存和利用运行内存来做缓存的硬盘存在,详细也会在下面硬盘类型中提到。
另外如果我们购买二手硬盘或者日常使用的时候,还要注意一下硬盘健康相关的参数,比如坏道什么的。这个部分相关的原理和参数,由于篇幅原因就放在后面机械硬盘使用的章节来讲了。
现在你再看看机械硬盘上贴纸那些参数,基本上都能看明白了吧。
相关文献:
[1]. 想知道硬盘都有啥尺寸可以参考这个维基百科的表格。
[2]. 规定接口硬盘尺寸等的 SFF 标准。
[3]. 关于二进制单位 1000 进制和 1024 进制的由来,可以查看这篇国际标准技术研究院的介绍。
[4]. 更多高清硬盘的图片,可以查看 HDD Scan 的拆解文章。
接口和协议也是储存设备另外一个比较重要的组成部分,不同的接口和协议能对储存设备的读写速度 IO 请求等产生较大的影响。接口和协议的兼容性也决定了储存设备能不能够在特定的设备上使用。
在讲之前,我还是先给大家捋捋物理接口,协议,还有最终读写速度的关系。大家都知道计算机或者手机的设备里面会有很多个不同的部件,比如处理器、显卡、运行内存、储存硬盘、网卡等等,各部件和处理器,或者各部件互相都要不断传递数据。
而它们传输数据的物理通道就叫总线,用来走实际上的电信号。我们常听见的 SATA,PCIe 这种就是不同类型的总线通道,它们通常和北桥南桥直通。
北桥可以理解为处理高速信号的芯片,可以说是直连 CPU,PCIe 一般就是连它;南桥可以理解为处理低速信号的芯片,比如 SATA 和 USB 都是连它,不过现在 Intel 和 AMD 都把它们整合进 CPU 里面了。
总线可以有很多条通道,具体取决于主板和处理器能够支持多少通道。每个通道能传输多少数据量就叫做带宽,每个通道的带宽乘以接口占用通道数,就是这个接口能够传输的速度理论上限,不过实际上速度要比理论上会低不少。
比如我们用来插显卡的那个接口就是 PCIe 16X,下面通常会有的短短的接口是 PCIe 8X,有的主板会把它们做成同样长的,注意观察,里面有一半没有针角的就是 8X,主板上面也会有标注。
按照上面的算法 PCIe3.0 16X 单通道的插槽速度能达到 16Gb/s,而 8X 只有 8Gb/s,所以把显卡等需要高带宽的设备插上去前,要先确定接口是多少通道的,不然插错了高端显卡性能减半就血亏。
另外还有一些主板是共享通道,也就是说主板上所有插槽合起来就这么多个通道,比如主板宣称 16 条共享通道却有 16X 和 8X 两个插槽,那么当第 2 个插槽插东西时,第 1 个插槽也会变成 8X,这就是所谓的抢速度,有时候明明你把一个固态硬盘直接插到主板上对应的插槽,速度还是上不去,可能就是因为其它设备在抢 PCIe 通道,所以还蛮需要注意主板参数说明的。
物理接口就是提供两个设备之间的一种连接方式而已。比如主板和硬盘通过 SATA 接口来连接,那么实际的电信号则是从接口那里通过不同总线来传输到处理器的。而规定数据如何传输,如何沟通,每次传输多少数据,怎么打包等等我们就叫他协议。
简单理解版本:总线就像管子,它只提供一个通道,多通道就是很多根管子,不管里面是水还是油还是其它什么都可以传输。不同的公司就能用这些管道来运送自家的商品,比如矿泉水公司就可以将矿泉水打包成小瓶,大瓶,一箱等等方式通过管子来运;食用油公司也可以将油打包成不同大小的瓶子,通过管道来运,这些公司就是接口,他们规定的打包方式外包装要用什么车或者飞机运,要运多快等等就是协议。
可以看到,其实物理接口并不能决定最终数据是怎么传输的,协议才能决定最终数据传输的方式,这也是为什么我们能够用转接线把一个接口转成另一个接口,还能够正常使用,因为转接口中间通常会有一个芯片,来将数据从一个协议的形式转换成另一个协议的形式。
我们现在已经没有在使用的机械硬盘接口有 ATA,SAS,SCSI,光纤口(FC)等,我们现在在使用的机械硬盘接口基本上就 SATA 了,不过注意只有中间 L 型的这块才是 SATA 的数据接口。
总线规定死了数据传输速度的物理上限,SATA 接口使用的是 SATA(AHCI) 协议走的也是 SATA 总线(是不是有点套娃),按照 SATA3.0 总线,传输上限就是 700MB/s,还是能满足机械硬盘需求的,不过即使你把一个高速固态硬盘插到 SATA 接口上,撑死也能跑 700MB/s 而已,这就是物理的上限。
而协议也决定了速度的上限,有两种方式,一个是就是同样的接口,但更新协议版本开放更高的速度上限。这和处理器的处理性能有关,也就是说物理接口和总线能够传输更高的速率,但是处理器处理不过来,就会通过协议来控制速度传输的速度。另一种情况是协议随接口更新,比如 USB3.0 接口推出之后用的是 USB3.0 协议,所以 USB3.0 接口和 USB2.0 接口是不一样的东西,只是为了保证兼容性,把它们做成一样的而已。通常新接口为了兼容都是会把旧接口作为它的子集,在旧接口的基础上加两个针脚或者改改电路等,这样子新接口的物理传输速度是提高的,所以需要新的协议充分地利用这个接口。
机械硬盘速度和寻道时间比较慢,所以对接口要求也不高。现在高速固态硬盘通常都是另外的走 PCIe 的接口,而不继续使用 SATA 也就是这个原因。
数据通过不同的接口走不同的协议,最后通过不同总线到处理器的过程,实际的速度取决于这其中最慢的那部分。另外一些奇奇怪怪的接口,混插兼容等等的内容,我们会在下一章介绍完固态硬盘之后一起来讲。
原本不同类型硬盘(不同颜色不同技术)和叠瓦盘的简单介绍是放在本章节中的,不过由于现在的内容和文章长度都比较足够,这个部分相关的原理和参数,出于篇幅考虑就放在后面机械硬盘选购的章节来讲了。
参数再美丽,实际使用中也是要跟得上才行,所以我们也要了解一些跟机械硬盘实际性能有关的参数。
在实际用文件测试之前,我们可以先用硬盘测试软件来给硬盘做个性能测试。储存设备测试领域基本上用两个大名鼎鼎并且很老牌的软件就足够了,它们分别是 AS SSD Benchmark 和 CrystalDiskMark。
基本上评测人员、UP 主、YouTuber 甚至商家在商品详情里用的性能测试软件都是他俩。
我们用爱国者 2T 的移动机械硬盘为例,分别在两款软件上跑一下分:
跑完分之后我们来看一下这上面的参数都代表了啥。
4K 后面跟着数字是指线程的数量,CrystalDiskMark 里面则是用 Q 和 T 来表示, Q32T1 代表 32 队列深度(也就是一次性发送多少个请求) 1 线程(同时发送多少个队列)。
这部分模拟多线程的多文件读写,机械硬盘在这方面依然提升不是很大,因为磁头只有那么多,再怎么做线程,最后还是要这个磁头去读取,不过因为队列可以放到缓存提升一些速度。不像固态那样有主控,可以支持多线程多队列读取写入数据。
至于剩下的选项主要就是测试容量的选择,这部分基本上是越大越准确,但是用的时间会比较长,保持默认 1GB 就可以了。另外 CrystalDiskMark SEQ1M 里面的 1M 指的是每一块大小 1MB,也就是说 1GB 的写入量会分成 1000 块,而两个软件的 4K 读写则是生成 512KB 大小的多个文件,然后以 4K 为单位随机挑选扇区写入数据,测出最真实的速度。
随机读写部分是最能反映我们日常使用体验的,因为系统和软件运行本身就会经常读写文件,我们平时复制粘贴的文件常常也不是单个文件,这个时候就会发现机械硬盘速度远远满足不了我们的需求。很多人换成固态硬盘之后开机时间飞速提升,就是因为随机读写能力提升了。
现在机械硬盘容量大,大家可能不太会发现,但是之前硬盘容量不大,大家用着用着就会发现机械硬盘快满的时候速度也会下降。
首先一般机械硬盘的文件数据是从盘片外侧写到盘片内侧,内侧周长变小,然后同样时间划过的路径变短,读取的数据自然就少。因为这个原因,机械硬盘到差不多满的时候会慢一点点,但不是主要原因。
和固态硬盘因为缓存用完降速不同,机械硬盘容量不足时降速主要还是文件碎片的问题。机械硬盘上放得文件越多,产生的磁盘碎片就越多,也就是说更难找到一块儿连续的扇区去写入。这个时候如果想要写入文件,就必须将数据分散在不连续的散区,就导致无论是读还是写这些文件都会有更多的寻道时间,速度自然就慢了不少。
但比起固态硬盘,机械硬盘低剩余容量带来的速度影响其实不大。
相关链接:
[1]. AS SSD Benchmark 下载地址。
[2]. CrystalDiskMark 下载地址。
以前我们嫌机械键盘速度慢的时候,经常会在网上搜一些文章,它们通常会让你去做磁盘碎片优化,然后机械硬盘的速度就能提升。那么磁盘碎片是什么,它是怎么来的,为什么要优化它?
最常见的产生文件碎片的情景就是对文件修改。
举个例子,我们连续写入文件 A 和 B,A 文件占了 5 个扇区,B 文件跟在 A 后面。某一天我们对 A 文件产生修改,比如加了占用两个扇区的内容,这样添加内容在 A 和 B 中间是没有地方放的,只能放在 B 后面,于是 A 文件的数据就这样被分成了两块,我们就可以说 A 文件变成了两个碎片。如果是删了两个扇区的内容,A 和 B 中间就空了两个扇区,一般来讲新文件会无视这些空扇区在尾部连续写入,但如果空间不足的话,也只能填到这些扇区里面,导致把新的文件变成碎片(甚至更碎)。
操作系统,应用程序甚至我们自己都会无时无刻对各种文件产生修改,于是磁盘碎片就会随着时间越来越多。这也导致了我们上面提到的文件越多,机械硬盘速度越慢,一个文件如果变成两个碎片,那么读取它就会多一次寻道时间,也就是多出几十毫秒,碎片越多速度下降越严重。
而磁盘碎片优化就是对整个磁盘进行一次全盘扫描,统计出所有文件以及它们占用的扇区,然后一个个移动搬运,使它们变成连续的扇区。
用过 Windows 磁盘优化工具的小伙伴都知道优化过程中文件越多越耗时(其实自带的工具很拉,用第三方会快很多),并且优化后仍然会产生新的文件碎片,所以还需要定时优化。而固态硬盘是没有磁盘碎片问题的(虽然会有其它类似问题),对固态硬盘进行磁盘碎片整理反而会损害它的寿命。
现代的计算机系统上,其实我们已经不用太管这些了,比如 Windows10 就能自动识别是固态硬盘还是机械硬盘,来打开关闭磁盘碎片优化,也能够空闲时自动优化,不需要我们再管它。
最后给大家一个好玩的软件:UltimateDefrag6,文章逻辑分区的截图都是用它来截的,虽然本质是一个磁盘碎片整理工具,但是它可以清楚地用盘片形状来展示你的硬盘上所有扇区的使用情况,还可以用颜色划分不同类型,下回来看看自己的硬盘使用情况也不错。
看到这里关于机械硬盘原理的部分就讲完了。说实话,即使把原本的部分内容移到后面几章,又精简了一下,这篇文章还是有点超长了。主要是基础部分比较多,了解清楚之后比较容易了解固态硬盘等其它储存设备的原理,也能帮助大家更好地选购和使用。
其实还有很多可以介绍的,比如常见不同类型的硬盘区别,要空气盘还是氦气盘,要垂直还是叠瓦,还有混合硬盘等其它新的硬盘类型……因为篇幅的原因我就放到后面的选购章节了,刚好让大家购买之前好好了解了解。
机械硬盘毕竟已经出现很多年,性能速度都不及下一章我要开始介绍数码时代新王者——固态硬盘。下一章我将带你了解固态硬盘的结构原理,各种参数如何解读,又是如何查看实际性能的。
大家有什么疑问都可以在评论区提问,我会尽量解答大家的问题。