虽说春节家假期过半,当各家都忙着在朋友圈里晒美食、晒出游、晒风俗、晒人生的时候,一向低调的《大话存储》系列图书作者冬瓜哥则晒的是自己的绝技。随着PMC被Microsemi收购,从PMC架构师转型为Microsemi架构师的冬瓜哥宣布其最新的一项存储专利技术——一项针对SMR HDD通过建立逻辑磁盘与物理磁道之间映射的存储系统来优化SMR HDD的读写效率。也许出于时间关系,冬瓜哥并未在其文章中详细解读其专利的实现细节以及创新的作用等情况。为此,笔者希望在这里依据其专利披露的相关信息做出更多解读,以飨更多存储爱好者。毕竟由于笔者水平有限,如有不当之处,还望指正。
US Patent P/N 9257144为谁而来?
在冬瓜哥的那篇文章《冬瓜哥的一项新存储技术专利已正式通过》中,我们得知冬瓜哥的最新专利技术专利号:US Patent P/N 9257144,冬瓜哥还解释这“是一项针对SMR磁盘性能优化方面的技术专利”。显然,US Patent P/N 9257144当然是为SMR磁盘诞生的。
但是更进一步的问一下:您是否知道US Patent P/N 9257144针对SMR磁盘来说为何值得创新?估计各位看官就开始一头雾水了。更有甚者,对于SMR磁盘也是头回听说。显然,要说清冬瓜哥这项在美国存储专利领域留名的大作,还要从SMR磁盘讲起。
SMR是磁盘的巨大创新,但鱼和熊掌岂能兼得?
如今的存储介质的最前沿创新或许在3DXPoint上,但当前风头最盛的是闪存,而从市场的实用占有情况看,说HDD成为明日黄花还为时尚早。为此,业界还有必要在HDD上下些功夫。而SMR则是HDD领域值得称道的创新。
有了闪存之后,人们或许看到了在HDD带宽上的增效努力往往是徒劳,创新更多聚焦在了单位体积内容量的增加上面。为此我们看到了在标准的3.5英寸盘体内有着更多硬盘容量的不断创新,6TB、8TB等大容量硬盘相继诞生。
但最初的创新遇到了一个瓶颈。
早先同样大小盘匣内容量的增加有赖于在在垂直高度上盘片的增加。把盘片做的更薄,但这样的创新会很快遇到瓶颈。盘片不能无限的薄下去,盘片愈加薄对相应的机械部件制造工艺也带来前所未有的难度和稳定性考验。那么接下来就不得不促使业界需要在横向上思考创新。
传统的磁盘盘片是一个由多个环形磁道组成的同心圆平面,类似于平常所见的光盘。磁盘数据的读取是有由盘片旁边的机械臂驱动磁头,在盘片的相应磁道上读取其中的磁信号来实现的。由于各个磁道并不相互覆盖,故而限制了盘片容量的大小。磁盘在横向上创新上思考,则从能否让磁道堆叠起来取得了突破。SMR磁盘由此诞生。
在SMR技术之前的磁道技术为水平磁记录(LMR)或是垂直磁记录(PMR)技术,典型特点就是同一盘片的各个环形磁道处于同一平面。而SMR技术即“叠瓦式磁记录技术”则将磁道变得很窄,甚至窄过了写磁头的宽度——这使得其看上去类似于屋顶的层叠瓦片。这就意味着硬盘盘片上的数据组织的结构发生了质的变化,数据存储方式也需要作出更为深层的调整。SMR是磁盘的巨大创新,有效地提高了磁道密度和单位面积存储密度,10TB的大容量硬盘迅速成为现实。
能在盘片上“塞进”更多磁道不仅是SMR技术的实现特点,相应的,SMR硬盘的读磁头不得不只有普通读磁头的一半大小。
这时读者或许会问,读写磁头为何不做成一样大小呢?写磁头本质上是一个电磁铁,只有足够大才能产生足够的磁力来磁化盘面上的偶极子。而读头只是去感受偶极子的磁场线方向的变化,信号放大的工作交给磁盘电路板上的芯片来完成。
回到正题。由于堆叠,SMR硬盘的磁道变得更更窄,写磁头不得不跨磁道操作。这样带来的后果就是带来不必要的写放大(write amplification),即《大话存储》中称之为的“写惩罚”。
以上图为例,在Band A内,写磁头在Track A上的新操作也会同时将数据写入Track B,而此时Track B上与Track A上相同的数据显然是不必要的;继而新写入Track B时同时也会将数据写入Track C,同理Track C上与Track B上相同的数据显然是不必要的。倘若此后需要对Track A的数据进行修改写入,Track B上原有的数据不得不做闪转腾挪,先将受到Track A上写入操作的Track B地址的数据读出到缓存中,待修改Track A完毕之后再将Track B上的数据从缓存中迁回。如此写放大,不就是闪存上的把戏么?但HDD的那令人汗颜的IO速度却玩不起这个游戏。尤其是,当SMR硬盘面对着大量的随机数据写入的时候,真是伤不起!
尽管SMR技术能提高数据存储密度,但却增加了对数据随机写入的延迟。正应了鱼和熊掌不可兼得的道理。
业界为了“兼得”也做出了一些努力,如通过把要写入的大量随机数据进行积累,从而形成顺序写数据。这种方法虽说对SMR HDD的写速度有一定改善,但却影响了顺序读的性能。
显然,SMR硬盘还有很大的创新空间。US Patent P/N 9257144则创造了一个新的机会。
可写不可写可写不可写可写不可写……
冬瓜哥提供的US Patent P/N 9257144方法首先就跳出了在磁盘上写入的惯性思维–既然,SMR技术将相邻磁道堆叠带来的不小的写惩罚,数据写入又何必墨守成规一个磁道挨着一个磁道写呢?为此US Patent P/N 9257144提供的思路就是当一个磁道写满后,跳过相邻磁道,在下一个磁道进行写入。正如冬瓜哥所说“写满一个磁道之后,下一个相邻磁道不写入,到下下个磁道继续写”。例如下图,当写满Track A时,不考虑Track B、Track C,直接跳到Track D写。由此,再看原来的磁道排列就变成了可写磁道、不可写磁道、可写磁道、不可写磁道、可写磁道……这样的有序排列。
这里的规矩是,US Patent P/N 9257144将原有SMR HDD的磁道划分为可写磁道和不可写磁道。不可写磁道夹在两个可写磁道之间,两个可写磁道之间不可写磁道宽度取决于至少一个写磁头宽度。
按照这种方法写入的好处是,当对Track A的数据进行写入的时候,对于相邻磁道数据的误覆盖就不用操心了。这里需要特别解释的是,以上图为例,Track A的相邻磁道Track B并非实际的“不可写”,而是把Track B当成了垃圾带,Track A写满之后的有用数据已经放在了Track D上。两个可写磁道之间不可写磁道宽度为至少一个写磁头宽度有效保证了写入对相邻磁道的影响,保证了在写容量在达到可写容量一半之前时写放大为零。
由于设立了很多不可写磁道,此举显然是用空间换时间,正如冬瓜哥所说“代价是在前期牺牲一半的容量”。不可写磁道也并非永远的不可写,当可写磁道容量用尽时,不可写磁道可以转换为可写磁道,写法依照此前的可写磁道。只有当跳磁道写法用尽时,“再进入CoW或者RoW过程,转到目前普遍使用的类似NAND Flash底层的处理方式上”,也就是回归SMR HDD写入的传统方法。
由于可以采用一阵间隔磁道的写入,在此段时间内也避免了此前SMR HDD遭受的写惩罚,也就从整体上提高了全盘对于随机写数据的操作时间。“该技术的优势是,保证数据的连续性,而不是当前普遍的方式下所带来的上层的连续地址读到了底层被转换为随机地址读”。前期更快的响应写请求,可以让整个系统在后台做充分的优化。
怎样做的?
刚才说了,冬瓜哥提升SMR HDD随机写性能的专利方法是建立跳磁道写,需要设立不可写磁道。然而,并不是要那些磁道真的“不可写”,而是临时性的写不上去。当最初开发的可写磁道用尽时,不可写的磁道也就可变为可写。冬瓜哥的具体实现可不是靠挪动磁道来实现的。
要知道,用户对于磁盘存储空间的感知并不是直接的,这之间经过了很多道关卡。正如上图,物理磁盘被划分为多个物理磁道,物理磁道又被规划为多个物理LBA,这些物理LBA与主机系统建立的逻辑LBA形成映射(map),一些逻辑LBA在映射成为逻辑磁盘。逻辑磁盘正如我们经常在“我的电脑”里看到的“C”“D”“E”盘等。这些“C”“D”“E”盘并非真正是底层磁盘的划分,而是经过多层映射的结果。为此,建立跳磁道的SMR HDD的写入规则就可以从修改之间的映射关系入手——物理磁道与物理LBA相对应,但物理LBA并不需要完全映射给逻辑磁盘。即将不需要写入的磁道不反映在物理LBA与逻辑磁盘的映射当中,当需要时间建立映射关系。
在US Patent P/N 9257144提供的实现中,物理磁道到逻辑磁盘指间建立了三个虚拟化层:最上层的IO引擎模块、中层的请求处理模块、底层的SMR物理逻辑磁盘。IO引擎模块发起IO请求,中层的请求处理模块完成逻辑磁盘到底层的SMR物理逻辑磁盘的逻辑映射。中层的请求处理模块既可以由纯软件实现,也可以由单独的硬件实现,还可以软硬件共同实现;请求处理模块既可以完成单独的盘管理映射,也可以实现多盘映射,如放在RAID控制器上。同时,请求处理模块也承担了多项智能感知功能,如自动学习IO特性实现等功能。
当前,SMR HDD的主要市场在于对顺序写顺序读有较大需求的市场,例如如交互式多媒体视频点播(VOD)、数据备份、网络磁盘行业。冬瓜哥提供的US Patent P/N 9257144方法在一定程度上提升了SMR HDD对随机数据的写入性能,而且在一定程度上不降低顺序读的性能,从而给整个系统提供了更大的后台优化处理的时间和余地,从而让SMR HDD对于拓展市场有了更多可能性。例如SMR HDD对OLTP数据库服务支持的可能性。