Table of Contents

SSD概述

SSD市场增长

SSD芯片结构

MLC与eMLC与SLC

SSD接口

FTL概述

FTL-Flash翻译层

FTL-混合级别的映射

FTL-混合级映射1

FTL-混合级别的映射2

FTL-混合级别的映射3

FTL-混合级别的映射4

FTL-混合级别的映射5

FTL-混合级别的映射6

绕过FTL-开放通道SSD

设计转变

设计转变-Seastar

设计变更-DSSD

设计转移-基于内容的寻址

设计转移-LSM树写放大

设计变更-RocksDB

设计变更-Ceph BlueStore

新生代


SSD概述


SSD与机械硬盘最大的不同是存储介质,即nand flash。

FTL就是负责管理nand flash的软件模块,是主控上运行的"操作系统"(firmware) 中最核心的部分。

SSD主控本质是一颗处理器,主要基于ARM架构,这和手机处理器有相似的一面。也有部分SSD厂家采用RISC架构,使其具备CPU级别的运算能力。

不同架构、核心/晶体管数量的多少、频率的高低关乎主控的性能。可以说,一款主控芯片的好坏直接决定了固态硬盘的实际体验和使用寿命。

目前,主流市场主控品牌有:三星,慧荣,群联 和Marvell。


简短的书来预定我收集的SSD和FTL知识。

SSD市场增长


几乎100%的增长速度是每个人都在看SSD的原因。

资料来源:TMR分析(2015年8月)

资料来源:TrendFocus(2016)

SSD芯片结构


闪存芯片

  • 1个芯片/设备->多个DIE
  • 1个DIE->多个平面
  • 1个平面->数千个方块:平面可以并行访问
  • 1块->数百页:块是擦除的单位
  • 1页->通常为4或8 KB +一百字节的隐藏空间:页面(page)是读写的单位
  • 单元:SLC,MLC,TLC:基本位存储单元:最大P / E周期:MLC从1500到10,000;SLC高达100,000

参考文献

  • 阿兰乌(Alanwu)的博客:[1668609] [1544227]
  • 储存架构

MLC与eMLC与SLC


作为SSD主要元件的NAND闪存,我们经常见到的有SLC和MLC两种,甚至还细分出eSLC和eMLC等等,现在我们谈一下他们之间的区别。

SLC全称single-level cell,即单阶存储单元;MLC全称Multi-level cell,即多阶存储单元。因NAND闪存是一种电压元件,因此它以不同的电压范围来代表不同的数据

单元比较

  • SLC-昂贵。快速,可靠,高市盈率
  • MLC-消费者等级。成本比SLC低2至4倍,P / E比SLC低10倍,写入速度较低,可靠性较低
  • eMLC-企业(等级)MLC。更好的控制器来管理损耗和纠错。
  • TLC-三星拥护

生产中的Flash可靠性:预期和意外(Google) [2016,14引用]

  • “我们没有证据表明高端SLC驱动器在典型的驱动器使用寿命内比MLC驱动器更可靠”(不是电池)

参考文献

  • MLC与eMLC与SLC与TLC

延迟编号

每个程序员都应该知道的延迟数

  • 快取存取:〜1ns
  • 内存访问:〜100ns
  • SSD存取:〜10μs
  • 磁盘访问时间:〜10ms
  • 数据中心净RTT:〜500μs

SSD接口


SSD接口(不包括NVRAM)

  • SATA / SAS:传统的HDD接口,现在已映射到SSD
  • PCIe:SSD太快了,SATA / SAS总线速度还不够。将SSD直接连接到PCI总线。快多了。
  • NVMe:从PCIe改进。Flash媒体的本机接口。

参考文献

  • SATA,PCIe和NVMe有什么区别
  • 术语说明:SSD与M.2,PCIe与NVMe

FTL概述


FTL-Flash翻译层


FTL功能

  • 接口适配器:将闪存接口映射到SCSI / SATA / PCIe / NVMe接口
  • 坏块管理:SSD在首次运行时记录其坏块
  • 逻辑块映射:用物理地址映射逻辑地址
  • 磨损均衡:保存P / E周期
  • 垃圾收集:由于NAND P / E逻辑,管理垃圾收集
  • 写放大:避免写入比用户输入更多的实际数据

参考文献

  • 了解FTL
  • 阿兰吾的网志:[1427101]

FTL-混合级别的映射


FTL-混合级映射1


逻辑到物理地址的映射

  • 块级映射:太粗糙
  • 页面级映射:过多的matadata
  • 混合级映射:今天使用的

用于紧凑型闪存系统的节省空间的闪存翻译层[ 2002,988参考]

  • 混合级映射FTL的初始论文
  • 关键思想是在闪存中保留少量日志块,以用作覆盖操作的写缓冲区

参考文献

  • 阿兰吾的网志:[1427101]

FTL-混合级别的映射2


一种可重新配置的FTL(闪存转换层)架构,用于基于NAND闪存的应用[2008,232参考]

介绍Flash结构和详细概念的好论文

  • “作为一种在页面映射和块映射之间折衷的方法,……一种混合映射方案……由Kim等首先提出。[2002]。关键思想...
  • 为了解决日志块方案的这个问题,已经提出了全关联扇区转换(FAST)方案[Lee et al。2006]…
  • Chang和Kuo [2004]提出了一种针对大型闪存存储系统的灵活管理方案……
  • Kang等。[2006]提出了一种称为“ N到N + M映射”的超级块映射方案。……在这种方案中,超级块由……组成”

FTL-混合级别的映射3


基于日志缓冲区的Flash转换层,使用完全关联的扇区转换[2007,778参考]

  • 通常称为FAST。从“用于紧凑型闪存系统的节省空间的闪存翻译层”改进
  • 关键思想:在FAST中,所有数据块都可以共享一个日志块。
  • 关键思想:FAST还维护单个日志块,称为顺序日志块,以操纵顺序写入

FTL-混合级别的映射4


用于NAND闪存的基于超级块的闪存转换层[2006,368参考]

闪存分为多个超级块,每个超级块由N个数据块+ M个日志块组成

  • 这样,集关联就可以完全配置,就像FAST讨论的那样
  • 垃圾收集开销减少多达40%
  • 通过将对同一逻辑页面的写入吸收到日志块中来利用“块级时间局部性”
  • 利用“块级空间局部性”来提高存储利用率,因为几个相邻的逻辑块共享一个U块

FTL-混合级别的映射5


上一篇:基于NAND闪存的存储系统的位置感知领域转换[2008,298参考]

  • 从“使用完全关联的扇区转换的基于日志缓冲区的闪存转换层”和“用于NAND闪存的基于超级块的闪存转换层”进行了改进
  • 关键思想:LAST将日志缓冲区分为两部分:顺序日志缓冲区和随机日志缓冲区
  • 关键思想:顺序日志缓冲区由几个顺序日志块组成,并且一个顺序日志块仅与一个数据块相关联
  • 关键思想:随机日志缓冲区分为热分区和冷分区。通过将具有高时间局部性的数据聚类到热分区中,我们可以得出完全合并的合并成本

FTL-混合级别的映射6


含义:尽管FTL确实可以重新映射,但是顺序写入仍然可以使SSD受益,因为它可以缓解GC(更多的开关合并)

图片来自:FTL LAST

绕过FTL-开放通道SSD


难道这是传说中的FTL bypass????

虽然FTL是强大的,dominatedly采纳,有些人谁试图摆脱它

  • FTL的后台任务不会导致不确定的增长
  • 减少FTL引入的延迟
  • 针对闪光操作的应用定制优化

