存储巨兽:希捷双磁臂硬盘Exos 2X14的前世今生
梭鱼罐头
编辑于 2022年07月27日 19:13

前言

这原本只是一篇单纯的硬盘测试专栏,然而想写的东西越来越多,最后变成了现在这个长度(悲)

硬盘本体的测试在后面,前半部分大家当科普和故事会看个乐子就好。长文写作不易还希望大家多多支持_(:з」∠)_

引子

如果要将过去20年机械硬盘(HDD)的发展用一句话总结出来,便是“不择手段地内卷!”

因为机械硬盘的内部结构虽看似简单,但隐藏在其简约表象之下的则是长达65年的技术积累,其复杂程度完全不亚于微处理器的制造!可以说,当代HDD生产已经用上了几乎所有的物理学分支,从空气动力学到量子力学,样样都有涉及。

而之所以说“内卷”是因为机械硬盘厂商需要在做到上述的同时,还要找到方法进一步降低成本和提升产能,这样才能在竞争激烈的HDD市场上分得一杯羹。

机械硬盘厂商到底有多“内卷”呢?请看下面这张图:

可以看到,HDD市场的并购在过去是十分频繁的。而在这张图里并未展示的还有多达二百余家在更早便已被收购或倒闭的厂商。

在这场内卷之后,剩下的“卷王”们似乎都不约而同地找到了效益最大化的设计。说人话便是现代不管是哪一家的机械硬盘,无论标榜有什么功能,内部设计总是千篇一律。全然没有8、90年代那种“百家争鸣”的内部结构。

说起“百家争鸣”的结构,其中一个很经典的例子便是康纳(Conner Peripherals)于90年代推出的“Chinook”硬盘。在90年代早期,很多硬盘厂商已经开始通过提升硬盘的转速和内置缓存以达到更高的性能,但康纳却因技术原因迟迟无法从每分钟3600的转速中脱身。眼看着竞争对手已经开始向每分钟4200甚至5400转进发,康纳的工程团队“急中生智”想了个馊主意:在硬盘中内置两个用于读写数据的磁臂。

这Chinook硬盘说怪是真的怪。为了塞下多余的一个磁臂,区区3.5英寸标准的盘腔已经容不下它了。这款硬盘采用的是庞大的5.25英寸规格,和光驱大小差不多,但使用的却是和普通3.5英寸硬盘一样大的碟片。而为了避免两个磁臂的信号相互干扰,康纳可谓是下了血本:在电路板上使用了两套处理器及控制电路,分别处理来自两个信道的数据。

如此大费周章下来对性能的提升倒也是是立竿见影的。相较于普通的硬盘,Chinook硬盘可以自动将读写指令分配到两个磁臂上执行,将性能提升了近一倍。

Chinook的设计无疑是成功的,但它也注定是一个失败的产品。碟片尺寸的硬伤使得它在容量上不敌普通的5.25英寸硬盘,而高成本又导致其在价格上被多硬盘组建的RAID阵列碾压。

随着康纳在1996年被收购,这款标新立异的产品也慢慢淹没在历史的尘埃中……

HDD的“冷却”

进入21世纪,随着互联网的爆发式增长,对数据存储的需求也愈发突出。尽管固态硬盘(SSD)近几年在消费市场大显神通,单体出货数量甚至已经超过了机械硬盘;但对于数据中心来说,HDD便宜大碗的优势在可见的未来依然无法被SSD取代。

数据中心用的所谓“企业级”硬盘实际上有个专有名词:近线(Nearline)盘。近线盘的特点也很鲜明:3.5英寸,7200转的企业级硬盘;在提供较高性能的同时追求最大的单体容量,以降低每TB的成本。

但随着近线盘容量的稳步提升,一个问题逐渐浮现了出来。

下图为两块近线盘的测试数据:

可以看到,右边硬盘的容量相较左边翻了接近一倍,这当然是数据中心求之不得的好事。但如果注意到红框中的“存取时间”,我们发现这两块硬盘随机读取的平均时延都在12毫秒左右。换句话说,这两款硬盘的io性能,即每秒可以进行随机读取的次数都是差不多的:80iops

这对于数据中心来说有什么问题吗?问题大了!

