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

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

1,  具有极高的顺序写性能,一般的随机写性能。SSD内部采用日志型的写入方式,新写入的数据都会被写入到新的NAND单元,并且建立LBA与PBA之间的映射关系。正因为如此,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架构为核心的存储系统。RISL是Random Input Stream Layout的缩写,该架构最大的特性是充分利用NVMeSSD的读写特性,将业务的随机IO写请求转换成顺序数据流写入SSD。在RISL层将写请求进行聚合,转换成顺序数据流之后再写入存储层,对于SSD而言可以做到顺序写入的效果,提升了SSD内部固件的工作效率,从而提升系统整体性能。在读请求处理方面,RISL内部建立了请求映射表,通过请求映射表将用户请求转换至SSD请求,对于SSD而言实现了读请求随机访问的目的。RISL架构的存储系统框架如下图所示:

RISL系统分成两大部分,一部分是StorageService System,该部分负责写请求顺序化以及读请求的映射处理,并且在写请求处理过程中可以加入数据去重、压缩等机制,更加高效的使用SSD存储空间;另一部分是FlashRAID存储层,对外提供存储对象Container。FlashRAID提供的存储对象分为两大类,一类为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的性能优势。

一种NVMe SSD友好的数据存储系统设计相关推荐

  1. 三种最典型的大数据存储技术路线

    三种最典型的大数据存储技术路线 近期由中关村大数据产业联盟举办的"大数据100分"线上研讨会中,南大通用的CTO.资深业界专家武新博士同众多网友分享了底层数据处理技术的发展趋势和正 ...

  2. 阿里云总监课,存储系统设计——NVMe SSD性能影响因素一探究竟

    目录 1 存储介质的变革 2 NVME SSD成为主流 2.1 NAND FLASH介质发展 2.2 软件层面看SSD--多队列技术 2.3 深入理解SSD硬件 3 影响NVME SSD的性能因素 3 ...

  3. 阿里云储道深度解析存储系统设计——NVMe SSD性能影响因素一探究竟

    NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NVMe S ...

  4. 【阿里云总监课】存储系统设计——NVMe SSD性能影响因素一探究竟

    目录 1 存储介质的变革 2 NVME SSD成为主流 2.1 NAND FLASH介质发展 2.2 软件层面看SSD--多队列技术 2.3 深入理解SSD硬件 3 影响NVME SSD的性能因素 3 ...

  5. 存储系统设计——NVMe SSD性能影响因素一探究竟

    摘要: NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NV ...

  6. 【Elasticsearch】如何设计可扩展的 Elasticsearch 数据存储的架构

    1.概述 转载:如何设计可扩展的 Elasticsearch 数据存储的架构 Elasticsearch 允许您存储.搜索和分析大量的结构化或非结构化数据.因为在速度.可扩展性和灵活性方面拥有优势,E ...

  7. Apache Durid 数据存储(Hadoop概述 安装 HDFS概述 数据存储遇到的问题)

    Apache Durid 数据存储 Apache Durid 数据存储 1. 分布式技术 1.1 为什么需要分布式 1.1.1 计算问题 1.1.2 存储问题 1.2 分布式系统概述 1.3 分布式实 ...

  8. 利用数据存储技术实现数据安全合理备份

    企业目前的日常工作越来越依靠信息系统的支撑.各类系统中保存着企业大量的业务数据,这些数据成为企业经营决策的客观依据,是企业成长发展的宝贵资源raid数据恢复.一旦数据在传输.存储.交换等过程中丢失,便 ...

  9. 虚拟化磁盘模式、数据存储详解

    虚拟化磁盘模式.数据存储详解 1. 配置模式 1.1. 普通 1.2. 普通延迟置零 1.3. 精简 2. 磁盘模式 2.1. 从属 2.2. 独立-持久 2.3. 独立-非持久 3. 数据存储 3. ...

最新文章

  1. 用字体选择对话框改变字体
  2. C语言函数与接口有什么区别?
  3. boost::fibers::shared_future的用法实例
  4. Android AIDL使用介绍(1)基本使用
  5. 思科设备路由器间IPsec ×××实现私网之间通信实战
  6. mc服务器右上角信号格,手机右上角的网络信号标识是什么意思?
  7. backtrader数据基础
  8. python whl_python whl是什么文件
  9. 【今日CV 计算机视觉论文速览 第112期】Mon, 6 May 2019
  10. 错误记录(10)SyntaxError: identifier starts immediately after numeric literal
  11. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...
  12. Js获取file上传控件的文件路径总结
  13. 淘宝api 处理对象和数组用到的自定义函数 以及 开发能用到的方法
  14. 整合SSM框架 -- 简单基础SSM项目
  15. 5G端到端网络切片进展与挑战分析
  16. os.path -- 常用路径操作
  17. 2018计算机通信网络,2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个...
  18. Ra-08系列开发板入门教程,标准LoRaWAN协议对接国外 TTN LoRaWAN 开源服务器。
  19. h5打开麦克风权限录音_h5打开麦克风权限录音_原来电脑上自带录音功能,很多人还不知道,真的太实用了......
  20. 移动App开发 MUI框架 利用软键盘的搜索键实现页面跳转并传值

热门文章

  1. Jquery Types 小结
  2. 一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法
  3. MPLS ××× 的基本配置(五)
  4. Xcode7 运行iOS10以上系统(10.1、10.2、10.3)解决Could not find Developer Disk Image
  5. 业余实现一个统计A股数据工具
  6. ios学习笔记-数据持久化
  7. code blocks 快捷键
  8. Linux系统下RAID和LVM的实现
  9. 数字资产云交易所搭建开发平台,云交易的优势在哪?
  10. dubbo学习笔记 第四章构建dubbo的web应用 上