CN112346666B - 基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统 - Google Patents

基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统 Download PDF

Info

Publication number
CN112346666B
CN112346666B CN202011376044.6A CN202011376044A CN112346666B CN 112346666 B CN112346666 B CN 112346666B CN 202011376044 A CN202011376044 A CN 202011376044A CN 112346666 B CN112346666 B CN 112346666B
Authority
CN
China
Prior art keywords
file
block
data block
key
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011376044.6A
Other languages
English (en)
Other versions
CN112346666A (zh
Inventor
陈俭喜
冯丹
陈鑫宇
陈彧
马莉珍
郑梦丽
张兴锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202011376044.6A priority Critical patent/CN112346666B/zh
Publication of CN112346666A publication Critical patent/CN112346666A/zh
Application granted granted Critical
Publication of CN112346666B publication Critical patent/CN112346666B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了基于OCSSD的键值存储系统的写、块粒度压缩合并方法和系统,属于计算机存储领域。本发明通过数据块粒度的选择性压缩合并,避免对非重叠数据块的读入和写回,能够减小LSM‑tree压缩合并过程中的读写放大问题;通过将同一个文件的数据块均匀分布在OCSSD的所有通道中,能够显式利用OCSSD多通道并行的特性,从而提高键值存储系统吞吐量;通过在用户层直接管理底层存储介质,绕过文件系统等中间软件层,减少了对主机资源的消耗,并方便地传递应用软件的语义特征。总的来说,本发明能够有效降低基于LSM‑tree的键值存储系统读写放大问题,消除上层应用软件和底层存储设备之间的语义隔离,提高系统整体键值对操作的吞吐量。

Description

基于OCSSD的键值存储系统的写、块粒度压缩合并方法和系统
技术领域
本发明属于计算机存储领域,更具体地,涉及基于OCSSD的键值存储系统的写、块粒度压缩合并方法和系统。
背景技术
大容量固态盘(Solid State Drive,SSD)的大物理块应用趋势及3D NAND Flash技术发展,为数据存储管理带来了机遇和挑战。日志结构合并树(log-structured merge-tree,LSM-tree)键值(key-value,KV)存储针对随机写进行优化,提供高效的数据插入和删除,作为持久化存储引擎被广泛应用在数据中心。LSM-tree KV存储直接使用SSD块设备,两者本身都存在读/写放大。更为糟糕的是主机端和设备端管理上各自为政,系统读/写放大问题会进一步叠加,严重降低存储系统整体性能和SSD寿命。基于开放通道SSD的LSM-treeKV存储系统为统一管理软、硬件资源,优化存储系统,减少读/写放大问题,提供了一种解决途径。
现有的基于OCSSD(Open-Channel SSD)的键值存储系统,在设计方案上都利用了OCSSD的特性来实现最终的性能提升,但是这些工作都将重点集中于根据LSM-tree的工作原理,调整IO调度和键值对在OCSSD中的物理分布,并没有从根源上缓解基于LSM-tree的键值存储系统带来的读写放大问题。因而如何根据OCSSD的设备特性调整LSM-tree的设计原理,减小LSM-tree的读写放大问题对闪存使用寿命的影响,提高键值存储系统的读写性能,是一个亟待解决的难点。
专利CN107526550A公开了一种基于日志结构合并树的两阶段合并方法,其主要思想如下:记录LSM-tree中的下层文件与上层所有文件的键重叠范围(相当于键重叠的文件片段),在下层文件中增加额外的SliceLink元数据来记录这些重叠的文件片段。只有当下层文件SliceLink超过某个阈值时,才执行压缩合并操作。执行压缩合并操作时,只需要读取下层文件和SliceLink对应的上层文件片段,从而减小压缩合并操作导致的读写放大问题。然而,该方法存在以下缺陷:1)查找下层文件中的某个键值对时,需要先读取SliceLink对应的上层文件片段,如果未命中,再读取下层文件自身的内容,引入了额外的小粒度读操作,会导致GET操作的读放大问题;2)上层文件与下层文件重叠的文件片段数量不可控,存在SliceLink元数据过大的隐患;3)依托于文件系统,LSM-tree的压缩合并操作与文件系统的GC操作、SSD内部的GC操作,存在功能冗余,同时LSM-tree的Key索引与文件系统的命名空间管理也存在功能冗余。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了基于OCSSD的键值存储系统的写、块粒度压缩合并方法和系统,其目的在于减小LSM-tree的读写放大问题,尤其是,垃圾回收过程中的读写放大问题和压缩合并操作过程中的读写放大问题,消除上层应用软件和底层存储设备之间的语义隔离,提高键值存储系统的吞吐量。
为实现上述目的,按照本发明的第一方面,提供了一种基于OCSSD的键值存储系统的写方法,该写方法包括以下步骤:
在写过程利用内存跳表中的键值对生成文件时,在生成文件数据块的子过程中,记录该数据块的最小键、最大键和该数据块在文件中的起始偏移量,当该数据块的大小达到闪存页大小的整数倍时,转入S1;若内存跳表中的键值对消耗完毕,转入S3;
S1.将数据块以轮循的方式写入开放通道固态盘的每个通道中,使得属于相同文件的数据块在通道中均匀分布,写入完成后转入S2;
S2.在闪存转换层中记录新写入的数据块的逻辑块地址到闪存页物理地址之间的映射关系,并标记物理闪存页在LSM-tree中所处的层数为第0层;
S3.在文件的元数据区记录每个数据块的最小键、最大键和逻辑块地址,写请求结束。
有益效果:本发明通过将LSM-tree中属于第0层的数据写入同一BlockLine中,并标记每个物理闪存页在LSM-tree中所处的层数,由于LSM-tree第0层的数据发生压缩合并的频率最高,导致第0层对应的BLockLine中有效闪存页占比最少,那么在GC(garbagecollection,垃圾回收)过程中选择受害者BlockLine时,就会优先选择第0层对应的BlockLine,使得GC过程迁移有效数据块数目最少,从而减小GC过程中的读写放大问题。
优选地,在步骤S1中,当数据块以轮循的方式写入开放通道固态盘的每个通道时,闪存转换层进行物理空间的分配,为LSM-tree中的每一层分配一个BlockLine,所述BlockLine由开放通道固态盘每个通道的相同位置处的物理块组成。
有益效果:本发明通过将同一个文件的所有数据块均匀写入到开放通道固态盘的所有通道中,由于开放通道固态盘的每个通道可以并行地服务读写请求,从而提高文件读写并行性。
优选地,向LSM-tree中写入新文件时,仅在新文件在LSM-tree所处的层数对应的当前BlockLine中分配物理闪存页。
有益效果:本发明通过将LSM-tree中属于不同层数的数据分别写入不同的BlockLine中,由于LSM-tree具有从第0层到最后一层数据热度逐步递减的语义特征,从而实现了数据在底层物理空间上的冷热分离。
为实现上述目的,按照本发明的第二方面,提供了一种基于OCSSD的键值存储系统的块粒度压缩合并方法,所述基于OCSSD的键值存储系统采用如第一方面所述的写方法,对Li层和Li+1层进行块粒度压缩合并方法时,包括以下步骤:
S1.比对Li层和Li+1层,找出键范围重叠的多个文件,将属于Li层的文件纳入目标文件集合,将属于Li+1层的文件纳入匹配文件集合,并将目标文件集合和匹配文件集合中所有数据块标记为未处理;
S2.从目标文件集合和匹配文件集合中找出未处理且最小键最小的数据块作为数据块Da,若该数据块Da来源于目标文件,则将该目标文件称作文件Fa,将匹配文件集合中每个文件称作文件Fb,若该数据块Da来源于匹配文件,将该匹配文件称作文件Fa,将目标文件集合中的每个文件称作文件Fb,对文件Fa和文件Fb进行以下处理,从而实现块粒度压缩合并:
1)建立一个为空的重叠块集合,并将数据块Da纳入重叠块集合,重叠块集合的初始键范围为数据块Da的键范围;
2)若重叠块集合的键范围与属于文件Fb的未处理的数据块Db的键范围重叠,将数据块Db纳入重叠块集合,并更新重叠块集合的键范围;
3)判断文件Fa和文件Fb中剩余未处理数据块是否与重叠块集合存在键范围重叠,若是,将其纳入重叠数据块集合,并更新重叠块集合的键范围,转入步骤3),否则,转入步骤4);
4)判断重叠块集合中是否只有一个数据块Da,若是,则直接在新文件Fc的元数据区追加记录数据块Da的键范围和逻辑块地址,同时更新数据块Da对应的物理闪存页在LSM-tree中所处的层数为i+1,并将数据块Da标记为已处理,转入步骤S2;否则,转入步骤5);
5)创建一个新的为空的数据块Dd,将重叠块集合中的剩余有效键值对,按键从小到大的顺序添加到新数据块中Dd
6)当新数据块Dd的大小达到闪存页大小整数倍时,写回新数据块Dd,记录新数据块Dd的逻辑块地址与物理闪存页地址之间的映射关系,记录新数据块Dd在LSM-tree中所处的层数为i+1,并在新文件Fc的元数据区追加记录新数据块Dd的键范围和逻辑块地址;
7)判断重叠块集合中剩余有效键值对是否处理完毕,若是,将重叠块集合中的数据块标记为无效后,转入步骤S3;否则,转入步骤5);
S3.判断目标文件集合和匹配文件集合中的剩余数据块是否处理完毕,若是,则块粒度压缩合并过程结束;否则,判断新文件Fc的大小是否达到开放通道固态盘中通道数量乘以闪存页大小的整数倍,若是,则创建下一个新文件作为当前新文件Fc,再转入步骤S2;否则,直接,转入步骤S2。
有益效果:本发明通过将键范围不重叠的数据块重新映射到新的文件中,由于避免了对键范围不重叠的数据块的读写操作,从而减小了压缩合并过程导致的读写放大问题。
优选地,当开放通道固态盘存储空间可用百分比低于第一阈值或者任意一个BlockLine中有效闪存页数量百分比低于第二阈值时,闪存转换层对OCSSD进行垃圾回收,具体如下:
在所有已分配的BlockLine中选择有效闪存页数目最少且擦除次数最少的一个受害者BlockLine作为回收对象;
读取受害者BlockLine中所有有效闪存页;
根据这些有效闪存页在LSM-tree中所处层,将其写回到有效闪存页所处层对应的当前BlockLine中,并更新其逻辑块地址与物理闪存页地址的映射关系;
有效闪存页转移完毕后,并行擦除受害者BlockLine中的所有物理块。
有益效果:本发明通过将有效闪存页迁移到该闪存页在LSM-tree中所属层对应的当前BlockLine中,由于块粒度压缩合并过程中数据块的重映射会导致同一个BlockLine中会包含LSM-tree中不同层的数据块,从而实现了在垃圾回收时维护数据在物理存储介质上的冷热分离。
优选地,仅在非重叠数据块占参与压缩合并的总数据块的比例RD超过第三阈值时,启用块粒度压缩合并方法。
有益效果:本发明通过计算非重叠数据块占参与块粒度压缩合并总数据块的比例,来决定是否启用块粒度压缩合并方法还是启用传统的压缩合并方法,由于块粒度压缩合并方法需要计算所有的重叠块集合,其计算开销相比于传统压缩合并方法更大,非重叠块占比越小,块粒度压缩合并方法所带来的收益就越小,从而实现了系统整体效益的最大化。
为实现上述目的,按照本发明的第三方面,提供了一种基于OCSSD的键值存储系统的块粒度压缩合并系统,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行第二方面所述的基于OCSSD的键值存储系统的块粒度压缩合并方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明通过记录LSM-tree内文件的每个数据块的键范围和逻辑块地址,以数据块为粒度进行压缩合并操作。仅对于键范围重叠的数据块,执行传统的压缩合并操作;对于键范围未重叠的数据块,将其重映射到新文件中,避免在压缩合并操作时对这些数据块的读入和写回操作,从而减小压缩合并过程中的读写放大问题。
(2)本发明将LSM-tree的逻辑结构和Open Channel SSD的物理布局进行了语义融合,使得位于LSM-tree相同层的文件数据块,在物理上位于相同的BlockLine中。物理存储介质上的冷热数据隔离,能够有效均衡垃圾回收时带来的读写放大问题以及对闪存存储介质的擦除问题,提高闪存介质的使用寿命。
(3)本发明在Open Channel SSD的垃圾回收过程中,根据有效闪存页在LSM-tree中所处的层数,写回到与该层对应的当前BlockLine中,可以有效维护冷热数据分离的特性。
(4)本发明在为LSM-tree的文件分配物理空间时,所分配的物理闪存页在OpenChannel SSD的各个物理通道中均匀分布。该设计可以充分利用多通道的并行性,提高文件数据传输的吞吐量。
(5)本发明自定义了LSM-tree内文件在Open Channel SSD上的存储格式,绕过了文件系统,避免了冗余的中间软件层,减少了系统软件开销。
附图说明
图1为本发明提供的基于OCSSD的键值存储系统示意图;
图2为本发明提供的基于OCSSD的键值存储系统读写操作的流程图;
图3为本发明提供的基于开放通道固态盘的键值存储系统块粒度压缩合并方法的流程图;
图4为本发明实施例提供的OCSSD垃圾回收流程图;
图5为本发明实施例提供的数据块映射层次结构示意图;
图6为本发明实施例提供的对应的文件结构示意图;
图7为本发明实施例提供的对应的文件数据块在OCSSD中的物理分布示意图;
图8为本发明实施例提供的文件甲、文件乙和文件丙分布情况。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,用户通过LevelDB的API发送键值对读写请求到基于OCSSD的键值存储系统中;键值对数据在键值存储系统中会按照Memtable、ImmuTable、Level 0的.sst文件、Level 1的.sst文件……LevelN的.sst文件的顺序进行流动,其中,Memtable和Immutable不需要修改,.sst文件的存储格式需要进行修改,修改后的.sst文件的格式如图6所示。在将.sst文件写入OCSSD过程时,需要在用户层FTL中记录逻辑块地址到物理闪存页地址之间的映射关系;在读取.sst文件时,需要查询L2P表来获取目标数据块所处的物理闪存页地址;本发明提出的数据块粒度的压缩合并操作与LevelDB中传统的压缩合并操作,都建立在对.sst文件的读写逻辑之上,只是具体的处理逻辑不同;读写请求均需要通过ioctl接口向OCSSD的内核驱动LightNVM发送具体的IO命令,从而与OCSSD设备进行数据传输。
基于OCSSD的键值存储系统100主要由两部分组成:现有的键值存储系统110和实现在键值存储系统内部的用户空间FTL120。对于现有的键值存储系统,例如本系统采用的LevelDB,对LevelDB中保存键值对的.sst文件的存储格式做了修改,通过在.sst文件的元数据区设定每个数据块的键范围和其逻辑块地址,为数据块粒度的压缩合并操作提供了基本支持。
对LSM-tree的压缩合并方案进行重新设计是本发明的核心部分,对多个键范围重叠的文件进行压缩合并时,根据文件中每个数据块的键范围进行选择性压缩合并:若数据块的键范围重叠,则读取该部分数据块进行压缩合并生成新的数据块,在新文件元数据区记录生成的数据块的键范围和逻辑块地址列表,并将旧数据块标记为无效;若数据块的键范围不重叠,则直接在新文件元数据区记录该数据块的键范围和逻辑块地址,并修改非重叠数据块对应的物理闪存页所属的Level。
实现在键值存储系统内部的用户空间FTL120,包括读写请求的处理模块121和垃圾回收模块122。
读写请求的处理模块121中,如果接受到的是写请求,首先确定该写请求的目标Level,判断该Level对应的当前BlockLine是否存在,如果不存在或该Level的BlockLine的剩余空间不足,则需要分配新的BlockLine作为该Level的当前BlockLine。然后为写请求中的数据块分配物理闪存页,其中物理闪存页在BlockLine内部位于不同Channel的物理块上进行轮询分配,实现并行数据布局,从而可以将写请求中的数据并行写入到多个通道中,加速写请求的执行。最后,在L2P表中设置相应的物理闪存页地址和逻辑块地址之间的映射表项,并将逻辑块地址返回并追加写入到.sst文件元数据区中。当接受到的是读请求时,首先需要根据L2P表获取目标逻辑块地址对应的物理闪存页地址,如果是对多个数据块进行读操作,且这些数据块分布在不同的通道时,可以并行第读取这些数据块,加速读过程。
以上读写操作的IO请求都需要通过ioctl接口向OCSSD内核驱动LightNVM发送,而不是通过文件系统中的read()和write()系统调用。因此本发明中实现的键值存储系统绕过了与文件系统相关的IO栈以及通用块层,减少了系统资源开销。
OCSSD的垃圾回收模块122中,结合图3所示,当空闲BlockLine数目低于下限阈值时,根据有效闪存页计数和擦除计数,选择有效闪存页数目最少且擦除次数最少的一个受害者BlockLine作为回收对象;每次执行垃圾回收时,根据所述键值存储系统的负载变化情况控制BlockLine回收的时机,负载大时,减缓垃圾回收操作,从而减小垃圾回收操作对正常键值操作的负面影响,减小请求响应延迟。
每个有效闪存页发生物理位置的转移时,只需要更新L2P映射表项,而无需修改.sst文件的元数据,即.sst文件只能感知与物理闪存页存在映射关系的逻辑块地址,物理页地址对.sst文件是透明的,该设计能够有效阻断因垃圾回收操作导致向上层的更新传递过程。
本发明将保存键值对数据的文件划分为多个数据块,在文件的元数据区记录每个数据块的最小键、最大键、逻辑块地址;逻辑块大小与OCSSD的闪存页大小对齐。在以LSM-tree为索引结构的键值存储系统中实现FTL,用于管理和维护所有逻辑块地址与物理闪存页地址之间的映射关系,记录每个闪存页在LSM-tree中的所处层,同时负责上层应用的数据在OCSSD中的数据布局和垃圾回收。
如图2所示,本发明提供了一种基于OCSSD的键值存储系统的读写方法,该写方法包括以下步骤:
(S1)处理键值对操作请求时,若为写请求,则转入步骤(S2);若为读请求,则转入步骤(S7);
(S2)键值对先插入到内存跳表中,当内存跳表满时,转入步骤(S3);
(S3)利用跳表中的键值对生成文件时,在生成每个数据块的过程中,记录该数据块的最大键、最小键和该数据块在文件中的起始偏移量,当该数据块达到闪存页整数倍大小时,转入步骤(S4);若跳表中的键值对转换完毕,则转入步骤(S6);
(S4)将数据块以轮循的方式写入OCSSD的每个通道中,令属于相同文件的数据块在多个通道中均匀分布,写入完成后,转入步骤(S5);
(S5)在FTL中,记录新写入的数据块的逻辑块地址到闪存页物理地址之间的映射关系(一个数据块可以占用多个物理闪存页),并记录该闪存页在LSM-tree中所处的层数为第0层;
(S6)在文件的元数据区,记录数据块的最小键、最大键和逻辑块地址,写请求结束;
(S7)若待读取的键值对在内存跳表中命中,则直接返回;否则从目标文件中,获取目标键值对所属的数据块的逻辑块地址,并从所述L2P映射表中获取数据块的映射关系,得到该数据块在OCSSD中的闪存页物理地址,并读取该闪存页。
为了保证压缩合并操作的执行效率,上述基于开放通道固态盘的键值存储系统块粒度压缩合并方法,还包括:
在执行多个.sst文件的压缩合并操作时,计算非重叠数据块占参与压缩合并的总数据块的比例为RD;若非重叠数据块所占比例RD<5%,则放弃使用数据块粒度的压缩合并策略,改为使用LSM-tree中传统的压缩合并策略;若非重叠数据块所占比例RD≥5%,则使用数据块粒度的压缩合并策略。
应当理解的是,基于OCSSD进行数据块粒度的压缩合并方法的性能取决于非重叠块所占的比例:非重叠块占比越高,能避免的无效的数据拷贝量越多,性能收益越大;非重叠块占比越低,能避免的无效的数据拷贝量越少,性能收益越小。此外,基于OCSSD进行数据块粒度的压缩合并方法,计算重叠块集合会存在额外的计算开销,因此,当非重叠块占比较小时,改为使用LSM-tree传统的压缩合并机制是一个更好的选择。
如图3所示,本发明提供了一种基于OCSSD的键值存储系统的块粒度压缩合并方法,对Li层和Li+1层进行块粒度压缩合并方法时,包括以下步骤:
S1.比对Li层和Li+1层,找出键范围重叠的多个文件,将属于Li层的文件纳入目标文件集合,将属于Li+1层的文件纳入匹配文件集合,并将目标文件集合和匹配文件集合中所有数据块标记为未处理;
S2.从目标文件集合和匹配文件集合中找出未处理且最小键最小的数据块作为数据块Da,若该数据块Da来源于目标文件,则将该目标文件称作文件Fa,将匹配文件集合中每个文件称作文件Fb,若该数据块Da来源于匹配文件,将该匹配文件称作文件Fa,将目标文件集合中的每个文件称作文件Fb,对文件Fa和文件Fb进行以下处理,从而实现块粒度压缩合并:
1)建立一个为空的重叠块集合,并将数据块Da纳入重叠块集合,重叠块集合的初始键范围为数据块Da的键范围;
2)若重叠块集合的键范围与属于文件Fb的未处理的数据块Db的键范围重叠,将数据块Db纳入重叠块集合,并更新重叠块集合的键范围;
3)判断文件Fa和文件Fb中剩余未处理数据块是否与重叠块集合存在键范围重叠,若是,将其纳入重叠数据块集合,并更新重叠块集合的键范围,转入步骤3),否则,转入步骤4);
4)判断重叠块集合中是否只有一个数据块Da,若是,则直接在新文件Fc的元数据区追加记录数据块Da的键范围和逻辑块地址,同时更新数据块Da对应的物理闪存页在LSM-tree中所处的层数为i+1,并将数据块Da标记为已处理,转入步骤S2;否则,转入步骤5);
5)创建一个新的为空的数据块Dd,将重叠块集合中的剩余有效键值对,按键从小到大的顺序添加到新数据块中Dd
6)当新数据块Dd的大小达到闪存页大小整数倍时,写回新数据块Dd,记录新数据块Dd的逻辑块地址与物理闪存页地址之间的映射关系,记录新数据块Dd在LSM-tree中所处的层数为i+1,并在新文件Fc的元数据区追加记录新数据块Dd的键范围和逻辑块地址;
7)判断重叠块集合中剩余有效键值对是否处理完毕,若是,将重叠块集合中的数据块标记为无效后,转入步骤S3;否则,转入步骤5);
S3.判断目标文件集合和匹配文件集合中的剩余数据块是否处理完毕,若是,则块粒度压缩合并过程结束;否则,判断新文件Fc的大小是否达到开放通道固态盘中通道数量乘以闪存页大小的整数倍,若是,则创建下一个新文件作为当前新文件Fc,再转入步骤S2;否则,直接转入步骤S2。
如图4所示,本发明还包括:定期检测OCSSD中空闲BlockLine占总体BlockLine的百分比EB,以及每个BlockLine中有效闪存页的百分比VP,若EB>20%且所有BLockLine中有效闪存页的百分比VP>60%,则不回收OCSSD存储空间;否则,在所有已分配的BlockLine中选择有效闪存页数目最少且擦除次数最少的一个受害者BlockLine作为回收对象。
对一个受害者BlockLine进行回收时,首先读取该BlockLine中所有有效闪存页,然后根据这些有效闪存页在LSM-tree中的所处层,将其写回到对应的当前BlockLine中,然后更新L2P映射表项。有效闪存页转移完毕后,并行擦除受害者BlockLine中的所有物理块。
上述基于开放通道固态盘的键值存储系统块粒度压缩合并方法,将垃圾回收过程与LSM-tree的语义特征进行了深入融合,LSM-tree中从第0层到第N层文件热度递减,垃圾回收过程中根据有效闪存页在LSM-tree中所属的层数,写回到所属层的当前BlockLine中,有效实现了BlockLine之间的冷热数据分离,间接辅助了后续受害者段的选择,从而更好地实现磨损均衡,提高闪存存储介质的使用寿命。
上述基于开放通道固态盘的键值存储系统块粒度压缩合并方法,为了消除垃圾回收过程中,因为有效闪存页物理位置的改变而产生对原文件元数据区的修改,消除更新过程向上层的传递,如图5所示,使用逻辑地址对闪存物理空间进行统一编址,通过L2P表记录逻辑块地址到物理闪存页地址之间的映射关系,上层文件使用的均为逻辑块地址,因而当有效闪存页的物理位置发生转移时,只需要修改相应的映射表项,而无需修改原文件的元数据区,有效避免了因为垃圾回收导致的其他不必要的更新操作。
为了避免在垃圾回收的过程中影响正常的IO操作,提高服务质量,上述开放通道固态盘的键值存储系统块粒度压缩合并方法,还包括:
根据所述键值存储系统的负载变化情况控制BlockLine回收的时机,使得负载大时,减缓垃圾回收操作,从而减小垃圾回收操作对正常键值操作的负面影响,减小请求响应延迟;
为了显式利用OCSSD多通道并行的特性,提高键值存储系统的吞吐量,上述基于开放通道固态盘的键值存储系统块粒度压缩合并方法,还包括:
如图6所示,OCSSD的物理空间以BlockLine为单位进行管理,LSM-tree中每个层分别都会分配一个BlockLine,当前BlockLine消耗完毕后再分配新的BlockLine。一个BlockLine由所有Channel中相同位置处的物理块组成,不同Channel可以并行处理不同的IO请求。
如图7所示,OCSSD的最小写单元为一个闪存页,因此当向一个BlockLine写入文件数据时,为了充分利用设备多通道并行的特性,需要将组成文件的多个数据块,以轮循的方式写入BlockLine的所有物理块中,从而使得文件数据在多个通道内部均匀分布,实现并行数据布局,提高文件的读写性能。
值得注意的是,由于在执行数据块粒度的压缩合并时,会将属于Leveli层文件的数据块,重新映射到Leveli+1层。重映射后的数据块能够有效避免不必要的数据拷贝,但是在一定程度上会破坏新文件在多通道内部的并行数据布局。
为了使FTL中的元数据持久化,降低OCSSD物理空间管理的复杂性,上述基于开放通道固态盘的键值存储系统块粒度压缩合并方法,还包括:
有效闪存页的逻辑块地址与物理闪存页地址之间的映射关系、所有有效BlockLine中每个闪存页所属的Level、每个BlockLine的擦除次数、每个BlockLine中有效闪存页的数目、空闲BlockLine的数目等元数据信息元数据信息分别以文件的形式,保存在主机端,其持久性由主机端文件系统负责,不再保存在OCSSD中。
本发明还提供了一种系统,包括计算机可读存储介质和处理器;
计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行上述基于开放通道固态盘的键值存储系统块粒度压缩合并方法。
综合上述的所有过程,使得键值存储系统实现了上述基于OCSSD进行数据块粒度的压缩合并方法,减小了LSM-tree的读写放大问题,提升了读写请求的执行效率和性能,提升键值存储系统在特定工作负载下的整体性能。
实施例
本实施例中文件Fa=Li层的文件甲,文件Fb为Li+1层的文件乙,文件甲、乙的内部情况如图8所示,压缩合并后生成的新文件Fc为Li+1层的文件丙。块粒度的压缩合并过程如下所示:
读取文件甲和文件乙的元数据区,获得文件甲和文件乙中每个数据块的键范围和逻辑块地址,块粒度压缩合并过程如下所示:
1)比较文件甲和文件乙中第一个数据块的最小键,得到最小键最小的数据块为文件甲中的数据块1,将其加入重叠块集合,并将文件甲中数据块1的键范围作为重叠块集合的键范围,比较重叠块集合的键范围与文件乙中未处理的数据块,发现没有重叠,则在文件丙的元数据区直接追加记录数据块1的逻辑块地址和键范围;
2)下一个最小键最小的数据块为文件乙中的数据块A,将其加入重叠块集合,并将数据块A的键范围作为重叠块集合的键范围,继续比较,发现数据块2的键范围与重叠块集合的键范围重叠,将数据块2加入重叠块集合,并更新重叠块集合的键范围,继续比较,发现数据块B与重叠块集合的键范围重叠,将数据块B加入重叠块集合,并更新重叠块集合的键范围,再继续比较剩余未处理的数据块,发现没有重叠的。此时读取数据块A、数据块2和数据块B到内存中,压缩合并后,生成新数据块2+A+B,在文件丙的元数据块追加记录新数据块2+A+B的逻辑块地址和键范围;
3)下一个最小键最小的数据块为文件甲中的数据块3,将其加入重叠块集合,并将数据块3的键范围作为重叠块集合的键范围,比较重叠块集合的键范围与文件乙中未处理的数据块,发现没有重叠,则在文件丙的元数据区直接追加记录数据块3的逻辑块地址和键范围;
4)下一个最小键最小的数据块为文件乙中的数据块C,将其加入重叠块集合,并将数据块C的键范围作为重叠块集合的键范围,比较重叠块集合的键范围与文件甲中未处理的数据块,发现没有重叠,则在文件丙的元数据区直接追加记录数据块C的逻辑块地址和键范围;
5)下一个最小键最小的数据块为文件甲中的数据块4,将其加入重叠块集合,并将数据块4的键范围作为重叠块集合的键范围,继续比较,发现数据块D的键范围与重叠块集合的键范围重叠,将数据块D加入重叠块集合,并更新重叠块集合的键范围,再继续比较剩余未处理的数据块,发现没有重叠的。此时读取数据块4和数据块D到内存中,压缩合并后,生成两个新数据块E和F,在文件丙的元数据块追加记录新数据块E和新数据块F的逻辑块地址和键范围;
6)下一个最小键最小的数据块为文件甲中的数据块5,将其加入重叠块集合,并将数据块5的键范围作为重叠块集合的键范围,由于文件乙中所有数据块处理完毕,因此在文件丙的元数据区直接追加记录数据块5的逻辑块地址和键范围。
实施例中,第一阈值为20%,第二阈值为60%,第三阈值为5%。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于OCSSD的键值存储系统的写方法,其特征在于,该写方法包括以下步骤:
在写过程利用内存跳表中的键值对生成文件时,在生成文件数据块的子过程中,记录该数据块的最小键、最大键和该数据块在文件中的起始偏移量,当该数据块的大小达到闪存页大小的整数倍时,转入S1;若内存跳表中的键值对消耗完毕,转入S3;
S1.将数据块以轮循的方式写入开放通道固态盘的每个通道中,使得属于相同文件的数据块在通道中均匀分布,写入完成后转入S2;
S2.在闪存转换层中记录新写入的数据块的逻辑块地址到闪存页物理地址之间的映射关系,并标记物理闪存页在LSM-tree中所处的层数为第0层;
S3.在文件的元数据区记录每个数据块的最小键、最大键和逻辑块地址,写请求结束。
2.如权利要求1所述的方法,其特征在于,在步骤S1中,当数据块以轮循的方式写入开放通道固态盘的每个通道时,闪存转换层进行物理空间的分配,为LSM-tree中的每一层分配一个BlockLine,所述BlockLine由开放通道固态盘每个通道的相同位置处的物理块组成。
3.如权利要求2所述的方法,其特征在于,向LSM-tree中写入新文件时,仅在新文件在LSM-tree所处的层数对应的当前BlockLine中分配物理闪存页。
4.一种基于OCSSD的键值存储系统的块粒度压缩合并方法,其特征在于,所述基于OCSSD的键值存储系统采用如权利要求1至3任一项所述的写方法,对Li层和Li+1层进行块粒度压缩合并方法时,包括以下步骤:
S1.比对Li层和Li+1层,找出键范围重叠的多个文件,将属于Li层的文件纳入目标文件集合,将属于Li+1层的文件纳入匹配文件集合,并将目标文件集合和匹配文件集合中所有数据块标记为未处理;
S2.从目标文件集合和匹配文件集合中找出未处理且最小键最小的数据块作为数据块Da,若该数据块Da来源于目标文件,则将该目标文件称作文件Fa,将匹配文件集合中每个文件称作文件Fb,若该数据块Da来源于匹配文件,将该匹配文件称作文件Fa,将目标文件集合中的每个文件称作文件Fb,对文件Fa和文件Fb进行以下处理,从而实现块粒度压缩合并:
1)建立一个为空的重叠块集合,并将数据块Da纳入重叠块集合,重叠块集合的初始键范围为数据块Da的键范围;
2)若重叠块集合的键范围与属于文件Fb的未处理的数据块Db的键范围重叠,将数据块Db纳入重叠块集合,并更新重叠块集合的键范围;
3)判断文件Fa和文件Fb中剩余未处理数据块是否与重叠块集合存在键范围重叠,若是,将其纳入重叠数据块集合,并更新重叠块集合的键范围,转入步骤3),否则,转入步骤4);
4)判断重叠块集合中是否只有一个数据块Da,若是,则直接在新文件Fc的元数据区追加记录数据块Da的键范围和逻辑块地址,同时更新数据块Da对应的物理闪存页在LSM-tree中所处的层数为i+1,并将数据块Da标记为已处理,转入步骤S2;否则,转入步骤5);
5)创建一个新的为空的数据块Dd,将重叠块集合中的剩余有效键值对,按键从小到大的顺序添加到新数据块中Dd
6)当新数据块Dd的大小达到闪存页大小整数倍时,写回新数据块Dd,记录新数据块Dd的逻辑块地址与物理闪存页地址之间的映射关系,记录新数据块Dd在LSM-tree中所处的层数为i+1,并在新文件Fc的元数据区追加记录新数据块Dd的键范围和逻辑块地址;
7)判断重叠块集合中剩余有效键值对是否处理完毕,若是,将重叠块集合中的数据块标记为无效后,转入步骤S3;否则,转入步骤5);
S3.判断目标文件集合和匹配文件集合中的剩余数据块是否处理完毕,若是,则块粒度压缩合并过程结束;否则,判断新文件Fc的大小是否达到开放通道固态盘中通道数量乘以闪存页大小的整数倍,若是,则创建下一个新文件作为当前新文件Fc,再转入步骤S2;否则,直接,转入步骤S2。
5.如权利要求4所述的方法,其特征在于,当开放通道固态盘存储空间可用百分比低于第一阈值或者任意一个BlockLine中有效闪存页数量百分比低于第二阈值时,闪存转换层对OCSSD进行垃圾回收,具体如下:
在所有已分配的BlockLine中选择有效闪存页数目最少且擦除次数最少的一个受害者BlockLine作为回收对象;
读取受害者BlockLine中所有有效闪存页;
根据这些有效闪存页在LSM-tree中所处层,将其写回到有效闪存页所处层对应的当前BlockLine中,并更新其逻辑块地址与物理闪存页地址的映射关系;
有效闪存页转移完毕后,并行擦除受害者BlockLine中的所有物理块。
6.如权利要求4或5所述的方法,其特征在于,仅在非重叠数据块占参与压缩合并的总数据块的比例RD超过第三阈值时,启用块粒度压缩合并方法。
7.一种基于OCSSD的键值存储系统的块粒度压缩合并系统,其特征在于,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行权利要求4至6任一项所述的基于OCSSD的键值存储系统的块粒度压缩合并方法。
CN202011376044.6A 2020-11-30 2020-11-30 基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统 Active CN112346666B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011376044.6A CN112346666B (zh) 2020-11-30 2020-11-30 基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011376044.6A CN112346666B (zh) 2020-11-30 2020-11-30 基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统