开路固态硬盘

  • SSD硬件直接将其内部通道公开给应用程序。FTL没有重新映射
  • 基于LSM树的键值存储在开放通道SSD上的高效设计和实现(百度)[2014,25 refs]
    • 在开放通道SSD上优化基于LSM树的KV存储(基于LevelDB)。吞吐量提高2倍以上。
    • SDF:用于Web级Internet存储系统的软件定义的闪存(百度)[2014,67引用]
      • SSD(带有FTL)带宽为原始NAND带宽的73%至81%(读取)和41%至51%(写入)
  • 针对开放通道SSD优化RocksDB
    • 控制放置,利用并行性,调度GC并最大程度地减少超额配置,控制IO调度
  • Linux内核集成
    • LightNVM

应用程序管理的Flash [2016,6个参考]

  • 向应用程序公开块IO接口和覆盖前擦除

设计转变


设计转变-Seastar


ScyllaDB Seastar

  • 最初旨在构建ScyllaDB,Cassandra的速度提高了10倍。现在开源
  • FCP异步编程:未来,承诺,完成。分片应用程序设计。
  • 用户空间TCP / IP堆栈,绕过内核。由Intel DPDK
  • 用户空间存储堆栈,绕过内核。通过Intel SPDK(WIP)

背后的理由

  • SSD是如此之快,以至于需要改进存储软件堆栈:更好的异步编程。FCP。无锁 CPU利用率。
  • SSD太快了,以至于Linux内核太慢了。
  • NVM也借鉴了相同的想法

图片:传统NoSQL与ScyllaDB架构

提高性能的关键是“无共享设计”,它可以利用当今的多核处理器。该项目现场指出:“由于跨内核共享信息需要昂贵的锁定,因此Seastar使用无共享模型将所有请求分片到单个内核。” “ Seastar每个内核运行一个应用程序线程,并且依赖于显式的消息传递,而不是线程之间的共享内存。这种设计避免了缓慢的,不可扩展的锁原语和缓存反弹。”

https://adtmag.com/articles/2015/09/23/scylladb-cassandra.aspx

该网站称,对高性能网络堆栈的选择以及对C ++未来和承诺的利用,也有助于Seastar提供的“令人振奋的”性能提升,“并发应用程序的高级新模型可为C ++程序员提供高性能和创建可理解,可测试的高质量代码的能力。”

新技术方法相结合,使ScyllaDB被称为Cassandra的“即插即用替代产品”,每台服务器每秒可以完成100万笔事务。该网站声称,这可以帮助应用程序赢得竞标站点,帮助电子商务网站处理假期销售高峰,并促进基于Apache Hadoop和Apache Spark等技术的大数据应用程序中的批量上传和下载。 。

参考文献

  • Seastar / ScyllaDB,或者我们如何实现比Cassandra快10倍的实现
  • Linux内核IO堆栈:https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram
  • The Linux Storage Stack Diagram
  • SPDK:存储性能开发套件(Storage Performance Development Kit)介绍

设计变更-DSSD


DSSD-EMC机架式闪存设备

  • 内核旁路,直接连接到DSSD设备
  • 与Seastar类似的想法

参考文献

  • DSSD D5数据访问方法
  • EMC DSSD D5的软件方面
  • DSSD通过NVMe架构闪存魔术弥补了访问延迟差距

设计转移-基于内容的寻址


基于内容的寻址

  • 数据放置由数据内容而不是地址确定。
  • 利用SSD的随机写入功能。对dedup的自然支持。
  • 在EMC XtremIO和SolidFire中采用

图片:SolidFire的SSD存储阵列权衡

参考文献

  • XtremIO体系结构(辩论很有名)
  • 比较现代的全闪存架构-Dave Wright,SolidFire
  • 变得清晰起来:闪存存储公司与NetApp / SolidFire的Dave Wright的谎言

设计转移-LSM树写放大


WiscKey:在SSD意识型存储中将密钥与值分离[ 2016,7参考]

  • 在LSM树中,由于压缩过程的缘故,同一数据在其整个生命周期中都会被读取和写入多次。

    • 写放大可以超过50倍。读放大可以超过300倍。
    • 许多SSD优化的键值存储都基于LSM树
  • WiscKey的改进
    • 将键与值分开以最小化I / O放大。只有密钥在LSM树中。
    • 当值大小达到1 KB时,WiscKey写放大迅速减小到接近1。在所有六个YCSB中,WiscKey比LevelDB和RocksDB都快。

