面向PMEM优化的闪存存储系统

2021-01-05 11:37陈正华
科技风 2021年36期
关键词:性能

摘 要:随着制造工艺的发展,NAND闪存颗粒的存储容量越来越大,固态驱动器(SSD)的价格得以降低,全闪存存储逐渐成为主流。但在容量提升的同时,闪存颗粒的性能越来越低,使用寿命也越来越短,存储系统中的数据损坏风险直线上升。另一方面,新型的持久内存(PMEM)介质和设备不断出现,其拥有持久性、字节寻址、高性能、低延迟的特性,使用寿命和性能都远大于SSD。通过合理的系统设计,可以充分发挥二者的优势,利用PMEM优化闪存的性能和寿命,构建高性价比的全闪存存储系统。

关键词:SSD;PMEM;持久内存;闪存;耐久度;性能

随着技术的发展,主流固态驱动器(SSD)使用的闪存颗粒从SLC、MLC、TLC逐步过渡到QLC,加之3D NAND堆叠工艺,使得闪存颗粒的容量越来越大,容量型SSD具有较高的性价比,可用于取代传统机械硬盘(HDD),构建全闪存存储。但随之而来的是,QLC闪存颗粒的性能和耐久度远低于TLC,主流的QLC只能擦除500~1000次,更适合用来构建温数据或冷数据存储。当用于存储需要频繁修改的热数据时,闪存磨损过快,SSD损坏的风险直线上升。QLC的性能降低也导致数据访问延迟上升,故而无法承载诸如OLTP数据库等对性能要求较高的在线业务。

与此同时,以电阻式存储器(ReRAM)、磁阻式存储器(MRAM)、相变存储器(PCM)等为代表的持久内存(PMEM)技术近年来得到了大幅的发展,其拥有持久性、字节寻址、高性能、低延迟的特性。持久内存的性能与易失性内存(DRAM)接近,可擦写次数和延迟都大幅优于TLC、QLC等闪存介质。

Intel在2019年发布傲腾数据中心持久内存Optane DCPMM,容量有128GB、256GB、512GB三种规格。虽然持久内存具有很多的优秀特性,但相比SSD来说,其价格仍然较高、容量也较小。

QLC SSD容量大,价格低,但寿命较短,PMEM性能高,寿命长,但容量偏小,二者具有较强的互补性。如何针对二者的特征,设计面向高负载场景的闪存存储,是本文要解决的问题。

基于持久内存的高性能和字节寻址特性,本文提出了一種面向PMEM优化的闪存存储系统,通过将PMEM与闪存设备同时使用,优化数据读写的策略,极大地降低了闪存的读写次数,从而延长其使用寿命;同时,发挥PMEM的高性能特征,降低请求延迟,提升系统的并发IOPS。相比于使用TLC SSD搭建闪存存储,基于PMEM和QLC SSD搭建的闪存存储,在性能和成本上都具备较为明显的优势。

1 系统设计

本系统基于PMEM和SSD搭建混合存储,通过识别频繁读写的热点数据,以及对SSD不友好的小粒度IO,将其存储到PMEM中,从而优化SSD寿命和系统整体性能。

基于QLC SSD搭建本系统时,能达到最好的性价比。TLC SSD的寿命问题没有QLC SSD突出,但基于TLC SSD搭建本存储系统时仍然可以获得更好的系统性能表现,降低满足同等性能要求时所花费的硬件成本。

系统整体架构如图1所示。一方面,本系统根据读写请求的数据大小,确定其写入位置;另一方面,根据数据的读写频度识别热点数据,并按需将冷热数据在持久内存和SSD之间迁移,可以达到优化性能和闪存寿命的目的。

1.1 小粒度IO写策略

小粒度IO指小于4KB的请求。SSD的page(更新操作的最小粒度)大小通常都是4KB,对于小于4KB的写请求将通过Read-Modify-Write完成写入,即首先读取4KB的原始内容设备的缓存中,然后将修改的数据合并到缓存,最后重新写入完整的4KB数据。此时,更新操作的性能较低,写放大也较大。

