<p><em>作者:陈定宝,Lightbits Labs解决方案架构师</em></p>
<p><span>在过去十几年中,CPU的性能提升了100倍以上,而传统的HDD硬盘(Hard Disk Drive)才提升了1.5倍不到,这种不均衡的计算存储技术发展,极大</span><span>地</span><span>影响了IT系统整体性能的提升</span><span>。</span><span>直到固态硬盘SSD</span><span>(</span><span>Solid State Drive</span><span>)</span><span>被发明出来,其性能有了颠覆性的提升,</span><span>才</span><span>解决了存储的瓶颈问题。然而,SSD作为一</span><span>项</span><span>新技术,仍然</span><span>存在</span><span>一些固有的缺陷,如何充分发挥SSD的优势,是一个值得研究的方向。下面</span><span>从</span><span>性能</span><span>、</span><span>持久性</span><span>、</span><span>使用成本等方面对</span><span>此</span><span>话题做一些探讨。</span></p>
<p><strong>一</strong><strong>、</strong><strong>如何充分发挥出SSD的性能</strong></p>
<p><span>首先,我们</span><span>来</span><span>看</span><span>看</span><span>传统HDD的使用方式</span><span>:</span></p>
<p><span>1.</span><span>协议一般都采用SAS</span><span>、</span><span>SATA接口</span><span>;</span></p>
<p><span>2.</span><span>Linux的IO调度需要用电梯算法来对IO进行重排以优化磁头的路径</span><span>;</span></p>
<p><span>3.</span><span>企业级存储通常使用Raid卡做数据保护。</span></p>
<p><span>在接口协议方面,随着SSD</span><span>的</span><span>发明,NVMe协议应运而生</span><span>。</span><span>相较于SAS</span><span>、</span><span>SATA的单队列机制,NVMe最多可以有65535个队列,并且直接采用PCIe接口,</span><span>消</span><span>除</span><span>了</span><span>链路和协议瓶颈</span><span>。</span></p>
<p><span>在控制卡生态方面,各大厂商也纷纷推出自己的NVMe控制卡芯片,有PMC</span><span>(现属于M</span><span>icro</span><span>chip)、</span><span>LSI</span><span>、</span><span>Marvel</span><span>、</span><span>Intel</span><span>、</span><span>慧荣</span><span>以及</span><span>国内的得瑞等,技术也已经非常成熟。</span></p>
<p><span>在Linux 驱动和IO协议栈方面,也做了相应的优化,如下图所示,NVMe驱动</span><span>可以</span><span>直接绕过那些传统的</span><span>、</span><span>专为HDD设计的调度层,大大缩短了处理路径。</span></p>
<p><img alt="如何用好你的SSD?" data-entity-type="file" data-entity-uuid="0ddd090c-7658-4f09-91dc-ef891fa1fb35" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100063670-127762-1.jpg&…; /></p>
<p><span>到目前</span><span>为止</span><span>,为了充分发挥SSD的性能,</span><span>上面提到的三个传统H</span><span>DD</span><span>的问题中</span><span>前两个已经</span><span>得到了</span><span>解决,然而在企业级市场上,基于NVMe的R</span><span>aid</span><span>始终没有太好的方案。传统企业最广泛使用的Raid5/Raid6数据保护机制</span><span>(</span><span>N+1, N+2</span><span>)</span><span>,通常是把数据条带化分片,然后计算出冗余的Parity Code</span><span>(奇偶校验码),将数据</span><span>存放到多块硬盘,写入新数据通常是一种</span><span>“</span><span>读改写</span><span>”</span><span>的机制。这种机制本身就成为了性能瓶颈,并且</span><span>“</span><span>读改写</span><span>”</span><span>对SSD的使用寿命有很大的</span><span>损耗</span><span>。另外,因为NVMe协议把控制卡放到了NVMe盘的内部</span><span>,</span><span>IO都</span><span>由</span><span>NVMe盘内部的DMA模块来完成,这就给基于NVMe的Raid卡设计带来了更大的困难。目前市场上这类Raid控制卡可用方案也很少,并且性能上也</span><span>无法</span><span>发挥出NVMe的优势,因此没能被广泛使用。</span></p>
<p><span>基于目前这种状况,很多企业级存储方案仍然</span><span>在</span><span>使用SAS/SATA的SSD加传统的Raid卡,这种方式又</span><span>会出现</span><span>前面</span><span>已经</span><span>解决的</span><span>两个</span><span>问题,SSD的性能得不到充分发挥。</span></p>
<p><span>然而,这</span><span>样的</span><span>情况也在发生改变,由Lightbits L</span><span>abs</span><span>发明的NVMe over TCP</span><span>(</span><span>NVMe/TCP</span><span>)</span><span>存储集群解决方案就对这个问题</span><span>做</span><span>了很好的处理。该解决方案</span><span>通过</span><span>自主研发的一块数据加速卡,采用Erasure Code</span><span>(纠删码)</span><span>机制可以做到超过1M IOPS的随机写性能,并且</span><span>可以</span><span>避免</span><span>“</span><span>读改写</span><span>”</span><span>带来的使用寿命</span><span>损</span><span>耗。另外,Lightbits提出了Elastic Raid机制,该机制提供弹性的N+1保护(类似于Raid5),相较于传统的Raid5需要热备盘或者</span><span>需要</span><span>及时替换损坏盘,该机制在一块硬盘发生损坏之后能自动平衡形成新的保护。比如一个节点内原先有10块盘,采用9+1的保护,当某块盘损坏后,系统会自动切换成8+1的保护状态,并且把原先的数据再</span><span>平</span><span>衡到新的保护状态,从而在可维护和数据安全性方面</span><span>实现了</span><span>大幅提升。此外,该数据加速卡还能做到100Gb的线速压缩,</span><span>显著</span><span>提高</span><span>了</span><span>可用容量</span><span>,进</span><span>而能大幅降低系统使用成本。</span></p>
<p><strong>二</strong><strong>、</strong><strong>如何提升NVMe盘的持久性</strong></p>
<p><span>目前使用最广泛的SSD是基于NAND颗粒的,而NAND一个与生俱来的问题就是持久性</span><span>(</span><span>endurance</span><span>)。</span><span>并且随着技术的发展,NAND的密度也越来越高,最新一代已经到了QLC(4bits per Cell),</span><span>同时</span><span>每个Cell可被擦写的次数也在减少</span><span>(</span><span>1K P/E Cycles</span><span>)。</span><span>发展趋势如下图所示。</span></p>
<p><img alt="如何用好你的SSD?" data-entity-type="file" data-entity-uuid="94ea15be-d5dd-46fc-abf1-470645ec4faa" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100063670-127763-2.jpg&…; /></p>
<p><span>另外,对NAND的使用有一个特</span><span>点</span><span>,就是可擦的最小单位比较大,如下图所示,写的时候可以4KB为单位往里面写,但是擦的时候</span><span>(</span><span>比如修改原有数据</span><span>)</span><span>却只能以256KB为颗粒来操作</span><span>(</span><span>不同的SSD大小不一样,但原理都一样</span><span>)</span><span>。这就容易形成空洞而触发SSD的GC</span><span>(</span><span>Garbage collection</span><span>)</span><span>数据搬移,进而导致所谓的写放大现象</span><span>,</span><span>对盘的持久性</span><span>会产生</span><span>进一步影响。</span></p>
<p><img alt="如何用好你的SSD?" data-entity-type="file" data-entity-uuid="b20754c3-eede-4508-804b-28e904ed99ba" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100063670-127764-3.jpg&…; /></p>
<p><span>在企业级存储中,通常使用Raid5/6这种</span><span>“</span><span>读改写</span><span>”</span><span>的机制,会对盘的写操作数量进一步放大,一般使用场景下大约是直接写入方式的2倍损耗</span><span>。此</span><span>外</span><span>,</span><span>很多Raid5还会启动Journal机制,对盘的使用寿命会进一步损耗。</span></p>
<p><span>最后</span><span>,</span><span>对于最新的QLC来说,使用中还需要考虑另一个因素</span><span>——</span><span>Indirection Unit<span> </span></span><span>(</span><span>IU</span><span>)。</span><span>比如有些QLC盘使用 16KB的IU,如果要写入较小的IO,也会触发内部</span><span>“</span><span>读改写</span><span>”</span><span>,对使用寿命又多一重损伤。</span></p>
<p><span>由此</span><span>可以看出,基于NAND的SSD还是比较娇弱的</span><span>。</span><span>不过,只要能正确</span><span>地</span><span>使用,还是可以避免这些问题</span><span>。</span><span>比如以某常用的QLC盘为例,</span><span>通过如下</span><span>两组关于性能和持久性相关的参数可以看出,在持久性上顺序写是随机写的5倍,而性能更是26倍</span><span>:</span></p>
<p><span>l</span><span>顺序写 0.9 DWPD, 随机4K写0.18 DWPD</span><span>;</span></p>
<p><span>l</span><span>顺序写 1600 MB/s, 随机4K写15K IOPS</span><span>(</span><span>60MB/s</span><span>)。</span></p>
<p><span>通过上面的分析发现,能把盘使用在一个最佳的工作状态至关重要。好消息是目前</span><span>一</span><span>些</span><span>先进的</span><span>解决方案,比如Lightbits</span><span>的</span><span>全NVMe集群存储解决方案就</span><span>可以</span><span>解决这个问题。该方案通过把随机IO变成顺序IO的方式,</span><span>以及</span><span>独有的Elastic Raid技术避免了Raid</span><span>“</span><span>读改写</span><span>”</span><span>的弊端,从而能大幅提高盘的持久性及随机性能。</span></p>
<p><strong>三</strong><strong>、</strong><strong>如</strong><strong>何</strong><strong>降低使用成本</strong></p>
<p><span>由于SSD相对</span><span>于</span><span>HDD而言是一</span><span>项</span><span>新技术,再加上产业的生产规模和需求量的矛盾,目前价格相</span><span>比</span><span>HDD仍然偏高。那么如何降低SSD使用成本就</span><span>变得</span><span>非常重要。</span></p>
<p><span>降低使用成本最重要的一环就是要把SSD充分使用起来,无论是容量还是性能。不过就目前而言,大多数NVMe盘都是直接插在应用服务器上使用,而这种方式非常容易</span><span>造成</span><span>大量的容量和性能浪费,因为只有这台服务器上的应用才能使用它。根据调研发现,</span><span>使用</span><span>这种DAS</span><span>(</span><span>Direct Attached Storage</span><span>,直连式存储)</span><span>方式,SSD的利用率大概在15</span><span>%</span><span>-25%。</span></p>
<p><span>针</span><span>对这个问题比较好的解决方法是近几年来市场上被广泛接受的</span><span>“</span><span>解耦合</span><span>”</span><span>架构。解耦合之后,把所有的NVMe盘变成一个大的存储资源池,应用服务器用多少</span><span>就</span><span>拿多少,只要控制总数量够用就行,</span><span>可以</span><span>非常容易</span><span>地将</span><span>利用率推到80%。另外,因为资源集中起来,</span><span>可以有</span><span>更多的手段和方法</span><span>用于</span><span>降低成本,比如压缩。例如</span><span>,</span><span>平均应用数据压缩比在2:1,就相当于多了一倍的可用容量,也相当于每GB价格降了一半。当然</span><span>压缩本身也会带来一些问题,比如</span><span>压缩本身比较费CPU,另外很多存储解决方案在开启压缩之后性能就会大大降低。</span></p>
<p><span>针对压缩方面的问题,</span><span>Lightbits的NVMe/TCP集群存储解决方案可</span><span>以通过</span><span>存储加速卡来</span><span>予以</span><span>解决</span><span>。</span><span>该卡可以做到100Gb的线速压缩能力,并且不消耗CPU,不增加延迟。利用这样的解决方案,压缩功能几乎没有额外的成本。</span><span>此外</span><span>,</span><span>正</span><span>如</span><span>前面</span><span>在</span><span>介绍</span><span>提高持久性</span><span>时所</span><span>提到的,Lightbits</span><span>解决方案</span><span>能提高使用寿命</span><span>并支持</span><span>使用QLC盘,</span><span>从</span><span>整个使用周期来看,</span><span>在</span><span>使用成本</span><span>方面</span><span>也</span><span>会有</span><span>非常大的降低。总的来说,通过解耦合提高使用效率,压缩提高可用容量,优化提高使用寿命或启用QLC,</span><span>经</span><span>过这样的重重</span><span>提升</span><span>,SSD的使用成本可以得到极大的控制。</span></p>
<p><span>以</span><span>上从性能</span><span>、</span><span>持久性</span><span>、</span><span>使用成本三个方面分析了如何用好SSD盘,可以</span><span>看到</span><span>要用好NVMe SSD盘还是不容易的</span><span>。因此,</span><span>对一般用户而言,选择一个好的存储解决方案就至关重要。</span><span>为此,</span><span>以色列</span><span>创新</span><span>公司Lightbits以充分发挥NVMe盘</span><span>的</span><span>最大价值为使命,发明了NVMe/TCP协议,</span><span>并</span><span>推出了新一代的全NVMe集群存储解决方案,可以</span><span>帮助</span><span>使用者轻松</span><span>地将</span><span>SSD盘用好。</span></p>