Publications (2)

Publication Number Publication Date
CN112346666A CN112346666A (zh) 2021-02-09
CN112346666B true CN112346666B (zh) 2022-02-15

Family

ID=74366131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011376044.6A Active CN112346666B (zh) 2020-11-30 2020-11-30 基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统

Country Status (1)

Country Link
CN (1) CN112346666B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113326262B (zh) * 2021-05-14 2022-06-24 锐掣(杭州)科技有限公司 基于键值数据库的数据处理方法、装置、设备及介质
CN113326001B (zh) * 2021-05-20 2023-08-01 锐掣(杭州)科技有限公司 数据处理方法、装置、设备、系统、介质及程序
CN113626431A (zh) * 2021-07-28 2021-11-09 浪潮云信息技术股份公司 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统
CN113608701A (zh) * 2021-08-18 2021-11-05 合肥大唐存储科技有限公司 一种存储系统中数据管理方法和固态硬盘
CN113704260B (zh) * 2021-08-25 2023-09-29 中山大学 一种基于改进lsm树结构的数据存储方法及系统
CN113704261B (zh) * 2021-08-26 2024-05-24 平凯星辰(北京)科技有限公司 基于云存储的键值存储系统
CN114063935B (zh) * 2022-01-17 2022-06-14 阿里云计算有限公司 处理数据的方法以及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013184201A1 (en) * 2012-06-08 2013-12-12 Ntt Docomo, Inc. A method and apparatus for low delay access to key-value based storage systems using fec techniques
CN107038206A (zh) * 2017-01-17 2017-08-11 阿里巴巴集团控股有限公司 Lsm树的建立方法、lsm树的数据读取方法和服务器

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180349095A1 (en) * 2017-06-06 2018-12-06 ScaleFlux, Inc. Log-structured merge tree based data storage architecture
CN109799959B (zh) * 2019-01-22 2020-07-10 华中科技大学 一种提高开放通道固态盘写并行性的方法
CN111949212B (zh) * 2020-07-10 2024-03-08 深圳宏芯宇电子股份有限公司 基于自定义开放通道ssd的文件系统及文件管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013184201A1 (en) * 2012-06-08 2013-12-12 Ntt Docomo, Inc. A method and apparatus for low delay access to key-value based storage systems using fec techniques
CN107038206A (zh) * 2017-01-17 2017-08-11 阿里巴巴集团控股有限公司 Lsm树的建立方法、lsm树的数据读取方法和服务器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IsoKV: An Isolation Scheme for Key-value Stores by;Heerak Lim, Hwajung Kim, Kihyeon Myung, Heon Young 等;《IEEE》;20200213;第247-256页 *
Key-value FTL over open channel SSD;JIACHENG ZHANG, YOUYOU LU, JIWU SHU, and XIONGJUN QIN;《ACM Transactions on Embedded Computing Systems》;20170927;第16卷(第5期);第139篇文章第1-19页 *
基于Open-Channel SSD特性的LSM-tree键值存储研究;高阳;《中国优秀博硕士学位论文全文数据库(硕士)》;20190615;第1-90页 *