设计变更-RocksDB


众所周知RocksDB是经过SSD优化的KV存储

  • 它基于Facebook开源的LevelDB开发。在许多方面针对SSD进行了优化。
  • RocksDB:针对基于闪存的SSD优化的键值存储
    • 为什么对Flash友好?

      • 空间,读取和写入放大的权衡。优化压实过程。
      • 低空间放大
      • 高读取QPS:减少互斥锁
      • 高写入吞吐量:并行压缩;并发存储器
  • 通用压缩:“它使写放大器更好,同时增加了读放大器和空间放大器”
    • 这是RocksDB的著名功能

设计变更-Ceph BlueStore


Ceph BlueStore

  • 开发单一用途的文件系统BlueFS,以直接在原始块设备上管理数据
  • 使用RocksDB存储对象元数据和WAL。更好地管理SSD。
  • 更快的软件层可利用SSD的高性能。Seastar的类似想法

参考文献

  • Ceph存储引擎bluestore解析
  • Ceph珠宝预览
  • “系统说明”博客
  • BlueStore幻灯片共享

设计变更-RAID 2.0,FlashRAID

许多设计要点适合SSD

  • 故障模型,写放大,随机写,RISL(随机输入流布局),零填充,修整,部分条带写...

参考文献

  • Alanwu的博客:[1876942] [1859361] [1722581] [1683079] [1682091] [1430288]
  • SSD故障模型

图片来自:SSD故障模型

新生代


英特尔3D XPoint

  • 于2015年中宣布,与闪存相比,延迟减少了十倍
  • 参考文献

NVMe over Fabrics

  • 有点像SAN上的SCSI闪存版本
  • DSSD的总线就像是NVMe over Fabrics的定制版本
  • 参考文献

NVDIMM

  • 将闪存连接到内存总线。甚至更快。
  • 参考文献
    • Wiki NVDIMM
    • NOVA纸

纸和材料摘要

参考文献

  • 阅读Fast16论文
  • FAST峰会:FAST16
  • 闪存峰会
  • 存储技术现场日
  • 阿兰吾的网志
  • MSST-海量存储系统和技术
  • OSDI-Google喜欢在这里发布新系统:OSDI16

阅读论文的提示

在每个会议上查看“最佳论文奖”

  • 在顶级会议上,他们是最好的

搜索参考计数很高的论文

  • 例如,行业改革者1800+,突破性技术900+,大型改进技术200+。
  • 第一年有10个以上的裁判代表非常好的论文

搜索行业领导者支持的论文

  • 例如,由Google,Microsoft等与他人合着

一些论文有广泛的背景介绍

  • 对于了解新技术非常有用

您甚至可以搜寻大学课程。他们有助于增进扎实的了解。

  • 例如,Ceph的作者从哪里毕业

