6月30日,2016中国闪存峰会在北京亮马河饭店隆重举行。
在当天下午的“闪存定义的新存储架构”分论坛进行到最后环节时,Dostor(存储在线)总编宋家雨和Dostor客座技术顾问李炫辉展开主题为“闪存介质技术和企业级应用的关系”的高峰对话,将此次论坛推向高潮。
Dostor总编 宋家雨(左)与Dostor客座技术顾问李炫辉(右)
宋家雨: 今天我们的话题是闪存颗粒跟企业级应用的关系,因为李总是我特邀的嘉宾,李总本人是Greenliant公司副总裁,是做控制器的公司,所以对闪存颗粒有非常深的研究。所以先请李总给我们介绍一下,闪存颗粒确实是比较底层的技术,对企业来说我们要关心这么细的技术吗?
李炫辉:闪存技术的应用从90年代发明之后,然后开始在消费市场里面使用,但是在企业级市场来使用的话,实际上只是在最近短短三四年时间里面,意味着什么?意味着这个技术并没有完全得到企业级市场的成熟验证。然后有句歇后语叫沙滩上盖楼房——基础不好。对企业级而言闪存颗粒就是它的地基,如果我们不了解地基的特性在上面搭建企业级的存储架构可能就会有一些风险。
宋家雨:能不能再稍微跟我们讲讲我们说来说去的这些颗粒到底指什么?因为我们在上层确实对底层缺乏了解。您也说到沙滩上盖楼的问题,讲讲颗粒吧。
李炫辉:实际上闪存颗粒和沙子有关系。通过一些工艺手段,利用晶元把它变成非意识性的存储的产品,这个产品我们看到最原始的是一个晶元,我们要在上面切割,切割出一个一个物理颗粒,就是我们俗称的闪存颗粒。
宋家雨:阵列、盘,或者闪存卡,盘也好,卡也好,组成存储的就是这些颗粒来组成的,构成我们的产品,让我们存储我们的数据。关于闪存颗粒来讲,因为我们一般可能关注的是最终的系统和应用。如果说我们还要关注颗粒那我们应该关注哪些特性?
李炫辉:对用户而言不管最底层的颗粒或者系统怎么样,我只知道它能够提供我所需要的特性就可以了。但是闪存和其他的介质不太一样,可能今天的很多友商都在谈怎么样利用闪存搭建自己的闪存系统,或者说一些闪存的解决方案。但是由于闪存的特定的物理特性,因为闪存应用时间比较短,有没有人碰到过闪存的性能衰减的问题?也就是说闪存性能是非常高,比现在的磁盘性能高很多,但是长期适用过程中它会带来老化以及错误率增加,这都会带来后期闪存产品的性能下降。那么这就给企业级应用带来一个困惑,当我去做企业级应用的性能规划的时候,我应该是按照最初的性能规划还是按照衰减后的性能规划?因为原来我的系统需要支持比如20万人的并发,如果说采用闪存也许用三四年,闪存性能只能支持到10人的并发,这怎么办?这对企业应用是一个致命的风险。
我再举一个例子,我们还碰到一个用户的案例,有一个用户也用了一个闪存产品。但是突然有一天他们发现他们的系统重启,没有任何的原因。最后他们去和闪存厂商沟通以后,对方提出的结果是什么?说由于太空辐射造成了闪存的电位翻转引起的这个问题。当然这个在做系统的时候应该要考虑到,但是对企业级用户来讲这也是一个可能的风险。
宋家雨:磁介质也有风险,各种各样的风险。那怎么样应对这些风险呢?您刚才提出的问题您按什么设计?按衰减后的设计还是最初的设计?您的观点是什么?
李炫辉:我的观点是从企业级产品的角度而言不同的产品设计的应用场景是不一样的,这也就是为什么说我们作为企业级应用要去了解这种介质的一些特性,然后它所对应的一些产品的一些需求。比如说我们是应该用TLC颗粒还是LBC的颗粒?我们要去做一些判断。因为这个市场上系统级竞争过于激烈,这给系统厂商带来了一个压力,所谓压力就是如果我价格比别人贵我可能卖不出去。因此他们可能更关注的在于经济性的角度,这可能会带来说对企业级应用的适配的错位。这也就是为什么大家在谈海外购的问题,我们知道我们出国之后很多东西在国内可以买到,为什么我们要买国外的东西?
宋家雨:因为便宜。刚才说到性能衰减,还有一种情况就是性能抖动这样的一些事情,其实对企业级的应用的质量带来一些困扰和困惑。针对这些问题可能也有一些设计,在系统设计或者在盘或者卡的设计中有一些应用办法,我们常听的一个词叫OP,它的含义和起到的作用是什么?
李炫辉:OP我们俗称叫过度配置,当我们买一个闪存盘,它标成是400GB的闪存盘,但是它真实的裸容量可能是420GB,甚至是500GB五,但是用户用到的可能是400GB,为什么有这样的预留空间?其实有两个考虑。第一个是闪存颗粒出厂就会有坏块,它会有比如1%、2%的坏块率,这些坏块需要用好的颗粒替代,那么我们就要预留空间,使用过程中发现坏块然后替代。并且使用过程中出现新的坏块也要用这个替代,坏块替代,OP的一个作用。
第二个作用是因为闪存本身的特性,它是4K的写,但是一个模块就是几十照B的擦除,这里会存在放大的问题,会产生比如我只是一个IO写入闪存,但是最后在闪存颗粒里面产生了几十个IO。闪存特性是擦写次数限制,我有足够OP可以先把这些IO写到空白区,然后再回来擦写,这样可以延长它的寿命。
宋家雨:有人希望他自己来控制,他就把OP完全释放了,这样他能追求更好的性价比。
李炫辉:实际上这样也是可以的。但是这对用户的技术、能力有非常高的要求。并且还有一个前提就是它这个应用的数据访问模型一定不能有任何变化,只要有一个变化可能就会造成一个灾难。
宋家雨:我们希望我们作为企业用户做系统的时候了解到的技术。还有一个话题想分享一下,实际上刚才讲到抖动、性能、数据丢失等等。实际上很多人有疑惑,在消费端我们用的CF卡好象质量非常好,企业级颗粒和消费级颗粒有什么区别?
李炫辉:完全不一样,因为质量标准以及检测手段,企业级要更加严格。原因是什么?消费类,比如我们有一个CF卡,比如U盘。大家可以想想你在这种设备上你究竟会做多少次读写?几年可能也就是十几次的擦写。而到数据中心级是24小时连续的擦写操作,这个实际上会有很大的差异性。并且我们也有一些人很好奇,拿了一个消费类盘进行连续擦写,一个兴趣就挂了,这是不同的应用场景,这也是由颗粒质量所决定的。
宋家雨:我刚才说的写是写满,如果是U盘的话把它写满看能写多少次。咱们一般来讲这样的盘写满机会并不多,写很多次也不多,但是企业级不是这样的状况,它是7×24小时不断擦写。所以关于颗粒这块我们要了解到一个是颗粒特性,另外是颗粒的擦写的方式。
李炫辉:另外我想补充一点,就是关于数据的持久性保存,因为当有一个磁盘系统上面存了数据之后我在断电之后可以断电一个月、两个月甚至一年,我在重新启动的时候上面的数据是不会错误的,我仍然还可以读出,这是由磁介质特性决定的。但是如果将一个设备存在现在的闪存盘上,长时间断电情况下就有可能出现数据丢失的问题,因为闪存是靠电驱动,长时间没有外部供电会出现电位丢失就会出错。当我们应用的在企业级环境里边,当存在这样的特殊情况我们要考虑到数据的保持性。
宋家雨:说到颗粒很多用户会关心耐读、耐写,关于写寿命问题可能大家会很担心。这方面应该怎么看?
李炫辉:颗粒的写寿命也是一个物理性指标。这个也是一个统计出来的数据,就是说每一个颗粒可擦写的次数实际上是有限的,大概是在什么范围里?比如现在比较流行的MLC,它的擦写范围是3500到5000次。比如像SLC,从原来的10万次衰减到大概8到9万次,这个是擦写次数物理的限制。因此这个里面还要考虑到我们在企业级应用里边写入的压力大概会有多大,我们会希望这个设备能使用多久,也会要考虑到这样的一些底层的颗粒的指标。
宋家雨:因为时间关系,我们还是准备了一些话题的。对于颗粒大家有什么话题想交流?
嘉宾提问环节
嘉宾:当数据下到盘的时候,盘为了降低CATCH会不会把这个数据看起来?如果看起来这时候突然断电了,这个数据会不会丢?会有什么技术保证这点?
李炫辉:这是做闪存技术里面首要要考虑的问题,所有的数据如果直接落到颗粒上对它的磨损很严重,如果用CATCH之后怎么保持数据在断电情况下不丢失。基本所有的企业级产品都会用CATCH,因为要保证寿命问题,为了保证不丢失往往采用满载电池供电方式进行持久化维持,并且不同厂商设置的机制不一样。因为我们知道原来我们的CATCH控制器里也有CATCH,但是电池会支持24小时,超过24小时数据可能会丢了,因为它是在CATCH里面的。但是在闪存设计里面有的是采用这种方式,还是维持在CATCH里面,真的撑不住了可能会丢掉。还有当电路侦测到外部停止供电之后我会把CATCH的数据写回到颗粒,当下一次再启动的时候,会把原来的CATCH数据返回到CATCH里面。这个时候这里面不同的产品里面可能就会有一些感觉,你会发现有的闪存卡掉电之后,再加载启动的时候过几分钟才可以用,不是马上可用的,所以会带来意外断电的保护机制,这也是每个厂商都有自己的专门的设计的专利。
宋家雨:CATCH是不是越大越好?
李炫辉:因为64照B或者8GB,小B的环境下CATCH的命中率和优化空间其实都是在设计过程中要算的,并且我们知道CATCH都是LPDUR做的,如果CATCH大的,满载功耗就会很大,散热量很大,对稳定性还会有反面影响。这个要通过计算,在芯片设计过程中就要考虑的。
嘉宾:如果对于写操作来讲,在SSD盘里面有没有CATCH对性能影响多大,对SPD影响肯定会非常大。如果是只写的情况,即便是SSD读的时间也比写的时候高很多,差别是来自于SSD盘的CATCH,如果CATCH可以关掉,对外宣传延迟或者RPS会有很大差异。
李炫辉:一般来讲存储有一个关键指标叫延迟,如果说我们不要CATCH的话,它的延迟会好,因为它要在中间,在CATCH转一层做合并,这时候它的延迟会长一些。但是如果把CATCH拿掉,直接写,会看到你的延迟很好。但是长时间情况下你的耐久性会差,你对颗粒磨损很严重,会很快坏掉,产生大量坏块,所以要做折中,究竟产品用在什么场景里。大块IO也一样会,因为大块IO写入,上层还是要根据空白块来做你的IO分配,也就是早期你会看到它的性能很快,但是慢慢慢慢快充满的时候,你的连续块就会越来越少,这时候性能一下就掉下来了。
嘉宾:您刚才提到闪存颗粒用时间久了性能衰退会存在,衰退弧度是什么?
李炫辉:每个厂商都不一样。
嘉宾:大概呢?
李炫辉:大的有一半以上的,这个衰退要从几个层面设计的。第一个你是否考虑留更多的OP,OP越大性能差距越小,OP大了你的成本就高了。第二个问题你的架构设计,因为性能衰减还有一块是后期错误率搞了,你要矫验做恢复,你的矫验处理能力能不能达到?校验一般用引擎处理,要么用很强大的引擎,或者用更多的矫验引擎处理,这里也带来发热量、成本问题,所有设计都要考虑一个综合的设计。有的时候真的是一分价钱一分货。现在出来闪存的系统厂商非常多,国内就进入了低价竞争的态势,而用户又往往无法区分这个产品到底如何。因为刚开始的时候会觉得都一样,但只有使用过一段时间才会有差异,那么那时候可能已经晚了。
嘉宾:这个问题不见得只和介质颗粒有关系,可能还可控制有问题。问题是这样,比如我们拿着某一个厂商的SSD盘做一个只读的测试,比如32K的,盘上的时间大概是0.2几个毫秒,但是在这个系统里如果进行一些管理命令,还不知道哪些命令引起的,这些延迟有可能跳到200个毫秒的量级上来。哪种操作可能会引发这么大量的延迟增加?不确定哪种指令引发的,从您的观点来看是不是哪些指令会引发?
李炫辉:会。因为闪存底层有一些队列机制,这个队列机制实际上会影响到它的性能,比如我们知道我可以在我的硬件上生成16个队列、34、62个队列。我队列越多我的好处是什么?我的好处是我可以在高并发情况下,整个上层应用的延迟比较少,我可以处理更多的任务,但是队列多也带来一个问题,当我的并发不足的时候,你会产生一个队列不能充满,而下层闪存取数据的时候,当一个队列被充满的时候会有一个门铃机制,到一个队列满了会按一下门铃,下头底层处理器就知道你的数据满了,就取体的数据,放在底层的颗粒上,但是不满的情况下会出现一个等待超时,如果你一直不按门铃,我底层去做了一个设计,说我要等到比如20毫秒,你没按,那我就去看看,有没有数据我都取走,这时候可能会存在突然高的延时。并且在闪存底层的设计往往比较专用的架构每一家都不一样,所以你就会看到在不同的场景里面,同样大家都是闪存可能表现的现象就不一样。
【更多行业资讯,请关注DOIT官方微信(微信号:doitmedia),关注科技与数据经济,洞察IT走向DT。】