一种nvmessd友好的数据存储系统设计

author author     2022-08-08     209

关键词:

闪存介质的大规模使用给传统存储系统的设计带来了强烈的冲击,传统存储系统的很多设计理念不再适用于闪存存储系统。传统存储在设计过程中紧紧围绕磁盘抖动问题,所以在数据布局方面会适应磁盘的顺序读写特征。在设计过程中会大量采用内存作为磁盘缓存,利用数据局部性特征过滤掉大量的磁盘操作,并且将小写聚合成大写;在IO调度器方面,通过LBA的调度将地址临近的IO进行聚合,从而可以优化IO Pattern,使得磁盘的读写操作具有更强的顺序性;在磁盘内部,通过NCQ方式减少磁头的抖动,根据磁头当前所在位置对输入IO进行重新排序与调度,从而达到减少磁盘抖动的目的,提升磁盘访问性能。但是在SSD这种介质上,磁盘所存在的IO特性已经荡然无存,传统对磁盘所做的大量优化并不能给SSD带来价值,在有些情况下反而会影响性能。在基本存储介质、存储原理发生变革的情况下,存储系统软件的设计也需要做出调整,闪存系统设计一方面需要充分利用SSD带来的价值,另一方面需要规避SSD所存在的问题。总的来说,如下图所示,存储系统设计需要紧紧围绕应用与介质特性。磁盘和SSD相比存在一些共同的特性,但是各自又存在自己独特的特性。为了更好的发挥SSD特性,满足应用需求,需要设计面向SSD的存储软件系统。


技术分享


面向SSD设计的存储系统软件,一方面需要发挥SSD的特性,另一方面需要规避SSD的问题。NVMe SSD具有的特性可以归纳如下:

1,  具有极高的顺序写性能,一般的随机写性能。SSD内部采用日志型的写入方式,新写入的数据都会被写入到新的NAND单元,并且建立LBAPBA之间的映射关系。正因为如此,SSD内部存在垃圾回收机制,对无效LBA映射单元进行回收。垃圾回收会对SSD性能产生重大影响,通常所说的SSD稳态性能,就是在SSD内部垃圾回收单元正常运行情况下的测试结果。对于大块顺序写来说,每次写入的LBA都是连续的,因此可以大大简化SSD内部的垃圾回收运行机制,减少垃圾回收过程中的数据搬移操作,从而提升SSD的整体性能。对于随机写操作,LBA地址与PBA进行杂乱映射,垃圾回收过程中存在大量的数据搬移操作,一方面影响SSD的写放大;另一方面会造成SSD性能下降。因此,对于NVMe SSD来说,顺序写性能要高于随机写性能。为了最大程度的发挥SSD性能,对SSD尽可能采用顺序写入的方式,并且采用与SSD内部Data Frame对齐的大数据块方式,这是对SSD最为友好的IO模式。


2,  具有极高的随机读性能。SSD内部采用NANDFlash存储介质,对于这种介质不存在类似磁盘的随机读问题。对于读请求,在SSD内部的固件首先将LBA转换成PBA,然后从NAND介质上读取数据。


通过SSD的读写特性分析,我们设计了以RISL架构为核心的存储系统。RISLRandom Input Stream Layout的缩写,该架构最大的特性是充分利用NVMeSSD的读写特性,将业务的随机IO写请求转换成顺序数据流写入SSD。在RISL层将写请求进行聚合,转换成顺序数据流之后再写入存储层,对于SSD而言可以做到顺序写入的效果,提升了SSD内部固件的工作效率,从而提升系统整体性能。在读请求处理方面,RISL内部建立了请求映射表,通过请求映射表将用户请求转换至SSD请求,对于SSD而言实现了读请求随机访问的目的。RISL架构的存储系统框架如下图所示:


技术分享


RISL系统分成两大部分,一部分是StorageService System,该部分负责写请求顺序化以及读请求的映射处理,并且在写请求处理过程中可以加入数据去重、压缩等机制,更加高效的使用SSD存储空间;另一部分是FlashRAID存储层,对外提供存储对象ContainerFlashRAID提供的存储对象分为两大类,一类为Sealed Container,该类对象具备只读特性;另一类为Active Container,具备可写特性。写数据流只会往Active Container中写入数据,当Active Container被写满之后,该类对象会转换成Sealed Container。为了保证在系统突然断电情况下的数据一致性,设计采用了NVDIMM存储介质,通过该介质对用户数据进行聚合处理,将随机的业务写数据转换成顺序数据流。聚合完成的顺序数据流通过数据去重引擎以及数据压缩引擎进行数据缩减操作,提升SSD的利用率。在数据写过程中会产生大量的元数据,这些元数据都具有小数据的特性,通过NVDIMM的聚合首先将元数据转换成大数据块,然后再写入持久化SSD介质,这样可以避免元数据操作引入的小写问题。

 

