OpenChannelSSD在虚拟机下的研究与设计毕业论文
2020-04-04 10:50:30
摘 要
随着SSD在数据中心和存储阵列中的普及,SSD预计在未来几年成为二级存储的主要形式,对于固态硬盘的可预测延迟的需求也越来越高。然而传统的固态硬盘,通过不可预知的性能和不理想的资源利用率来提供更高级别的抽象,无法满足这个需求,因此,一种新型的开放通道固态硬盘正在出现,它将SSD的内部结构和特性暴露给主机,可以让主机控制其内部,有效的解决了传统固态硬盘的缺点,进一步提升了SSD的性能。
本文介绍了新型的开放通道固态硬盘的设计原理以及它所使用使用的物理页地址接口,对管理open-channel SSD的linux子系统LightNVM进行了分析,它具有适度的主机开销,可以被调整来限制读取延迟变化,并且可以被定制以实现可预测的I/O延迟,分别描述了它所提供的三个级别的抽象。然后本文详细描述了传统的FTL算法中的映射方式。
最后本文实现了在ubuntu的虚拟机中搭建模拟open-channel SSD的环境,通过深入分析open-channel SSD的原理,对搭建好的环境从用户空间进行了读/写/擦除测试。同时在该环境之上学习并分析了pblk的关键映射算法,指出了pblk中的映射算法的不足,最后完成了在pblk之上格式化文件系统的任务,并对挂载的文件系统进行了文件的读/写/随机查找/随机创建等测试。
关键词:open-channel SSD;LightNVM;固态硬盘;pblk
Abstract
With the popularity of SSDs in data centers and storage arrays, SSDs are expected to become the primary form of secondary storage in the coming years, and the demand for predictable delays for SSDs is also increasing. However, traditional SSDs provide higher levels of abstraction through unpredictable performance and unsatisfactory resource utilization and cannot meet this demand. Therefore, a new type of open channel SSD is emerging. It will have an internal structure of SSD. Exposing the features to the host allows the host to control its internals, effectively solving the shortcomings of traditional solid-state drives, and further enhancing the performance of the SSD.
This article describes the design principle of the new open-channel SSD and the physical page address interface it uses. It analyzes the Linux subsystem LightNVM managing open-channel SSDs. It has modest host overhead and can be adjusted to limit Read latency changes, and can be tailored to achieve predictable I/O latency, describe the three levels of abstraction it provides. Then this article describes in detail the mapping method in the traditional FTL algorithm.
In the end, this paper realized the environment of simulating open-channel SSDs in ubuntu's virtual machines. Through in-depth analysis of the principle of open-channel SSD, the built environment is read/write/erase tested from user space. At the same time, the key mapping algorithm of pblk is studied and analyzed on this environment. The inadequacy of the mapping algorithm in pblk is pointed out. Finally, the task of formatting the file system on pblk is completed, and the file system is mounted on the file. Read/write/random search/randomly created tests.
Key Words: open-channel SSD;LightNVM;Solid-State Drives;pblk
目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1研究背景及意义 1
1.2国内外研究现状 1
1.3主要工作及论文章节安排 2
第2章 关键技术说明 3
2.1 open-channel SSD概念与原理 3
2.1.1 open-channel SSD的原理及架构 3
2.1.2 NAND闪存的约束 4
2.2物理页地址I/O接口 5
2.3 Lightnvm的体系架构 6
2.4 FTL算法研究 7
2.5本章小结 9
第3章 PBLK算法核心流程 10
3.1 PBLK:物理块设备 10
3.1.1 PBLK的写缓冲区 10
3.1.2错误处理 10
3.1.3 pblk垃圾收集 11
3.2 PBLK读写流程中的映射算法 11
3.3 PBLK挂载文件系统 16
3.4本章小结 16
第4章 系统测试 17
4.1实验环境搭建 17
4.2 open-channel SSD环境测试 17
4.2.1测试程序设计 17
4.2.2 open-channel SSD环境测试结果分析 18
4.3 PBLK文件系统挂载测试 21
4.3.1 测试工具Bonnie 21
4.3.2 测试结果及分析 22
4.4 本章小结 23
第5章 总结与展望 24
5.1总结 24
5.2展望 24
参考文献 25
附录A 26
致 谢 29
第1章 绪论
1.1研究背景及意义
固态硬盘与普通硬盘相比,具有存取速度快、噪音小、能耗低等优点。自2007年来SSD固态硬盘全球的销售额持续增长,从SSD固态硬盘出现开始,就受到业内广泛的关注[1]。固态电子硬盘、闪存PCI盘、高速海量固态存储阵列等系列固态存储产品,已被广泛应用于军事装备,工业控制、商用服务器、嵌入式计算机、个人计算机等领域。目前国内的固态存储市场正处于导入期向成长期的快速发展状态[2]。
随着SSD在数据中心和存储阵列中的普及,SSD预计在未来几年成为二级存储的主要形式,SSD固态硬盘采用的是NAND闪存介质,省去了传统硬盘每次进行读写操作时的寻址寻道,速度理论上要快于当前的传统硬盘。同时根据闪存介质本身的物理特性,要比传统机械硬盘的安全性提高很多,无需担心由于在读写操作遭遇碰撞而硬盘损坏的可能[3]。尽管固态硬盘由于优越的性能取得了成功,但是SSD仍然存在许多不足之处:Log-on-log、较大的尾部延迟、不可预测的I/O延迟和资源利用不足。因此一种新型的Open-Channel SSD,正在市场上出现,它是解决传统SSD缺点,管理和均衡与吞吐量、延迟、功耗和容量相关的极好的平台。在解决传统固态硬盘的问题上,Open-Channel SSD提供了一种新思路,将FTL放在主机端是未来存储系统的发展趋势,所以学习研究Open-Channel SSD具有重要的意义。
1.2国内外研究现状
Open-Channel SSD主要是将FTL放在主机端,由主机端实现FTL的功能,进而控制数据的放置,通过向主机提供三种属性,以提供更高的性能和更好的资源利用率。基于新型的Open-Channel SSD向主机提供的属性,国内外学者也进行了大量的研究。
国外对于Open-Channel SSD的研究较国内比较超前,在相关实验方面已经取得很大的进展。主机端Flash Translation Layer (以下简称FTL)已经被FusionIO DFS [4]和Violin Memory 实现,他们将FTL移入主机,以暴露块I / O SSD。Ouyang等人[5]提出了软件定义Flash,允许键值存储与底层存储介质集成,取得了很大的突破。Lu等人[6]定义了一个基于主机和对象的FTL(OFTL),位于与百度Open-Channel SSD相对应的原始闪存设备之上。Lee等人[7]提出了一个新的SSD接口,兼容传统的块设备接口,通过读取/写入/擦除操作来暴露无误差的附加分段。MatiasBjørling[8]等人描述了一种自下而上的方法,通过PPA I/O接口反映了独立于系统上层的SSD特性。他们设计实施的Open-Channel SSD子系统LightVNM,具有适度的主机开销,可以被调整来限制读取延迟变化,并且可以被定制以实现可预测的I/O延迟,实现了特定于应用程序的抽象。
国内研究现状: 一段时间以来,Open-Channel SSD已经被一级云提供商所使用。 例如,百度使用Open-Channel SSD来精简键值存储的存储堆栈。然而,目前国内对于新型的Open-Channel SSD研究较少,面对传统的固态硬盘的缺点,深入研究Open-channel SSD的结构和管理它的linux子系统LightNVM是十分必要的,这也正式本课题关注的侧重点。
1.3主要工作及论文章节安排
本文针对Open-Channel SSD的子系统LightNVM和其上的pblk进行研究,搭建并测试了Open-Channel SSD环境,并在pblk之上挂载了文件系统,进行了测试。最后分析了现有的FTL算法和pblk中的映射算法,指出了pblk中的扇区映射算法的不足,并提出了解决此问题的最合理的映射算法。本文共分为五章。
第一章给出了课题研究的背景,表明了固态硬盘的发展趋势,并表明了传统固态硬盘存在的不足。一种新型的开放通道的固态硬盘Open-Channel SSD正在出现,它是解决传统固态硬盘缺点的极好的平台。同时结合了本文的研究工作,分析对比了国内外对于Open-Channel SSD的研究现状,进一步论证了本课题的研究意义。
第二章主要介绍了Open-Channel SSD的原理,详细介绍了基于Linux的Open-Channel SSD的子系统LightNVM,包括组织架构等,并且介绍了Open-Channel SSD所使用的NAND Flash的读写约束特性。以及在传统的SSD中的固件FTL(Flash Translation Layer)中的核心算法,为在Open-Channel SSD中研究pblk中的算法做了准备。
第三章主要介绍了LightNVM之上的pblk,详细阐述了pblk的主要功能,以及pblk在实现中的核心功能,介绍了写缓冲区的重要作用以及pblk的错误处理和垃圾回收。详细介绍了pblk的读写流程中的映射算法,分析了它的不足并提出了改进的方法。最后描述了在pblk之上挂载文件系统的方法。
第四章主要是对搭建好的Open-Channel SSD进行测试,通过使用用户空间提供的库进行测试并且要满足Open-Channel SSD的限制。除了对搭建的环境进行测试之外,还对在pblk之上挂载的块设备的文件系统进行了测试,并对测试结果进行了分析。
第五章是对全文工作的总结,描述了所做的工作,并阐述了自己随做工作的不足以及后续努力学习的方向。
第2章 关键技术说明
2.1 open-channel SSD概念与原理
2.1.1 open-channel SSD的原理及架构
随着SSD的普及,新型的Open-Channel SSD不同于传统的SSD。它由数十个存储芯片组成,通过所谓的通道与控制器并联。开放通道固态硬盘,通道和存储芯片暴露给主机,通过揭露了其内部结构和特性,使主机可以控制数据放置和物理的I/O调度。并向主机提供三种属性:I / O隔离[9],可预测的延迟和软件定义的非易失性存储器。
I / O隔离提供了一种将SSD容量划分为映射设备并行单元(LUN)的多个I / O通道的方法。这使得Open-Channel SSD可以用于多租户应用程序,而无需租户互相干扰。
可预测的延迟,通过在主机中控制何时,何地以及如何将I / O提交给SSD来实现可预测的延迟。
软件定义的非易失性存储器。通过将SSD闪存转换层集成到主机中,可以在自包含的闪存转换层,文件系统集成或应用程序本身中应用工作负载优化。
根据主机和SSD之间共享SSD管理的职责的方式,可以定义不同类型的开放式通道SSD。 图2.1比较(a)传统块I / O SSD与(b)目前研究出来的开放通道SSD的类别,其中PE周期和写缓冲在主机上管理,以及(c)未来的开放通道SSD将提供保证从而支持设备上的PE周期管理和磨损均衡。然而,PPA I / O接口的定义和LightNVM的架构涵盖了所有类型的开放式通道SSD。
图2.1 open-channel SSD架构图
2.1.2 NAND闪存的约束
NAND闪存提供读取/写入/擦除接口。 在NAND封装中,存储介质被组织成裸片,平面,块和页面的层次结构。一个芯片允许一次执行一个I / O命令。 一个物理封装内可能有一个或几个管芯。一个平面允许类似的闪存命令在芯片内并行执行。
在每个平面内,NAND按块和页面组织。每个平面包含相同数量的块,每个块包含相同数量的页面。页面是读写的最小单位,而擦除的单位是块。每个页面被进一步分解为具有额外的出界区域的固定大小的扇区,例如,一个16KB的页面包含四个4KB的扇区加上经常用于ECC和用户特定数据的出界区域。
关于内部时序,NAND闪存在读取和写入/擦除延迟之间表现出一个数量级的差异。 读取通常需要几百微秒,而写入和擦除操作需要几个毫秒。 但是,如果直接在写或擦除操作之后安排读操作,读延迟会出现尖峰,从而导致延迟数量级的增加。
写约束。 有三个基本的编程约束适用于NAND [10]:(1)写入命令必须包含足够的数据来编程一个(或几个)全闪存页面。(2)写入必须在一个块内顺序进行,(3)在块内的页面可以被重写之前必须执行擦除。编程/擦除(PE)周期的数量是有限的,极限值取决于闪存类型:TLC / QLC闪存的极限值是10^2,MLC 闪存的极限值是10^3或SLC闪存的极限值 10^5。
对于不同类型的NAND闪存,必须考虑额外的限制。例如,在多级单元存储器中,存储在同一单元中的位属于不同的写入页面,称为下/上页面。在较低页面可被成功读取之前,必须写入较高页面。下页面和上页面通常不是连续的,为了防止写邻居干扰,必须写入页面之间的任何页面。此外,NAND供应商可能会引入任何类型的特殊约束,这些约束并未公开披露。这对于跨供应商,基于主机的SSD管理的设计来说是一个明显的挑战。
写入时闪存页面的大小必须考虑媒体访问模式,即正在使用的平面数量来计算。例如,具有4KB扇区,每页4个扇区并以双平面模式操作的NAND闪存必须在写入“闪存页”之前写入32KB数据(4KB * 4扇区*2平面)。在这种情况下,写命令中可能会使用提示来通知硬件双平面写入问题。这允许在控制器内并行处理。
读约束。读取可以在单个扇区的粒度上完成,通常为4KB。通常情况下,发给封闭块(即完全写入的块)的读取操作将会成功。发布到开放块的读取必须尊重正在读取的页面内的所有较低/较高页面已被完整写入。请注意,较低/较高的页面可能会在Flash页面之间共享。由于下/上页面的实际顺序通常在NAND下受到保护,因此可能需要咨询硬件制造商以获取有关所用介质的具体信息。经验法则是在可以读取页面之后写入8-12页。如果需要在此阈值内读取,则客户端之间的数据必须由客户端缓存。
失败模式。NAND Flash可能以各种方式失败:
• 位错误。缩小单元大小的缺点是存储位时出现错误。对于SLC来说,每KB有2bits的误码率是常见的,但对于MLC来说,这个速率增加了四到八倍[11]。
• 读写干扰。随着位的写入或读取,介质易于泄漏到附近的单元。这导致了上面描述的一些写约束[12]。
• 数据保留。随着单元耗尽,数据保留能力下降。随着时间的推移,数据必须被重写多次[13]。
• 写/擦除错误。在写入或擦除期间,由于块级别的不可恢复的错误,可能会发生故障。 在这种情况下,块应该被取消,并且已经写入的数据应该被重写到另一个块。
• 裸片故障。存储的逻辑单元(即,NAND芯片上的裸片)由于缺陷可能随着时间的推移停止工作。在这种情况下,所有的数据都将丢失[14]。
2.2物理页地址I/O接口
物理页面地址(Physical Page Address )I / O接口是一个基于分层地址空间的开放式通道SSD接口。它定义了管理命令来公开设备几何图形并让主机控制SSD管理和数据命令来有效地存储和检索数据。 该接口独立于嵌入在开放式通道SSD上的非易失性媒体芯片的类型。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。