由于PMEM是字节寻址的,当小粒度IO写入PMEM时,可以直接写入存储介质,而无需执行Read-Modify-Write过程。无论从性能还是耐久度方面考虑,将小粒度IO写入PMEM都是一个更优的选择。可以达到优化性能和SSD寿命的双重目的。

1.2 中等粒度IO写策略

中等粒度IO指介于4KB和2MB之间的请求。对于此类请求,同样优先写入PMEM。此策略主要是考虑到减少闪存中数据的移动和擦除操作,以优化闪存的寿命。

虽然SSD的更新操作以page为粒度,但FTL(Flash Translation Layer)层执行擦除操作时,需要以block为单位进行。一个block中包含若干个page,典型的block大小为2MB。当4KB-2MB大小的随机数据写入闪存时,会分配新的page进行存储,同时将旧的page标记为无效。此时,无效数据在block的连续空间上形成空洞。随着数据的不断写入,FTL需要执行垃圾收集(GC)操作,将有效数据块进行移动,然后擦除和回收完整的block空间。

本系统对于4KB-2MB大小的数据直接写入持久内存中,并将逻辑上连续的数据不断的合并成2MB大小的数据块,然后按需将其迁移到SSD中。这样既减少了SSD的数据写入,也减少了FTL层执行垃圾收集时数据的移动和擦除操作,从而减少了闪存的磨损。同时,因为持久内存优秀的性能,将数据直接写入持久内存也提高了系统的整体性能表现。

1.3 大粒度IO写策略

大粒度IO指2MB以上的IO,对于此类数据会直接写入闪存中。一方面,现有的PMEM设备在大粒度IO的吞吐率上优势不明显;另一方面,由于中小粒度IO已写入PMEM,故此时数据写入闪存时大概率是顺序存储的,闪存block中出现空洞的概率较小,从而减轻了FTL层执行垃圾收集的频率和开销。

1.4 热点数据

除了按照数据粒度进行区分之外,本系统还针对数据读写频度进行统计,并将热点数据优先存储到PMEM中。一方面,对于与频繁读取的数据,将其存储到PMEM中可以显著降低读取延迟,提升访问性能;另一方面,对于频繁更新的数据,将写操作转移到PMEM,也可以进一步优化SSD的寿命。

2 数据放置策略

对于上述4类数据,在写入时根据类型不同,优先写入PMEM或SSD,并根据PMEM的空间容量,以及数据热点的识别情况进行迁移。

当PMEM剩余空间不足时,需要将数据刷写到SSD中,以释放存储空间。当热点数据变更时,则需要将SSD中的数据缓存到PMEM,以提升访问性能。

2.1 中小粒度IO写流程

小粒度IO和中等粒度IO的写入流程相同,即优先写入PMEM。具体步骤为:

(1)从索引获取数据在持久内存中的地址;

(2)若该地址有效,转到步骤5;

(3)否则,在持久内存中分配存储空间;成功申请空间后,跳转到步骤5;

(4)否则,触发持久内存空间回收机制;然后重新申请分配存储空间,即跳转回步骤3;

(5)将数据写入持久内存;

(6)更新索引信息。

需要指出的是,随着PMEM使用空间的增加,当中小粒度IO再次写入时,可能实际已迁移到SSD中。此时,仍然可以通过上述流程将新数据写入PMEM,同时回收SSD存储空间。

由于SSD实际总是执行异地写入,故保留该SSD空间以用于后续可能的PMEM空间回收(此时该数据被再次迁移到SSD)并不会产生实际收益。立即回收该空间,同时向SSD发送TRIM或UNMAP指令反而更加有利于优化SSD的垃圾收集。

2.2 大粒度IO写流程

大粒度IO优先写入SSD,但仍然应当先在空间索引中查询其是否存储在PMEM中,因为大粒度IO可能被识别为热点数据而迁移到PMEM中。

如果数据不在PMEM中,则按如下流程处理:

(1)获取数据在SSD中的空间地址;

(2)若该地址已存在且有效,转到步骤5;

(3)在SSD中分配存储空间地址;

(4)将数据写入SSD地址对应的数据存储空间;

(5)更新索引信息。

与PMEM空间不同,当无法分配SSD存储空间时,则意味着整个系统的可用容量不足,写流程将会返回失败信息,提示用户进行清理或扩容操作。

2.3 PMEM空间回收

随着数据的写入,PMEM剩余空间逐步减少。当达到设定的阈值时,触发持久内存空间回收机制。根据数据放置的策略,持久内存中的数据可能包括读写热点数据、中等粒度数据,以及小粒度数据。其中,热点数据可能是大粒度数据,也可能是中小粒度数据。

执行空间回收时,需要按恰当的优先级处理上述各类数据,以达到最佳效果。具体而言,按照热点数据(大粒度)、中等粒度数据、小粒度数据、热点数据(中小粒度)的顺序进行回收。这样排序的目的是尽快释放更多的持久内存空间,此外,将更大粒度的数据写入SSD时,写放大更低,对垃圾收集的影响也更小。

当PMEM剩余空间满足预定比例后,回收即告终止。

2.4 热点数据迁移

对于频繁访问的热点数据,可以将其从闪存空间迁移到持久内存空间,即对数据按热度进行分级存储。热点数据从SSD迁移到PMEM的具体步骤如下:

(1)根据热点数据识别算法识别闪存中的热点数据;

(2)申请热点数据的持久内存的空间地址;若持久内存不足导致申请失败,则直接结束;

(3)将热点数据写入持久内存中对应的地址;

(4)更新热点数据的索引信息,讲闪存空间地址替换为持久内存空间地址。

当PMEM空间申请失败时,可以认为PMEM空间回收操作正在进行,故无须在本流程中实现额外的空间回收机制。

结语

通过在闪存存储中引入持久内存设备,并针对持久内存和闪存的IO特征优化数据读写策略,本系统提升了闪存存储的性能和寿命。尤其是QLC闪存介质的SSD,其使用场景得到了扩展,使得基于低成本的容量型SSD搭建高性能闪存存储成为可能,有效地降低了系统的整体拥有成本。

大多数系统中的IO都是中小粒度的IO,故而,使用PMEM优化闪存存储的好处显而易见,在获得极大的IOPS提升的同时,SSD的写入次数也相应降低,有效延长了SSD的使用寿命。

随着RDMA技术的普及,通过高速网络访问持久内存的技术和规范也日趋成熟,在低延迟网络上搭建基于持久内存和SSD的分布式閃存存储也成为可能,大容量、高性能的分布式存储有着广泛的应用前景,是未来主要的技术发展方向。

参考文献:

[1]陆游游,舒继武.闪存存储系统综述[J].计算机研究与发展,2013,50(01):49-59.

[2]邓傲松.闪存友好型文件系统性能优化技术的设计[D].重庆大学,2018.

[3]石亮.闪存存储系统的性能优化研究[D].中国科学技术大学,2013.

[4]曾祥伟.基于闪存特性的固态盘缓存算法研究[D].暨南大学,2020.

[5]李棋.基于闪存文件系统的存储技术研究[D].重庆大学,2019.

[6]韩书楷,熊子威,蒋德钧,熊劲.基于持久化内存的索引设计重新思考与优化[J].计算机研究与发展,2021,58(02):356-370.

[7]徐远超.面向新型非易失存储的文件系统研究综述[J].计算机应用研究,2021,38(06):1601-1610.

[8]肖仁智,冯丹,胡燏翀,张晓祎,程良锋.面向非易失内存的数据一致性研究综述[J].计算机研究与发展,2020,57(01):85-101.

[9]王佰平.基于新型非易失存储的混合内存数据页交换算法研究[D].重庆大学,2019.

基金项目:国家重点研发计划(2018YFB1003302);广东省科研事业单位重点领域研发计划项目(2020B010139 0001)

作者简介:陈正华(1983— ),男,工程师,CCF会员,研究方向:分布式存储、持久内存、高性能网络。

猜你喜欢
性能
Fe基非晶粉末降解性能研究
高性能混凝土不同配合比下的性能研究
ARM 公布Cortex-A78 CPU
生与死的尊严(散文)
桌面端,GTX 1650并不是千元价位的显卡好选择
千元最具性价比的显卡
基于SVM算法高铝钢连铸保护渣性能预测
基于SVM算法高铝钢连铸保护渣性能预测
阻燃假人系统下的防火服性能测试
阻燃假人系统下的防火服性能测试