如何用好你的SSD?

作者:陈定宝,Lightbits Labs解决方案架构师

在过去十几年中,CPU的性能提升了100倍以上,而传统的HDD硬盘(Hard Disk Drive)才提升了1.5倍不到,这种不均衡的计算存储技术发展,极大影响了IT系统整体性能的提升直到固态硬盘SSDSolid State Drive被发明出来,其性能有了颠覆性的提升,解决了存储的瓶颈问题。然而,SSD作为一新技术,仍然存在一些固有的缺陷,如何充分发挥SSD的优势,是一个值得研究的方向。下面性能持久性使用成本等方面对话题做一些探讨。

如何充分发挥出SSD的性能

首先,我们传统HDD的使用方式

1.协议一般都采用SASSATA接口

2.Linux的IO调度需要用电梯算法来对IO进行重排以优化磁头的路径

3.企业级存储通常使用Raid卡做数据保护。

在接口协议方面,随着SSD发明,NVMe协议应运而生相较于SASSATA的单队列机制,NVMe最多可以有65535个队列,并且直接采用PCIe接口,链路和协议瓶颈

在控制卡生态方面,各大厂商也纷纷推出自己的NVMe控制卡芯片,有PMC(现属于Microchip)、LSIMarvelIntel慧荣以及国内的得瑞等,技术也已经非常成熟。

在Linux 驱动和IO协议栈方面,也做了相应的优化,如下图所示,NVMe驱动可以直接绕过那些传统的专为HDD设计的调度层,大大缩短了处理路径。

如何用好你的SSD?

到目前为止,为了充分发挥SSD的性能,上面提到的三个传统HDD的问题中前两个已经得到了解决,然而在企业级市场上,基于NVMe的Raid始终没有太好的方案。传统企业最广泛使用的Raid5/Raid6数据保护机制N+1, N+2,通常是把数据条带化分片,然后计算出冗余的Parity Code(奇偶校验码),将数据存放到多块硬盘,写入新数据通常是一种读改写的机制。这种机制本身就成为了性能瓶颈,并且读改写对SSD的使用寿命有很大的损耗。另外,因为NVMe协议把控制卡放到了NVMe盘的内部IO都NVMe盘内部的DMA模块来完成,这就给基于NVMe的Raid卡设计带来了更大的困难。目前市场上这类Raid控制卡可用方案也很少,并且性能上也无法发挥出NVMe的优势,因此没能被广泛使用。

基于目前这种状况,很多企业级存储方案仍然使用SAS/SATA的SSD加传统的Raid卡,这种方式又会出现前面已经解决的两个问题,SSD的性能得不到充分发挥。

然而,这样的情况也在发生改变,由Lightbits Labs发明的NVMe over TCPNVMe/TCP存储集群解决方案就对这个问题了很好的处理。该解决方案通过自主研发的一块数据加速卡,采用Erasure Code(纠删码)机制可以做到超过1M IOPS的随机写性能,并且可以避免读改写带来的使用寿命耗。另外,Lightbits提出了Elastic Raid机制,该机制提供弹性的N+1保护(类似于Raid5),相较于传统的Raid5需要热备盘或者需要及时替换损坏盘,该机制在一块硬盘发生损坏之后能自动平衡形成新的保护。比如一个节点内原先有10块盘,采用9+1的保护,当某块盘损坏后,系统会自动切换成8+1的保护状态,并且把原先的数据再衡到新的保护状态,从而在可维护和数据安全性方面实现了大幅提升。此外,该数据加速卡还能做到100Gb的线速压缩,显著提高可用容量,进而能大幅降低系统使用成本。

如何提升NVMe盘的持久性

目前使用最广泛的SSD是基于NAND颗粒的,而NAND一个与生俱来的问题就是持久性endurance)。并且随着技术的发展,NAND的密度也越来越高,最新一代已经到了QLC(4bits per Cell),同时每个Cell可被擦写的次数也在减少1K P/E Cycles)。发展趋势如下图所示。

如何用好你的SSD?

