Linux内核中Open-channel SSD子系统LightNVM的搭建与研究文献综述
2020-04-29 15:17:09
数十年来,存储技术已成为众多科研机构的研究焦点,它所涉及的研究内容广泛分布于电路及计算机系统等领域,并各自取得了极其重大的研究进展。这使得存储技术于日常生活中随处可见,并更加普遍地应用于信息技术的各个基础设备——消费类电子产品、云计算与超级计算等。随着存储技术的逐步发展,固态硬盘(SSD)将在未来几年成为二级存储的主要形式,则各研究领域对可预测延迟的需求也将日益增加。然而,如果只是简单的将传统磁盘替换为SSD进行使用,这种传统的服务型块I/O设备非但无法满足这一需求,还会存在一些性能上的不足,如多重日志、严重的长尾延迟效应、不可预测的I / O延迟以及资源利用上的不足。这些问题需要利用新的技术结构去解决,以使系统具备最佳的主机开销,且能通过调整实现对读延迟可变性的限制,并进一步使得可预测的延迟成为可能。
一类新型固态硬盘——Open-Channel SSD出现于存储市场,它具有解决这些问题的潜力并能极好地权衡吞吐量、延迟、功耗和容量等相关性能。区别于传统的固态硬盘,Open-Channel SSD与主机共享其内部并行性并将其管理权限交付于主机,它将某些职责移交给主机并开放供用户使用,使主机能够控制数据的物理布局(SSD的性能与数据的物理布局紧密相关)及物理I / O的调度。为方便管理、操作Open-Channel SSD,LightNVM应运而生。LightNVM是在Linux Kernel中针对Open-Channel SSD的子系统。通过这种方式,设备可以使主机适应闪存转换层(FTL)的算法和优化,以匹配它所执行的用户工作负载。用户则可以根据需求及自身数据特点自定义FTL层的设计,使其更加高效。这种“在软件中定义存储”的方法使Open-Channel SSD具备以下三种特性:I / O隔离、可预测的延迟及软件定义的非易失性存储。
Open-Channel SSD已经被一级云提供商使用了一段时间。百度使用Open-Channel SSD精简键值存储堆栈。Fusion-IO及Violin Memory均实现有一个主机端存储栈来管理NAND媒介并提供其匹配的块I / O接口。2018年1月,Open-Channel SSD发布了2.0 版本的标准。现阶段,无论是Open-Channel SSD还是LightNVM都还处于非常早期的阶段,目前在市面上很难见到Open-Channel SSD且其并不适于直接投入生产。但Open-Channel SSD和Host based FTL带来的好处却是极其巨大的。对于追求极致存储性能的研究境况,未来极有可能会采用Open-Channel SSD LightNVM的实现方式。
{title}2. 研究的基本内容与方案
{title}研究内容及目标包括:第一,学习并了解SSD的基础知识,利用传统SSD相关知识研究Open-Channel SSD的结构、工作原理、性能及其设计指标,深入探讨其Linux内核中子系统LightNVM的结构及设计。第二,完成Open-Channel SSD LightNVM平台的搭建。第三,在平台上实现一些冷热数据区分算法并研究这些算法对SSD性能及寿命的影响。
与传统固态硬盘相比,Open-Channel SSD仅提供一个最简化的固态硬盘,它只包含NAND芯片和控制器,并不包含Flash Translation Layer(FTL)。原有FTL中的功能,例如Logical Address Mapping、Wear Leveling、Garbage Collection等,则需要交由上层实现,可能是操作系统,也可能是某个应用程序。其子系统LightNVM则提供有一套新的接口——物理页面地址(PPA)I/O接口,用于管理Open-Channel SSD并执行I / O操作。为与内核中现有的I / O子系统协同工作,还存在pblk(Physical Block Device)层。它在LightNVM的基础上实现了FTL的功能,同时向上层暴露传统的Block层接口,使得现有的文件系统能够通过pblk层直接运行在Open-Channel SSD上。其结构如下图所示:
实际操作时使用Open-Channel SSD,操作系统内核的支持是必要的。通过LightNVM子系统的引入,Linux内核在4.4及其之后的版本添加了Open-Channel SSD的支持。启动一个受支持的内核后,需要满足下列条件:
1.一个兼容的设备,如QEMU NVMe或者一个Open-Channel SSD,如CNEX Labs
LightNVM SDK。
2.驱动之上的媒体管理器。媒体管理器负责管理设备的分区表。