对于读操作,逻辑处理过程比较简单,在RISL架构中维护了一个数据映射表格,通过该表格实现业务请求与SSD请求之间的映射。SSD请求在存储介质上随机分布,获取并发读取效果。RISL架构中的数据映射表格容量与存储容量相关,为了提升IO性能,该映射表格通常会全部加载在内存中。此外,该表格在写处理过程中会对其进行修改,在读操作过程中会对其进行检索,因此,如何保证该表格的并发访问是设计与实现的重点。

 

存储系统的设计本质上就是数据布局的设计。从数据布局的角度来看RISL,其可以很好的与NVMe SSD的特性进行匹配。下图所示是RISL架构的数据布局图:


技术分享


其中绿点表示读请求,红点表示写请求。从图中可以看出写请求在SSD上具有很强的局部性,具备顺序写的特点;读请求在SSD上具有很强的离散性。读写请求在SSD上没有冲突,但是在NVDIMM中具有混合访问特性,也就是说热点数据在NVDIMM中进行处理,避免读写在SSD中冲突,从而可以缓解读请求由于写请求而引入的延迟的问题。从图中也可以看出RISL架构的数据布局与磁盘存储系统的数据布局完全不同,从而也说明了RISL是一种面向SSD设计、SSD友好的存储系统设计方法。

 

RISL架构设计还需要考虑的一个问题是数据回收(GarbageCollection)。由于RISL将用户随机写请求转换成了顺序IO流,简化了SSD内部的数据回收操作,该问题被转移到了系统层面去解决。由于系统层面离业务层更近,因此可以与业务进行配合更好的实现垃圾数据的回收。在面向Flash的存储系统设计中,有一种设计思路是将底层的FTL转移到系统层去实现,该想法的一个缺陷是需要定制化SSD,将NAND Flash的接口直接暴露给系统层。RISL架构可以在标准SSD上实现,但同样可以在系统层实现垃圾数据块的回收,并且可以与业务配合提升闪存存储系统的性能。这是RISL架构的优势。

 

RISL架构设计的基础上,我们实现了闪存存储系统的原型系统。如下图所示,在多块Intel NVMe SSD盘的基础上,当写IOPS达到80万时,IO的平均延迟可以控制在160us左右。达到了高IOPS、低IO延迟的设计目标。


技术分享


技术分享


NVMe SSD是未来的发展趋势,随着NVMe SSD在主存储领域的大规模应用,面向NVMe SSD的存储系统设计必将是一个热门话题。RISL架构是一种NVMe SSD友好的存储系统设计方法,符合了SSD的读写特性,可以很好的发挥SSD的性能优势。


本文出自 “存储之道” 博客,请务必保留此出处http://alanwu.blog.51cto.com/3652632/1859361

nvme闪存存储系统设计挑战

...但是这种量变还不至于对传统软件栈带来致命打击。对于NVMeSSD而言,闪 查看详情

flashraid技术白皮书

1概述FlashRAID是面向NVMeSSD设计的一套软件定义存储系统,在设计之初考虑了新型存储介质的特性以及存在的问题。在系统设计过程中,充分利用了新型介质的特性,并且通过技术革新解决了高性能存储介质的数据保护、性能聚合... 查看详情

硬raid可以为nvmessd数据可靠性保驾护航吗?

随着NANDFlash价格的不断下降,NVMeSSD正在慢慢普及。NVMeSSD由于极高的性能常被用作数据缓存,即使NVMeSSD发生故障,数据还在持久化介质中存储,不会导致数据丢失等严重事件。随着NVMeSSD的大量使用,其逐渐被用作持久化存储介... 查看详情

数据采—存—传系统(fpga)

...域,可以存储更长时间的观测数据。    另外,NVMESSD硬盘为双向全双工方式,读盘与存盘互不影响。在高速存盘的同时即可将盘中数据高速读出。在一些高校研究领域,该系统还可以用于近存储计算、存算一体... 查看详情

数据存储方式——kvell:快速持续键值存储的设计与实现

...储范式2.SSD性能的发展IOPS延迟和带宽吞吐量降低I/O突发3.NVMessd上当前KVs的问题3.1CPU是瓶颈CPU是LSMKVs的瓶颈CPU是B树KVs的瓶颈3.2LSM和B树KVs的性能波动二、KVELL1.KVs设计原则1.1不共享1.2不要在磁盘上排序,而是将索引保存在内存中1... 查看详情