Also Published As

Publication number Publication date
CN112346666A (zh) 2021-02-09

Similar Documents

Publication Publication Date Title
CN112346666B (zh) 基于ocssd的键值存储系统的写、块粒度压缩合并方法和系统
US20230315342A1 (en) Memory system and control method
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US20210406173A1 (en) Computing system and method for controlling storage device
TWI399644B (zh) 非揮發記憶體區塊管理方法
US20070288711A1 (en) Snapshot copy management method used for logic volume manager
CN109697016B (zh) 用于改进容器的存储性能的方法和装置
US8909895B2 (en) Memory apparatus
WO2017149592A1 (ja) ストレージ装置
JP2005222550A (ja) フラッシュメモリのリマッピング方法
KR20100037319A (ko) 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
CN103608782A (zh) Lsb页面和msb页面中的选择性数据存储
US20190087323A1 (en) Memory system and method for controlling nonvolatile memory
US11237979B2 (en) Method for management of multi-core solid state drive
CN109471594B (zh) 一种mlc闪存读写方法
CN108733306A (zh) 一种文件合并方法及装置
CN112860594B (zh) 一种固态盘地址重映射方法、设备及固态盘
WO2016123748A1 (zh) 一种闪存存储系统及其读写、删除方法
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
WO2021047425A1 (zh) 一种持久性内存的虚拟化方法及系统
US10635596B2 (en) Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes
US20240020014A1 (en) Method for Writing Data to Solid-State Drive
CN115203079A (zh) 一种将数据写入固态硬盘的方法
CN111984604B (zh) 一种减少日志结构文件系统碎片的方法及闪存存储系统
CN108563586A (zh) 一种分离固态盘中垃圾回收数据与用户数据的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant