本篇文章为大家展示了如何用多流写技术提高SSD的性能和寿命,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
今天学习FMS16的会议材料。有一个三星的多流写技术,三星正在推荐成为国际标准,我觉得比较有意思,因此,今天就来聊聊这个东西。
首先,我们知道NAND闪存的一些和硬盘不同的特性:其有三种操作,读,编程(其实就是写)和擦除。硬盘支持覆盖写,因此不需要擦除。而闪存读写的单位都是page,但擦除的单位是block(即多个page)。由于不能覆盖写,因此有一个垃圾回收的额外动作,即把有用的page数据复制到别的地方,然后擦除这个block,才能重新写数据。这就带来额外的写放大,而且垃圾回收的时候数据移动肯定要加锁的,因此除了影响写性能,其实读性能也是受影响的。
但闪存和硬盘还有一个不同就是寿命的问题。也就是一个page编程的次数是有限的(其实硬盘也有寿命,只是相对闪存来说,大家都认为其生命周期内没有这个问题)。根据三星的统计,不同的闪存的写寿命都在下降,应该不是技术问题,而是为了追求更高密度而导致的结果。不过3D-NAND技术出来后,应该有所改善,因为3D的空间要大一些,相互干扰小一些。一般3D TLC NAND的寿命和2D NAND MLC的寿命差不多。
为此,三星提出了一个多流写的技术,即应用把数据按照不同更新频率分成多个数据流,而SSD写的时候识别这些数据流,把相同特征的数据流写在一起(连续的block)。
这种数据布局的好处就是垃圾回收的时候更加高效,因为数据流的特征不同,垃圾回收的频度就不同,有些不常改动的数据占据的block就不用回收了。回收的block一般这个block数据都失效了,可以直接擦除,避免了数据的复制。
由于避免更多的page的数据复制,减少了写放大,其实就相当于延长了系统的写寿命。
三星拿开源的No-SQL数据库Cassandra,打上多流写的补丁前后进行测试对比,发现可以提高2倍的写寿命,而且还有45%的性能提升,读的时延也减少了50%。还是一个非常不错的结果。
三星目前正在推动这个多流写技术成为一个标准。目前在SCSI/SAS接口已经完成,而NVMe正在做最后审查。
我把标准下载下来看了一下,目前还是一个草案,还不是正式标准。
标准其实主要定义SCSI的initiator和target通信的格式。让操作系统写盘的时候通过SCSI命令把数据流的标识告诉SSD。如果是NVMe,由于by pass了SCSI层,因此需要增加NVMe的命令,因此是不同的标准。还有,标准化以后,需要操作系统支持,也需要各个应用程序支持。因为只有应用程序才最终清楚自己的数据特征,让它来打标记是最好不过的了。
其实,AFA(all flash array)也可以利用这个思路。比如华为马上要在上海HC大会上发布的OceanStor Dorado V3,据说采用了全局的FTL,采用冷热数据分离的方式来提高垃圾回收的效率。
这个冷热数据分离其实和多流写思路是一样的。不同的是三星提出的多流写需要应用系统或者操作系统支持,而且只针对单个SSD的。而华为的这个冷热分离,是存储内部实现,是系统级别的。华为可以这么做,主要是采用了自研的HSSD盘,可以让阵列的软件和SSD的fireware协同起来。
但是,如果三星这个多流写成为一个标准,那么华为的Dorado V3也必将从中受益。因为应用程序直接在写的数据上打上标签,发送到阵列上,阵列进行冷热数据判断就更加精确和容易,效率会更高。而且,有了这些数据流标签,阵列的Cache调度算法也会更加高效,你会把最热的数据尽量保存到Cache里,提高Cache的命中率。
闪存技术给整个存储系统带来很多设计上的变化,而数据的智能布局对闪存性能和寿命都有巨大的影响。未来的AFA系统会更加智能,更加应用感知。
上述内容就是如何用多流写技术提高SSD的性能和寿命,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。