数据存储方式——kvell:快速持续键值存储的设计与实现

...储范式2.SSD性能的发展IOPS延迟和带宽吞吐量降低I/O突发3.NVMessd上当前KVs的问题3.1CPU是瓶颈CPU是LSMKVs的瓶颈CPU是B树KVs的瓶颈3.2LSM和B树KVs的性能波动二、KVELL1.KVs设计原则1.1不共享1.2不要在磁盘上排序,而是将索引保存在内存中1... 查看详情

多功能存储器芯片的测试系统设计方案

...子技术的飞速发展,存储器的种类日益繁多,每一种存储器都有其独有的操作时序,为了提高存储器芯片的测试效率,一种多功能存储器芯片的测试系统应运而生。本文提出了一种多功能存储器芯片的测试系统硬... 查看详情

alluxio2.0特性-预览

...理被认为是Hadoop的弱点,但Alluxio应该将元数据管理变成一种优势。更友好的数据工程界面Alluxio的创建重点是基于Hadoop的计算工作负载。但是多年来,数据密集型计算工作负载的数量和类型已经爆炸式增长,并且在现有数据或新... 查看详情

分布式日志存储架构设计方案

...如何设计一个高可用、可扩展的分布式日志系统。本文是一种理论性的方案探索,当然各卡二条的所有博客均来自微信公众号:卡二条的技术圈 查看详情

nvmessd和普通ssd区别

参考技术A采用NVMe协议固态硬盘相比平台固态硬盘的优势包括:性能有数倍的提升;可大幅降低延迟;NVMe可以把最大队列深度从32提升到64000,SSD的IOPS能力也会得到大幅提升;自动功耗状态切换和动态能耗管理功能大大降低功耗... 查看详情

数据存储方式——kvell:快速持续键值存储的设计与实现

...储范式2.SSD性能的发展IOPS延迟和带宽吞吐量降低I/O突发3.NVMessd上当前KVs的问题3.1CPU是瓶颈CPU是LSMKVs的瓶颈CPU是B树KVs的瓶颈3.2LSM和B树KVs的性能波动二、KVELL1.KVs设计原则1.1不共享1.2不要在磁盘上排序,而是将索引保存在内存中1... 查看详情

是否有一种 OCP 友好的方式来动态选择 DbContext 中要访问的集合?

】是否有一种OCP友好的方式来动态选择DbContext中要访问的集合?【英文标题】:IsthereanOCP-friendlywaytodynamicallychoosewhichcollectioninaDbContexttoaccess?【发布时间】:2018-08-2416:48:22【问题描述】:我正在研究一种从数据库中检索记录集合... 查看详情

面向数据可靠性存储系统设计思想探讨

...的,和计算系统存在的最大区别在于存储系统所承载的是数据,一旦系统出现故障,不仅业务的连续性得不到保障,更为重要的是用户数据将会造成丢失。计算节点发生故障,最多造成业务连续性中断,这是与存储系统相比在可... 查看详情

nvme设备的性能有多高?

NVMeSSD是存储盘的演进方向,与SATA/SASSSD相比,NVMeSSD具有10倍以上的性能增长。这主要还是得益于NVMeSSD的多队列技术,通过多队列技术可以将IO访问并行化,从而可以提升系统整体性能。 在NVMe存储生态中,SSD技术已经变得非... 查看详情

云存储架构框架设计|最佳实践

...。2.1云存储通用框架相比于传统存储来说,云存储系统是一种层次化的体系结构,其通用框架可参考图1分为云存储服务和云存 查看详情

soc嵌入式软件架构设计之四:内存空间规划分配

...有两种体系结构:哈佛结构和冯诺依曼结构。哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如80251,代码空间与数据空间完全分开,独立编址;冯诺依曼结构是一种将程序指令存储器和数据存储 查看详情

杉岩海量对象存储系统完美替代documentum

...障,更要能够完美接纳客户现有数据,所以需要提供平滑友好的Documentum迁移方案。Documentum应用架构基于Documentum的应用平台如图2所示,存储仓库(Repository)作为数据及元数据的最终存放位置,包含内容存储系统(ContentStore)及... 查看详情

成为架构师课程系列高性能系统设计之分布式缓存

...的增多,数据库的磁盘IO逐渐成了系统的瓶颈,我们需要一种访问更快的组件来降低请求响应时间,提升整体系统性能。这时我们就会使用缓存。 那么什么是缓存,我们又该如何将它的优势最大化呢?本节课是缓存篇的总纲... 查看详情