另外,对NAND的使用有一个特,就是可擦的最小单位比较大,如下图所示,写的时候可以4KB为单位往里面写,但是擦的时候比如修改原有数据却只能以256KB为颗粒来操作不同的SSD大小不一样,但原理都一样。这就容易形成空洞而触发SSD的GCGarbage collection数据搬移,进而导致所谓的写放大现象对盘的持久性会产生进一步影响。

如何用好你的SSD?

在企业级存储中,通常使用Raid5/6这种读改写的机制,会对盘的写操作数量进一步放大,一般使用场景下大约是直接写入方式的2倍损耗。此很多Raid5还会启动Journal机制,对盘的使用寿命会进一步损耗。

最后对于最新的QLC来说,使用中还需要考虑另一个因素——Indirection Unit IU)。比如有些QLC盘使用 16KB的IU,如果要写入较小的IO,也会触发内部读改写,对使用寿命又多一重损伤。

由此可以看出,基于NAND的SSD还是比较娇弱的不过,只要能正确使用,还是可以避免这些问题比如以某常用的QLC盘为例,通过如下两组关于性能和持久性相关的参数可以看出,在持久性上顺序写是随机写的5倍,而性能更是26倍

l顺序写 0.9 DWPD, 随机4K写0.18 DWPD

l顺序写 1600 MB/s, 随机4K写15K IOPS60MB/s)。

通过上面的分析发现,能把盘使用在一个最佳的工作状态至关重要。好消息是目前先进的解决方案,比如Lightbits全NVMe集群存储解决方案就可以解决这个问题。该方案通过把随机IO变成顺序IO的方式,以及独有的Elastic Raid技术避免了Raid读改写的弊端,从而能大幅提高盘的持久性及随机性能。

降低使用成本

由于SSD相对HDD而言是一新技术,再加上产业的生产规模和需求量的矛盾,目前价格相HDD仍然偏高。那么如何降低SSD使用成本就变得非常重要。

降低使用成本最重要的一环就是要把SSD充分使用起来,无论是容量还是性能。不过就目前而言,大多数NVMe盘都是直接插在应用服务器上使用,而这种方式非常容易造成大量的容量和性能浪费,因为只有这台服务器上的应用才能使用它。根据调研发现,使用这种DASDirect Attached Storage,直连式存储)方式,SSD的利用率大概在15%-25%。

对这个问题比较好的解决方法是近几年来市场上被广泛接受的解耦合架构。解耦合之后,把所有的NVMe盘变成一个大的存储资源池,应用服务器用多少拿多少,只要控制总数量够用就行,可以非常容易地将利用率推到80%。另外,因为资源集中起来,可以有更多的手段和方法用于降低成本,比如压缩。例如平均应用数据压缩比在2:1,就相当于多了一倍的可用容量,也相当于每GB价格降了一半。当然压缩本身也会带来一些问题,比如压缩本身比较费CPU,另外很多存储解决方案在开启压缩之后性能就会大大降低。

针对压缩方面的问题,Lightbits的NVMe/TCP集群存储解决方案可以通过存储加速卡来予以解决该卡可以做到100Gb的线速压缩能力,并且不消耗CPU,不增加延迟。利用这样的解决方案,压缩功能几乎没有额外的成本。此外前面介绍提高持久性时所提到的,Lightbits解决方案能提高使用寿命并支持使用QLC盘,整个使用周期来看,使用成本方面会有非常大的降低。总的来说,通过解耦合提高使用效率,压缩提高可用容量,优化提高使用寿命或启用QLC,过这样的重重提升,SSD的使用成本可以得到极大的控制。

上从性能持久性使用成本三个方面分析了如何用好SSD盘,可以看到要用好NVMe SSD盘还是不容易的。因此,对一般用户而言,选择一个好的存储解决方案就至关重要。为此,以色列创新公司Lightbits以充分发挥NVMe盘最大价值为使命,发明了NVMe/TCP协议,推出了新一代的全NVMe集群存储解决方案,可以帮助使用者轻松地将SSD盘用好。

最新文章