0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么样才能让你的SSD潜能得到最大的释放?

电子工程师 来源:陈定宝,Lightbits Labs解决方 作者:陈定宝,Lightbits 2021-04-01 18:15 次阅读

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

一、如何充分发挥出SSD的性能

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

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

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

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

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

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

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

1617182467119858.png

到目前为止,为了充分发挥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 TCP(NVMe/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)。发展趋势如下图所示。

1617182467564069.png

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

1617182456526293.png

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

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

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

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

顺序写1600 MB/s,随机4K写15K IOPS(60MB/s)。

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

三、如何降低使用成本

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

降低使用成本最重要的一环就是要把SSD充分使用起来,无论是容量还是性能。不过就目前而言,大多数NVMe盘都是直接插在应用服务器上使用,而这种方式非常容易造成大量的容量和性能浪费,因为只有这台服务器上的应用才能使用它。根据调研发现,使用这种DAS(Direct 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盘用好。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SSD
    SSD
    +关注

    关注

    21

    文章

    2856

    浏览量

    117350
  • 磁头
    +关注

    关注

    0

    文章

    19

    浏览量

    9296
  • HDD
    HDD
    +关注

    关注

    0

    文章

    143

    浏览量

    27409
收藏 人收藏

    评论

    相关推荐

    PCM1794 IV转换如何链接才能让基输出一个声道的单端信号?

    17,18 ,25,26脚分别得到一个声道的+-信号(因为这时分别有两组+-信号后面运放不知怎样接了),但我后面IV转换如何链接才能让基输出一个声道的单端信号,望给出原理图片,谢谢
    发表于 11-05 07:03

    tas5711怎么设置才能让8k的音频有声音呢?

    tas5711 播放44.1k和48k音频正常,播放8k,22.05k没有声音?怎么设置才能让8k的音频有声音呢? 现在仅仅做了基本的配置: 写0x1B寄存器为0x00 写0x07寄存器为0x30 写0x05寄存器为0x00 谢谢!
    发表于 10-31 07:16

    LM4871怎么才能输出最大的功率呢?

    你好,请问一下负载是一个电感线圈,阻值1.2R,电感值为96uh。怎么才能输出最大的功率呢,供电是3.7V的锂电池。
    发表于 09-30 07:01

    多级运放级联如何安排运放放大倍数才能让信号质量最优噪声小?

    如题,多级运放级联如何安排运放放大倍数才能让信号质量最优噪声小,关于集成运放的级联有没有相关的理论支持?
    发表于 08-27 08:14

    怎么才能得到LM3886的输出阻抗?

    等于P=U*U*I?,然后减去LM3886的输出阻抗所产生的功率损耗P0, 得到的“P1=P-P0“是不是就是提供给负载的功率了? 3、怎么才能精确计算出LM3886自身的功率损耗?(已知输出电流I和供电电压±U) 4、怎么才能
    发表于 08-22 07:25

    浪潮信息引领数据编排新纪元,加速释放数据潜能

    在2024年数据基础设施技术峰会的璀璨舞台上,浪潮信息分布式存储产品线架构师Lance Sun博士以其深厚的行业洞察与前瞻视角,发表了题为“高效数据编排,加速释放数据潜能”的精彩演讲,深刻剖析了当前数据时代,尤其是AIGC(人工智能生成内容)技术迅猛发展下,存储系统所面临
    的头像 发表于 07-03 15:30 370次阅读

    构建安全连接,释放无限潜能----捷德eSIM论坛成功举办

    深圳2024年6月26日 /美通社/ -- 6月26日,深圳——捷德eSIM论坛今天在深圳举行。在这场主题为"构建安全连接,释放无限潜能"的论坛上,来自中国联通、英飞凌、移远、美格智能、GSMA智库
    的头像 发表于 06-27 10:37 589次阅读
    构建安全连接,<b class='flag-5'>释放</b>无限<b class='flag-5'>潜能</b>----捷德eSIM论坛成功举办

    聊聊下一代企业级SSD外形EDSFF #EDSFF #SSD #硬盘抽取盒

    硬盘SSD
    ICY DOCK硬盘盒
    发布于 :2024年06月13日 17:15:19

    HighPoint发布商用PCIe Gen5解决方案,最大可达960TB SSD容量

    HighPoint新近发布了PCIe Gen5 SSD PCIe扩展卡,配备Rocket PCIe Gen5 NVMe Switch及M.2 RAID AIC适配器,可容纳多达32块SSD,单个PCIe插槽最大容量可达960TB
    的头像 发表于 04-24 15:43 813次阅读

    如何才能同时测试更多SSD硬盘?

    我国企业级SSD市场规模持续扩大,对于SSD生产企业来说是机遇,也是挑战,传统的SSD生产厂家在做出厂测试时,通常仅能测试4个盘
    的头像 发表于 03-15 17:39 403次阅读

    世界最大SSD终于开卖:至少2.65万

    作为世界最大容量的61.44TB SSD,Solidigm去年7月份就发布的企业级SSD D5-P5336终于开启预售,那是相当的贵。
    的头像 发表于 01-29 14:52 1057次阅读
    世界<b class='flag-5'>最大</b><b class='flag-5'>SSD</b>终于开卖:至少2.65万

    PSOC63-BLE怎样才能让4个pwm同步输出?

    我正在使用 PSOC63-BLE。 我正在尝试使用 HAL 输出 4 个 pwm,但我无法同步 4 个 pwm。 我怎样才能让 4 个 pwm 同步输出?
    发表于 01-22 06:18

    如何配置才能让AD7790正常工作?

    。 具体配置如下: 我按照AD7790的寄存器说明,先后对其进行了初始化、模式寄存器配置、滤波寄存器配置。 但在通过数据寄存器读数时,无论怎样调试,我都无法通过SPI获得正确的数据。我甚至怀疑前面的配置根本没有成功。 想请教一下,我应该如何配置,才能让AD7790正常工作。
    发表于 01-11 06:49

    pcb压合缓冲垫,究竟能不能让的电路板更安全?

    pcb压合缓冲垫,究竟能不能让的电路板更安全?
    的头像 发表于 12-27 10:13 886次阅读

    AD5545与MSP430单片机进行通信,要怎么发送数据才能得到正确的结果?

    。 现比如我要对A通道进行转换,经过计算得到的数字量D为0xAAAA,按照其数据格式,发送的18位格式的数据应该为01 1010 1010 1010 1010,AD5545与MSP430单片机进行通信,现请问,我要怎么发送数据才能
    发表于 12-25 08:17