假如你是为B站提供视频分发服务的数据中心,那么你很有可能会采用所谓的“分层式存储架构”——即把时下最热的视频存储于SSD甚至内存这样io性能极高的设备中,这样当几千甚至上万人观看同一条视频的时候,服务器可以迅速地从中取用内容。当然,以上仅仅是一个大幅简化的图景,真实的内容分发网络远比这复杂的多。但不管怎样,当视频的热度最终降低,这时再将它们存储在昂贵的固态硬盘上显然就不太合算了。于是这些视频便会被转移到它们的最终归宿——机械硬盘上。

一块10TB的机械硬盘大约可以存储10万条视频。而我们假设其io性能可以满足100个用户同时访问其中的内容。那么,一块可以存储18万条视频的18TB硬盘按理来说是应该支持180个用户的。然而,由于前面所说的原因,其io性能的瓶颈意味着用户数量只能被迫维持在100个。这对于数据中心来说是一个很大的浪费,因为这意味着机械硬盘只能被用于存储对性能越来越不敏感的数据;用专业点的话讲,就是HDD适用于的存储场景越来越“冷”了。

如何提升HDD的io性能?这个问题随着硬盘单体容量的增长从几年前的“较为紧迫”变成了现在的“性命攸关”。许多数据中心对于性能敏感型用途的近线盘定下了一条死线:不得小于5iops/TB

而第一个接受这个挑战的,正是康纳的收购者——希捷。

历史的重复?

常言道“工欲善其事,必先利其器”。如果要着手解决机械硬盘io性能不足的问题,最好先了解这个问题的根源。

上图为一块现代HDD的经典结构。首先映入眼帘的是位处中心的“镜子”,或者说磁碟。磁碟由中央的主轴电机带动,根据型号的不同,其转速最多可达每分钟15000转。磁碟(大幅简化)的结构是由铝或微晶玻璃所构成的基板,以及溅射于其上的极薄的磁性涂层。而涂层记录的则是密密麻麻被磁化的同心轨道,也就是所谓的“磁道”

而数据的读写靠的则是位于磁头组(HSA)尖端滑块上的读写磁头进行。

现代硬盘的滑块(Slider),其通过刻蚀获得的特殊空气动力学形状使得磁碟旋转产生的气流可以在滑块下方形成一个纳米级厚度的气垫从而悬浮在磁碟表面上。位于滑块顶端的读写磁头在图中是不可见的,因为它们的大小必须和磁道处在同一量级(纳米级)

位于磁头组另一端的则是音圈马达(VCM),它的工作原理与喇叭类似。如果读者曾经拆过喇叭便会知道,在扬声器中有一个导线制成的线圈(音圈)、一个永磁铁以及一个振膜。当电流通过音圈的时候,由于电生磁,在它的周围便会产生磁场。这个磁场与永磁铁的磁场相互作用从而吸引或排斥音圈,与音圈相连的振膜也会因此被带动,产生的振动传播到空气中便是声音。而在硬盘的音圈马达中,原理其实是类似的。只是在这里,音圈带动的不是振膜,而是磁头组。

那么,硬盘随机读写的存取时间又是怎么来的呢?

当一个读/写指令被硬盘接收,首先会经过主控及音圈马达驱动芯片的处理,这里的延迟可以忽略不计。接下来,磁头组经过加速-巡航-减速三个阶段,从当前的磁道移动到数据需要读写的磁道附近。最后,磁头通过磁碟上预先记录的伺服信息锁定住目标磁道。

这样一个动作被称为“寻道”。而不难看出,影响寻道时间的因素有很多。

最显而易见的一个是距离。磁头在一个寻道动作中移动的距离被叫做行程(Stroke),行程越短对应的寻道时间也就越短。这也是为什么大部分高转速硬盘的磁碟都很小的原因之一。如果测试不同行程寻道所花费的时间,平均下来便是“平均寻道时间”

其他影响寻道的参数还有磁臂的重量,音圈马达磁铁的大小,加减速的急促程度等等。总地来说,现代7200转近线盘的平均寻道时间大多都在8毫秒上下。

7200转与15000转硬盘的内部对比。注意磁碟和音圈马达磁铁的大小差异

现在,磁头已经锁定在目标磁道上了。但这意味着可以马上读写数据了吗?

由于主轴电机只朝一个方向旋转,因此数据块也许近在咫尺,马上就能转到磁头底下;又或者刚好错过磁头,需要“等待”磁碟转一整圈才能再次相逢。

平均下来,这个“平均等待时间”正是磁碟转半圈所需的时间。显然,平均等待时间和转速是直接挂钩的。7200转硬盘的平均等待时间为4.16毫秒,而15000转只需要2毫秒。这也是高转速硬盘随机性能优越的另一个原因。

