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

2023-10-14 08:18
文章标签 概述 维护 ssd 主控 ftl

本文主要是介绍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

参考文献

  • 阿兰乌(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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209266

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

java集合的概述

集合就是一个容器,我们可以把多个对象放入的容器中。就像水杯(假设容量可以不断扩大)一样,你可以往水杯中不断地添加水,既然是水杯,你就不能往里添加沙子,也就是说集合中添加的对象必须是同一个类型的(引用类型,而不能是基本类型)。 看到集合的介绍会让我们的想起数组,那么集合和数组有什么区别呢? 首先,数组的大小是固定的,而集合理论上大小是不限的。 其次,数组既可以存储基本数据类型的数据,也可以存储

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

【CSS in Depth 2 精译_023】第四章概述 + 4.1 Flexbox 布局的基本原理

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型(已

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您