SSD和FTL概述:SSD主控维护FTL

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

参考文献

 

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驱动器更可靠”(不是电池)

参考文献

 

延迟编号

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

  • 快取存取:〜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媒体的本机接口。

参考文献

 

FTL概述


FTL-Flash翻译层


FTL功能

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

参考文献

 

FTL-混合级别的映射


FTL-混合级映射1


逻辑到物理地址的映射

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

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

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

参考文献

 

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引入的延迟
  • 针对闪光操作的应用定制优化

开路固态硬盘

应用程序管理的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等技术的大数据应用程序中的批量上传和下载。 。

 

参考文献

 

设计变更-DSSD


DSSD-EMC机架式闪存设备

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

参考文献

 

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


基于内容的寻址

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

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

参考文献

 

设计转移-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的类似想法

参考文献

设计变更-RAID 2.0,FlashRAID

许多设计要点适合SSD

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

参考文献

图片来自:SSD故障模型

 

新生代


英特尔3D XPoint

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

NVMe over Fabrics

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

NVDIMM

纸和材料摘要

参考文献

阅读论文的提示

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

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

搜索参考计数很高的论文

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

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

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

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

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

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

 

©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页