在我们的例子中,需要读/写的数据块很小,因此数据实际读写和处理的时间也可以忽略不计。

最后,将平均寻道时间和平均等待时间加起来,便是平均存取时间。现代7200转近线盘的存取时间可以做到12毫秒左右。

平均存取时间 = 平均寻道时间 + 平均等待时间

而这又让我们回到io性能瓶颈的问题上。

有没有什么办法能提升硬盘的io性能呢?让我们首先从显而易见的方面开始考虑。

传统提升硬盘io性能的方式很简单:提升转速。高转速硬盘除了平均等待时间更短,其磁碟也做得更小以缩短平均磁头行程;小磁碟所需的磁头组更短,意味着其惯量更小;而省下来的空间还能放下更大的音圈马达以减少寻道时间。

但这样做的弊端也有很多。首当其冲的便是缩小的磁碟与近线盘追求大容量的目标相违背,更不用提主轴和音圈马达能耗的问题了。

3.5英寸万转盘最大也只做出了4TB,最后还由于成本问题而胎死腹中

那么,从提升寻道机构性能的方面入手呢?

这个方面最大的问题是近线盘的寻道机构已经找到了一个完美的平衡点:如果要在此基础上降低哪怕是一点点寻道时间,音圈马达的能耗也会成倍增长;往磁碟上记录更多伺服信息则会占用宝贵的用户数据空间,况且顶多一两毫秒的提升只能用“杯水车薪”来评价。

从硬件上提升看来是行不通了,那么从软件上优化如何?

实际上,数据中心在软件方面已经黔驴技穷了。对于写入来说,数据中心可以使用SSD缓存的形式来提升性能。而主要的性能瓶颈其实是出在读取上面,因为从HDD中提取数据就不能依赖缓存了,所以这里只能依靠于纯机械的性能。

另一个研究方向是在盘内也实现类似“分层式”的存储:将访问频繁的“热”数据存储在磁碟的外圈,而“冷”数据存储在内圈。这样热数据的磁头行程可以被限制在外圈内,而且也能享受到外圈顺序读写速度快的优势。但朝这个方向发展会导致数据管理变得异常复杂。而且如果冷数据不多的话,内圈绝大部分空间实际上是被“浪费”掉的:一个18TB的硬盘只能用外圈的1TB,这是谁也不想看见的事情。

最后,这个问题还是得硬件工程师来解决。

既然单个磁头组的寻道性能已经到了极限,那么,把两个磁头组封装进一个硬盘里如何?

一时间,康纳双磁臂硬盘的历史似乎又要重演……

MACH.2

为了避免重蹈康纳的覆辙,当务之急是找出一个在成本上可行性比较高的设计。

要实现双磁臂,有两种可行的方案。

其一是把康纳的专利遗产重新捡起来,做出类似Chinook那种“针锋相对”的双磁臂设计。

但这个设计最大的绊脚石是:时代已经变了。与90年代不同,今天许多行业标准已经成为了规范,其中之一便是硬盘的尺寸规格。3.5英寸硬盘的外形大小必须限制在这个规格之内,而这就给此类双磁臂设计设下了很大的障碍。由于硬盘的长度被限死了,因此为了塞下两个磁臂,磁碟的尺寸需要“缩水”,进而直接影响硬盘的容量。

另一个选择是将两个磁臂上下堆叠,共用一个枢轴(Common Pivot),这样就无需缩减磁碟的尺寸了。而且这个设计方案对硬盘内部结构的改动更小,因此更保险一点。

出于成本和成熟度的考量,最终第二种方案被确定了下来。希捷将此项技术命名为“MACH.2”

经过数年的开发,首款基于MACH.2技术的硬盘:Exos 2X14(Harrier)正式发布。其容量高达14TB,使用8张磁碟,每个磁头组负责其中的4张。

up主有幸搞到了2X14好盘和坏盘各一块,所以这篇文章不仅会进行性能测试,还可以拆开这款硬盘一探MACH.2技术的究竟。

PCBA拆解:

Exos 2X14

Exos X18

拆下电路板,首先能注意到的是Exos 2X14的磁头组连接器由单磁臂Exos X18的触点式变为了卡扣式。其原因可能是两个磁头组所需的连接数量翻倍了,因此使用密度更高的卡扣式连接可以节省空间。

