Lenovo存储系统高级工程师李军:SMR技术有关规范与应用探讨
各位领导大家好,非常感谢ODCC的各位老师和ODCC的会务组给大家提供这么一个见面的机会。
回想起30多年前我在学校的时候,有一次我的老师到美国去了,回来以后我问他,您到美国去学到什么东西了?那老师说Open,我们课堂上的同学哄堂大笑,Open,多low的一个词,Open还用学吗,改革开放,开放好像就是一个大家都会的东西,大家实际就像30年以后往前看30年,上次我在ODCC另外一个会上说过,Open是一个好说不好做的事情,你一个企业如果要保证自己Open,还能在业界生存下去,那你一定要很强劲的。为什么呢,你必须要把你想挣钱的很多东西放出去,Open出去,在这个情况下你还能跟你的竞争对手一样的方法,你去把你的客户抓过来,这确实很难。
Lenovo存储系统高级工程师李军
前两天Z公司被美国政府揍了一顿,实际上我们在台下的感慨就是,如果这个Z公司,比如他积极参加一些Open的标准的制定,他现在手头大概有十几个标准委员会的发言权,他手头参与制定了二十几个这个行业各个方面的规范,规范是双方面的,Open的东西是大家都要一起做的,但是Open的东西、没有写名的东西是什么,就是我单独这个公司我自己的专利,我的创新点,这些东西如果中兴手头有足够的东西,我想美国政府是不敢干这个事的。另外在朋友圈里有人就这个事情回答了一下,也是联想的倪光南老师曾经做的事情,我们要做一个office类似的东西,微软的office document文件系统架构不是公开的,要做一个东西,要能读微软的文件系统,能取代word,他要去找微软,微软当然不答应他。事情不是这样做的,换个做法,当时我们有金山,金山有WPS,中国有一套文件系统架构,当时的电子部如果组织一些人,组织一些专家,我们做一个规范,中国政府所有的要用的这种文件系统,doc文件必须怎么做,你的数据结构是怎么样的,倪老师把这些东西实现出来,然后要求Windows的word必须要能用这个文件系统,这不就结了。我们今天站在这里,我们要做的事情可能是我们现在要想到,从今天开始以后,我们后面的30年,我们这个事情应该怎么走,我们这个行业应该怎么走,这就是ODCC把这些竞争的厂商,我们的友商也在,我们共同的客户也在,大家在这个场合里应该谈的就是标准,标准就是大家商量好一块这样做,把蛋糕做大,把中国做强,这是Open的含义。
今天我想谈的是SMR的技术和这个技术有关的一些思考,SMR说实话大家都听说过,我就不仔细说了,大家只是有疑问,这东西有什么可谈的,鸡肋。SMR盘大家可能都测过,没什么好处,你们的测试工程师说不行,这东西又慢又不好使,OS又不支持,这是作为一个直接用户的测试工程师给你们的CTO、测试经理直接的反馈,但是为什么需要SMR,刚才我们供货商的这几个兄弟们也都说过了,没办法,为什么,这是一个技术局限造成的。因为硬盘现在的容量越做越大,硬盘的特性是,它的写磁头的尺寸不可能无限缩小,你把写磁头无限缩小下去,写场强是0,就写不上东西了,所以最小尺寸是有极限的,但是读磁头不一样,就是一个磁敏电阻,可以非常小,理论上做到两个纳米没什么问题。SMR这个技术方向是一个硬盘不得不往那走的一个技术方向,仅此而已。SMR现在你不用,总有一天你都得用,因为到某一天为止,除了这种SMR的盘,你没别的盘可用,事实就是这样。等到某一天以后,随着存储密度的增加,盘容量的增加,所有的东西,比如说HAMR、MAMR或TDMR,它的底层的写技术全都是SMR了,因为你要想把磁道写得更紧一点,除了叠着写的方法,没有别的方法。说实话,如果要是说硬盘要写得更加紧密,而写磁头的宽度是有限的,除了叠着写,没别的办法。这就给大家造成了一个很大的困扰,我这么叠着写,我随机写,目前随机写的概念,那就不行,我不能想在哪写哪一个,因为可能我写一个块就把另一个块删了。这是个问题,但是这个问题很大吗,不是这样的。咱们把时间拉到1948年,有个叫王安的博士申请了一个专利,叫(磁析)存储,他开了一个公司,一直活到80年代,这30年里他是固步自封的,随机写的概念是单bt的,任何一个bt可以想写就写,想读就读,当时是很先进的,当时在一个穿孔纸带的时代,任何一个bt可以任意改,绝对是很先进的。30年以后发生了什么事情,有一个叫比尔盖茨的人,他抄了一个叫CPM86的系统,最关键的一个问题是他引入了一个概念,他把这个随机存储最小块大小,从一个bt变成了512个bt,如果拿王安的角度来说,这个DOS,它的IOPs慢得不得了,如果你想做一个,如果当时我做一个测试软件,我来看看写一个bt,随机在任何一个地方写一个bt,DOS干的活和王安干的活,肯定是DOS慢得多,但谁活下来了,DOS活下来了,王安死了,为什么,现在大家接受一个概念,存储是分层的,你在什么样的level干什么样的事情,CPU里也是分层的,现在又有应存储、冷存储的概念,这里面有SSD,还有SATA、SAS,现在处理器处理数据的能力在急剧增加,我说的是占1983年的角度,1980、1986,比起王安的东西。实际上为什么这么大的数据块的存储方式反而比单bt这种IOPs更高的存储方式,它赢了,因为你在考虑一个IO的时候,其实不是IOPs是最要考虑的因素,而是要吞吐量,吞吐量一定要跟CPU的处理能力相对应,这才是一个正确的道路。这个图,我们现在比如SMR,它必须要512的字节,不是,256兆,当然它也可以512个字节、512个字节的写,但是有一个问题,只能从一个位置往后写。咱们假设一次就写256兆。现在在SATA/SAS规范里出现了两个规范,现在到了2.0版本,一个规范叫ZBC,一个规范叫ZAC。这两个规范大家一般来说觉得这两个规范是为SMR来设计,是这样吗?为了这么一个SMR,为了这么一个大家说的已经快死的硬盘,咱们费这么大劲,我做一个规范,至于吗,让它死了得了。不是的,ZBC这个规范不是给SMR做的,一会我说大家就明白了。在ZBC和ZAC中间还有一个叫SAT,现在简单看ZBC和ZAC定义了什么东西,两边都定义一个状态机,这个状态机给出的是最小存储单元,叫zone,主要是说zone一些状态的转换,大家可以看到ZBC和ZAC好像是互相抄袭,这两个委员会的人能这么干活吗,规范可以这么写吗,拿两份工资干一份活。不是这样的,这两个规范完全是互相抄袭,甚至状态机本身一模一样,是两拨人写的,但是一个东西。为什么会这样,我们现在存储系统里最基础的这些IO指令都是拿一个叫MINI SCIS做的,最底层的driver实现的是SCIS指令,如果要无缝连接把一个新的指令体系割过来,如果用ATA指令实现起来非常麻烦,在OS层面,比如现在read卡,内部的driver里面会把SATA指令和SAS指令做一个转换,两个规范用完全一模一样的状态机就能够让这个状态机,实际上有一个就可以了,后面仅做指令转换就可以,这样可以提高效率。第二,我为什么要做这么一个规范,我为SMR吗?真的不是这样的,如果紧紧为SMR,这个工作没有任何价值。现在大家考虑5G,现在马上面临5G时代,包括中兴为什么被罚,也直接跟5G有关系,谁让他跑那么快。但是5G有一个什么特性,每一个客户,因为带宽大,比如说我是一个手机的客户,我用5G,我在那看一个电影,我要求的速度肯定不可能是多大,不可能是比如0.3M/s,大家看这个测试图,我拿一个通用的大家都用的测试软件测的,右边这个图是企业级的SAS SSD,如果用随机存储随机读,虽然能够体现出高达12400IOPs,但实际上它的带宽、它的吞吐量是多少,每秒钟6M,这东西如果你用1MB的块来访问,应该能达到480M/s,所以如果你是一个CTO,如果你的供货商你的测试工程师跟你说,这SSD不行,它每秒钟只有6M,咱们5G不能用一个,现在5G一个通道可能需要10M容量,所以一个客户可能需要配两个SSD,这不可能的事情。这种事情不可能,你们为什么药用这种方法来测,大家知道只有在用4K或者更小的块来做SMR随机写的时候,SMR才表现的不那么令人满意。说实话,这是不对的,正确的方法是什么,要在这里面增加一个层级,大家现在看到的是目前的Linux文件系统一个架构,在磁盘里静态数据结构,会有一个super block,会有一个表,这是它的静态架构。大家看到的是Linux的标准文件系统,如果我做一个顺序读,实际上底层发生的是什么事情,这就可以解答大家一个疑问,为什么我在做顺序读的时候,我可以在底层监控到大量的写操作,第二,不是顺序在那读,在那跑来跑去的,Linux底层操作的时候,即使是顺序读,读一块要写一下,因为Linux文件系统有一个设计,访问完以后,你要写回你的IO的最后一次访问时间是什么。为了满足这个要求,一个顺序读就变成了读写、读写、读写,表现出来的速率可能30M/s,甚至更差。右边这个是建立一个create file,这是目前的文件系统的设计造成的。这是我用Iozone做的测试,左边是Windows 的,右边是Linux的,实际上Iozone代表了一种访问的方式,我现在抓的是随机读,在随机读里,可以看到文件系统里有一个操作叫SEEC,在Linux叫LSEEC,这是目前文件系统的底层操作,到目前为止,所有SMR的应用包括学术界的讨论,包括我们现在所有看的都是为SMR做一个文件系统然后解决不了问题,因为你的文件系统做得再好,如果你的应用程序这么跑应用,你白设计。这里有个关键问题,如果把SMR的东西用好,或者把zone block用好,我们必须把基础的存储单元做大。在随机写的情况下,如果块大小是1M,表现出来的IOPs是280,带宽是280M/s,这就是ZBC、ZAC设计的一个目的。为什么,我们要让我们的所有客户知道真正的在历史上来讲,随着这个CPU速度的增加,随着应用的扩展,这个最小存储块的增加是有趋势的。第二,虽然这个最小存储块的增加可能会给你造成一些额外的系统设计复杂度的增加,但是实际上能获得的是,对硬盘来讲是满带宽。如果你现在有一个文件系统,你现在有一个应用,你是SMR友好的,你每次写都是以256M以及它的倍数来做的。当然现在是没有这样的应用和文件系统里,如果你这样做,会达到什么样的东西。任何一个硬盘,因为最慢的现在没人要的SMR硬盘,可以达到单盘带宽起码200M以上,如果你不这样用,你就用这种传统的,想到哪就到哪去的,现在Linux所有的文件系统这样的东西,我去这读4k,那读4k,就算你用NVMe SSD,说不定还不如刚才说的方法来访问一个SMR的硬盘。如果你作为一个顶层的架构师,我们现在的这些友商们,我们的这些Winer你们要考虑到最关键的一点,如果你要用SMR的东西,你们照着SMR友好这个东西设计你的应用、设计你的文件系统、设计你的东西的话,甚至可以这么说,原来你需要100台服务器才能满足的带宽需求,现在用一台服务器就可以做到,原来可能用3-5个SSD能做到的,现在用一个最便宜的硬盘就能做到。这就是我说的竞争力,创新其实就在这里。
目前来讲,现在公开的所有的所谓的SMR友好的文件系统,它是不符合刚才我说的这些东西的。对SMR友好的东西,为什么我今天到这里说SMR这个概念或者说扩大存储块的概念,实际上推而广之可以用到非常多的地方,比如对象存储,比如云,比如所有的存储架构不是以512bt的基础来考虑问题,都是拿256M作为基础存储单位,来组织所有的基础机构,你能得到的东西是跟现在完全不一样的。比如你在这里是不是可以增加一些校验,增加一些链接,这就是区块链。最好的能够支持SMR的这个东西,如果要是用在SSD上,你能获得比现在用传统方法来存储的SSD更快更好的性能,你买100台服务器,说不定某种情况下买2-3台就可以了。另外,SMR d的硬盘是可以随机写的,只是最小写单元为zone的尺度,目前是256M。
谢谢大家!