SSD和FTL概述:SSD主控维护FTL相关推荐

  1. 固态硬盘SSD学习笔记:SSD综述

    一. SSD VS HDD SSD(Solid State Device):闪存介质+主控 HDD(Hard Disk Drive):马达+磁头+磁盘 方式 数据存储介质 读取写入 HDD 机械 磁盘 ...

  2. php ssd性能影响,SATA SSD有无缓存,是否影响速度性能实例

    原标题:SATA SSD有无缓存,是否影响速度性能实例 在前面一篇文章里我们通过为SATA SSD虚拟缓存的方法,证明了缓存对SATA SSD速度性能的影响不大. 一般消费级SSD的缓存都是采用的DD ...

  3. 在线ssd测试软件,AS SSD Benchmark测试

    AS SSD Benchmark测试 ● AS SSD Benchmark AS SSD是基于全方位性能的测试软件,它使用了非常深度的Queue Depth(QD)队列深度,以及非压缩测试. • AS ...

  4. 你知道企业级SSD与消费级SSD的区别吗?

    [引语] 前两天,一位从事大数据工作的好朋友问我: "企业级SSD与消费级SSD的区别是什么?" "大数据中心能否采用消费级SSD?" 我想,大部分朋友应该都知 ...

  5. mysql ssd优化_针对 SSD 的 MySQL IO 优化

    现在数据库标配基本都是SSD了,在使用SSD之前,对SSD进行了充分的测试,这其中当然包括最为关键的性能测试部分.下面就跟大家分享一下在SSD性能测试过程中遇到的一个问题和解决问题的思路. 我们的性能 ...

  6. 固态硬盘SSD学习笔记:SSD主控

    一. SSD系统架构 SSD作为数据存储设备,其实是一种典型的单机系统(Soc),有主控CPU,RAM,操作加速器,总线,数据编码译码等模块.操作对象为协议,数据命令,介质.操作目的是写入和读取用户数 ...

  7. [SSD固态硬盘技术 4] 主控详解

    固态硬盘(Solid State Drives),简称SSD.它是一种电脑存储设备,由闪存(FLASH). 闪存控制器.高速缓存(DRAM)组成.这是是固态硬盘的三个基本部件,对性能有关键影响. 了解 ...

  8. 镁光ssd管理工具 linux,SandForce主控固态硬盘SF-2241 vb2开卡成功经验

    一个威刚SP900 128G固态硬盘坏了,想用开卡软件来修复,然后就必须知道是什么主控,于是拆开看里面SandForce SF2241 VB2的主控芯片,flash看不懂600739095300463 ...

  9. [SSD固态硬盘技术 7] 主控核心设计

    摘要 本文介绍了此类设计选择的分类,并使用跟踪驱动的模拟器和从实际系统中提取的工作负载跟踪分析各种配置的可能性能.我们发现SSD性能和生命周期对工作负载非常敏感,并且通常较高的复杂系统问题出现在存储堆 ...

  10. SSD行业梳理之SSD主控芯片(转)

    目前高端SSD主控芯片订单主要集中在美国的Marvell和Microchip,主要面向工业领域和企业级系统:而消费类低端主控芯片则主要由台湾慧荣(SMI)和群联(Phison)瓜分,其中慧荣市场份额高 ...

最新文章

  1. 10年内,19个关键技术将改变世界
  2. ExtJs4–表格--Grid
  3. 软考高项之各大管理计划内容-攻坚记忆
  4. Qt Designer设置背景图片、颜色不影响其它组件小技巧,控件层级设置,组件的继承,styleSheet设置样式。
  5. arm体系结构与编程_教程:如何学习嵌入式系统(基于ARM平台)
  6. Sql 正确删除用户过期的数据
  7. 静态库与动态库的制作
  8. 群晖 6.1 重置 mysql_群晖 “还原”/系统可恢复”无限循环终极解决
  9. 1229: 求三个数的平均数
  10. 运维工程师被墨菲定律的各种打脸之DXX问题
  11. 前端开发工程师 - 02.JavaScript程序设计 - 第2章.进阶篇
  12. SQL面试题:经典50例
  13. 城市信息学其四—城市新陈代谢
  14. 从零开始开发微信小程序(四):微信小程序绑定系统账号并授权登录之后台端...
  15. 2016年6月,我们毕业了~~~
  16. Leetcode-数据结构-1.两数之和
  17. 天堂2mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位
  18. 国家信息分类和编码标准
  19. 第三届上海市青少年算法竞赛题解
  20. AXI总线学习(AXI34)

热门文章

  1. Navicat Premium 12注册码与破解解决方案
  2. PID与MPC控制方法
  3. python相关性系数显著性检验_Python气象数据处理与绘图(4):显著性检验
  4. 利用昆仑通态触摸屏实现数据采集和逻辑判断的例子
  5. PLSQL工具连接Oracle
  6. MybatisPlus官方文档
  7. 【Qt for Python官方教程】使用pyside6-rcc引入.qrc文件
  8. RedHat7安装yum并下载gcc
  9. Matlab:实现自定义圆孔阵列远场衍射仿真
  10. 本特利330505-02-02-02-00速度传感器