另一个令人惊讶的事情是,Exos 2X14似乎所有芯片都“超级加倍”了。两个主控(MCU),两颗缓存,两个音圈马达驱动芯片等等……

其原因还得归结到MACH.2选定的设计方案上。由于两个磁头组是上下堆叠的设计,因此一个磁头组无法顾及另一个磁头组盘面上的数据,这时如果要再学康纳弄所谓的“智能分配io”难度就很大了。况且在产品内测的初期,许多客户都要求独立控制两个磁头组的能力。因此希捷干脆“一不做二不休”,把两个磁头组彻底分开,当作两块独立的硬盘来对待。

这也是为什么电路板上会有两个主控和其对应的缓存颗粒的原因:MACH.2实际上是将两块小容量硬盘封装进了一个3.5英寸外形规格的硬盘里面。这样做,不仅达到了提升io的目的,相比购买两块独立的硬盘还有成本、功耗和盘位节省上的优势。

盘体拆解:

拆开Exos 2X14,可以看到里面的两个磁头组以及8张磁碟。注意上下两组磁碟之间的空隙为了放下两个磁头组特意加大了。

更多关于这款硬盘的盘体拆解图和运行声音可以参考up前段时间的这个视频:

双磁臂浅测

需要注意的是,Exos 2X14是一款SAS接口的硬盘。其原因是SAS所用的SCSI协议拥有一个叫“逻辑单元号(LUN)”的功能。它的作用就是将单个接口的物理磁盘在系统中显示为多个逻辑磁盘(LUN)。说人话就是,这项功能可以将Exos 2X14在系统中显示为两个7TB容量的硬盘。

up使用的是超微的AOC-S2308L-L8i直通卡(IT模式),这张卡是SAS 6Gbps的老卡了,如果同时对两个LUN进行顺序读写可能会导致性能受限。因此建议想要用这款盘的老哥上SAS 12Gbps的直通卡。

接上硬盘进入系统,磁盘管理中显示的果然是两个7TB的磁盘。

两个LUN的HDTune基准测试(块大小1MB,默认精确度):

LUN0

LUN1

可以看到,两个LUN的顺序速度都达到了近线盘中较高的水准。其中一个LUN的最高读取速度甚至达到了294.6MiB/s。但细心的读者可能会发现其存取时间离普通近线盘小于12ms的水准还差点意思。其原因是由于两个磁臂处于同一个盘腔内,一个磁臂寻道产生的震动势必会影响到另一个磁臂的正常工作。为了解决这个问题,希捷工程团队将两个磁臂的伺服系统相互耦合:当一个磁臂进行寻道,另一个磁臂的伺服系统将会对产生的加速度进行补偿。希捷还对寻道动作进行了微调:对于短行程寻道,其加速和减速相比单磁臂硬盘更为平缓,这也是为什么Exos 2X14的存取时间略长的原因。

对于很多读者来说,第一个想到的便是组个RAID0,体验下宣传中“高达524MB/秒”的极速。但RAID0其实是对这款硬盘性能的糟蹋(RAID对io性能几乎没有提升)。而且很可惜的是up这张直通卡在组建RAID0之后由于性能受限,跑出的速度很不尽人意,因此这里就只能跳过这一环节了。

不过,数据中心最关注的“io性能提升”还是能测一下的。使用iometer进行4KiB随机读取测试,在单队列下,每个LUN都达到了约80iops的水平,与普通的近线盘性能类似;而同时访问两个LUN则实现了性能的翻倍:超过160iops

LUN0

LUN1

LUN0+LUN1

而根据希捷的数据,对于较浅的队列深度,MACH.2硬盘的随机读性能在多个传输大小上都达到了单磁臂硬盘近2倍的性能。

下一步……

推行双磁臂技术普及的下一步便是做出部署成本更低的SATA接口硬盘。由于SATA所采用的ATA协议并没有LUN这个概念,因此这类双磁臂硬盘在系统中只能识别为一个磁盘,其前半部分和后半部分的LBA分别属于两个磁臂,可以在软件层面分割成两个逻辑磁盘。第二代采用MACH.2技术的Exos 2X18(Osprey)就提供了SATA、单LUN SAS和双LUN SAS三种选择。

在未来,随着硬盘容量的继续增长,更多磁臂的出现也不是不可能。MACH.2技术的出现告诉我们,即使到了今天,这项拥有65年历史的古老存储技术依然充满着创新的活力。希望在未来,这个看似“简约”的神奇小盒子能带给我们更多的惊喜。

up主讨论群:946998134