千家信息网

如何用多流写技术提高SSD的性能和寿命

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇文章为大家展示了如何用多流写技术提高SSD的性能和寿命,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。今天学习FMS16的会议材料。有一个三星的多流写技术,
千家信息网最后更新 2024年11月22日如何用多流写技术提高SSD的性能和寿命

本篇文章为大家展示了如何用多流写技术提高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的性能和寿命,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0