CN114020707B - 存储空间回收方法、存储介质及程序产品 - Google Patents
存储空间回收方法、存储介质及程序产品 Download PDFInfo
- Publication number
- CN114020707B CN114020707B CN202210008265.0A CN202210008265A CN114020707B CN 114020707 B CN114020707 B CN 114020707B CN 202210008265 A CN202210008265 A CN 202210008265A CN 114020707 B CN114020707 B CN 114020707B
- Authority
- CN
- China
- Prior art keywords
- value
- key
- file
- storage
- key value
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000011084 recovery Methods 0.000 title claims abstract description 38
- 230000001174 ascending effect Effects 0.000 claims description 27
- 238000004064 recycling Methods 0.000 claims description 17
- 230000003321 amplification Effects 0.000 claims description 14
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 14
- 238000000926 separation method Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims 1
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1737—Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种存储空间回收方法、存储介质及程序产品,存储空间回收方法,包括:获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识,其中,键值标识是为值数据分配的标识,值数据是将键值对进行键值分离后得到的,键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据;从值存储区域中,确定包含无效的键值标识的值存储文件,从值存储文件中将无效的键值标识及其对应的值数据删除,并将值存储文件中剩余的键值标识及其对应的值数据重新写入值存储区域,以对值存储区域进行存储空间回收。
Description
技术领域
本申请实施例涉及数据存储技术领域,尤其涉及一种存储空间回收方法、存储介质及程序产品。
背景技术
LSM-tree(Log Structured Merge Tree),是一种存储键值对的数据结构,其通过将数据的修改和删除操作都以追加(append)的方式进行存储,从而提升存储系统的整体性能。为了提高LSM-tree的读写性能,会将键值对中的值进行分离并存储至文件中,并可以在LSM-tree中存储键和值地址。
但采用这种存储方式时,若需要释放值的存储空间,需要占用LSM-tree的资源,影响了LSM-tree的性能。
发明内容
有鉴于此,本申请实施例提供一种存储空间回收方案,以至少部分解决上述问题。
本申请实施例的第一方面,提供了一种存储空间回收方法,包括:获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识,其中,所述键值标识是为值数据分配的标识,所述值数据是将键值对进行键值分离后得到的,所述键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据;从所述值存储区域中,确定包含无效的键值标识的值存储文件,从所述值存储文件中将无效的键值标识及其对应的值数据删除,并将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收。
本申请实施例的第二方面,提供了一种存储空间回收方法,包括:接收针对值存储区域的空间回收指令;响应于所述空间回收指令,确定预先获得的无效的键值标识,其中,无效的键值标识在键存储区域进行存储空间回收时获得的确定为无效的键对应的键值标识,所述键值标识是为值数据分配的标识,所述值数据是将键值对进行键值分离后得到的,所述键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据;从所述值存储区域中,确定包含无效的键值标识的值存储文件,从所述值存储文件中将无效的键值标识及其对应的值数据删除,并将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收;确定并展示回收的存储空间大小。
本申请实施例的第三方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的存储空间回收方法。
本申请实施例的第四方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如上所述的存储空间回收方法对应的操作。
本申请实施例提供的方案,通过为值数据分配键值标识,并在键存储区域和值存储区域中均存储有键值标识,在值存储空间进行存储空间回收时,可以直接根据无效的键值标识删除值存储文件中的数据,并根据删除后剩余的键值标识进行重写,使得进行存储空间回收前后,值数据对应的键值标识不变,在查询操作时,可以直接根据键值标识实现值数据的查找,由此,可以通过键值标识实现键存储区域和值存储区域在存储空间回收过程的解耦,并且可以省略根据重写后的值数据的地址更新键存储区域的步骤,极大地减少了存储空间回收过程对键存储区域的资源消耗。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种存储系统写入数据的步骤流程图;
图2A为本申请实施例的一种存储空间回收方法的步骤流程图;
图2B为图2A所示实施例中的一种场景示例的示意图;
图3A为本申请实施例的一种存储空间回收方法的步骤流程图;
图3B为图3A所示实施例中的一种值存储空间的示意图;
图4为本申请实施例的一种存储空间回收方法的步骤流程图;
图5为本申请实施例的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
参见图1,为了方便地说明本申请的方案,先对存储系统进行介绍。
LSM-tree(Log Structured Merge Tree),是一种存储键值对的数据结构,其通过将数据的修改和删除操作都以追加(append)的方式进行存储,从而提升存储系统的整体性能。但是,LSM-tree中数据的修改和删除都是顺序写(append-only)的,不是原地更新,所以整体空间占用量会比实际有效数据量多。为此,需要对LSM-tree中的数据进行清理,以释放其占用的存储空间。
通常,为了提高LSM-tree的读写性能,会将键值对中的值进行分离并存储至文件中,并可以在LSM-tree中存储键和值地址。
若需要释放值的存储空间,需要从LSM-tree查询确定待删除的值数据,并在值数据删除完成后,将值数据所在文件的剩余值数据进行重写,再将重写的值数据的地址更新在LSM-Tree中,极大地影响了LSM-Tree的性能。
为此,本申请实施例提供了一种键值存储系统,参见图1,确定需要写入的键值对key|value后,可以判断键值对是否符合键值分离条件,若符合,则对其进行键值分离,得到key+value。针对分离出的value,可以将其存储入blobstore(值存储区域)中,并获得值存储区域返回的键值标识v-id。之后可以将分离出的key以及键值标识v-id组成新的键值对,将新的键值对存储至LSM-tree中。
若LSM-tree需要进行空间回收,可以执行compation(空间压缩)过程。若LSM-tree在compation过程中删除掉了键值对,则将删除掉的键值对中的键值标识v-id发送至blobstore(值存储区域)中,以使得blobstore(值存储区域)在进行存储空间回收的过程中将其删除。
具体通过下述实施例,对blobstore(值存储区域)进行存储空间回收的过程进行详细说明。
图2A为本申请实施例提供的一种存储空间回收方法的流程示意图,如图所示,其包括:
S201、获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识。
所述键值标识是为值数据分配的标识,所述值数据是将键值对进行键值分离后得到的,所述键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据。
本实施例中,键值标识可以为任意能够标识值数据的标识,本实施例对此不进行限定。具体生成键值标识的方法可参考上述图1相关内容,在此不再赘述。另外,具体对键值对进行键值分离的方法可参考相关技术,在此不再赘述。
S202、从所述值存储区域中,确定包含无效的键值标识的值存储文件,从所述值存储文件中将无效的键值标识及其对应的值数据删除,并将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收。
具体地,值存储空间中可以存储有多个值存储文件,每个值存储文件中可以包括多个键值标识及其对应的值数据。因此,本实施例中,进行删除时,先根据无效的键值标识,确定键值标识及其值数据所在的值存储文件,再将无效的键值标识及其对应的值数据从值存储文件中删除,并将剩余的键值标识及其对应的值数据进行重写。
重写完成后,进行查询操作时,可以通过key在键存储区域进行查询,得到key对应的键值标识,再根据键值标识在值存储文件中进行查询,获得值数据。
下面通过一具体实现场景,对本申请的方案进行示例性说明。
示例地,参见图2B,键存储区域中包括:多个键值对key 1|v-1,key 2|v-2…keym|v-m,其中部分键值对中的值数据为真实的值数据,另一部分键值对中存储的值数据为键值标识。
值存储区域中包括多个值存储文件blobfile-1,blobfile-2…blobfile-n,每个值存储文件中包括多个键值标识及其对应的值数据。
示例地,若键存储区域进行存储空间回收时,确定key30为无效的键,则可以将v-30作为无效的键值标识,发送至值存储区域。
值存储区域进行存储空间回收时,可以确定并读取键值标识v-30所在的值存储文件为blobfile-2,将键值标识v-30及其对应的值数据从blobfile-2中删除,并将blobfile-2中剩余的键值标识v-21-v-29、v-31-v-40及对应的值数据重新写入值存储区域,写入后可以得到新的blobfile-2,其中包括19个键值标识及其对应的值数据。
本实施例中,通过为值数据分配键值标识,并在键存储区域和值存储区域中均存储有键值标识,在值存储空间进行存储空间回收时,可以直接根据无效的键值标识删除值存储文件中的数据,并根据删除后剩余的键值标识进行重写,使得进行存储空间回收前后,值数据对应的键值标识不变,在查询操作时,可以直接根据键值标识实现值数据的查找,由此,可以通过键值标识实现键存储区域和值存储区域在存储空间回收过程的解耦,并且可以省略根据重写后的值数据的地址更新键存储区域的步骤,极大地减少了存储空间回收过程对键存储区域的资源消耗。
本实施例的存储空间回收方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
图3A为本申请实施例提供的一种存储空间回收方法的流程示意图,如图所示,其包括:
S301、获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识,并将无效的键值标识存储至待删除文件中。
本实施例中,可以将无效的键值标识存储在缓存中,直至到达预设数量时,再将缓存中的键值标识存储为待删除文件;或者,可以间隔预定时长将缓存中的键值标识存储为待删除文件。
本实施例中,待删除文件中可以仅存储有键值标识,使得待删除文件消耗的存储资源较少。
可选地,本申请实施例中,所述方法还包括:
S302、根据所述待删除文件中无效的键值标识的数量,以及所述值存储区域中存储的键值标识的总数量,确定所述值存储区域的空间放大率,并确定空间放大率是否符合预设空间回收条件。
若所述空间放大率符合预设空间回收条件,则执行步骤S303。
本实施例中,可以统计值存储区域中包括的键值标识的总数量(即值数据的总数量),以及确定待删除文件中无效的键值标识的数量(即无效的值数据的数量),然后利用两个数量估算值存储区域的空间放大率。
整体估算方式如下:
空间放大率 = 键值标识的总数量/(键值标识的总数量-无效的键值标识的数量)。
本实施例中,用户可以预设有空间放大率阈值作为预设空间回收条件。若空间放大率大于预设的空间放大率阈值。则可以开始执行步骤S303。
S303、从所述值存储区域中,确定包含无效的键值标识的值存储文件。
本实施例中,若存在多个待删除文件,则可以根据任一待删除文件中存储的无效的键值标识,确定包含其的值存储文件。
本实施例中,确定出的值存储文件可以包括多个,则可以针对多个中的部分或全部执行后续步骤。
S304、对所述待删除文件中无效的键值标识与所述值存储文件中的键值标识进行合并操作,以将无效的键值标识及其对应的值数据从所述值存储文件中删除。
本申请实施例中,可以将无效的键值标识称为标识序列1,将值存储文件中的键值标识称为标识序列2,则可以将标识序列1和标识序列2进行合并,得到合并后的标识序列3,并可以将标识序列3中重复的键值标识从标识序列2中删除。
可选地,本申请实施例中,所述待删除文件中按照升序存储无效的键值标识,所述值存储文件中按照升序存储所述键值标识及其对应的值数据。则,步骤S304可以包括:将所述待删除文件中无效的键值标识以及所述值存储文件中的键值标识进行归并排序;在归并排序过程中,将重复的键值标识从所述值存储文件中的键值标识中删除,以将无效的键值标识及其对应的值数据从所述值存储文件中删除。
本实施例中,通过将待删除文件中按照升序存储无效的键值标识,以及,值存储文件中按照升序存储所述键值标识及其对应的值数据,可以通过两个指针依序遍历即可实现归并排序,消耗的排序资源较少。
示例地,在归并排序的过程中,可以为两个标识序列分别分配一个指针,并通过指针分别遍历标识序列中的键值标识。
针对两个指针指示的键值标识,可以比对两个键值标识的大小。
若两个键值标识不相等,则可以将较小的键值标识对应的指针后移,以进行再次比对。
若两个键值标识中相等,则可以将两个键值标识从各自对应的标识序列中删除,并将两个键值标识对应的指针后移,以进行再次比对。
可选地,本申请实施例中,所述待删除文件的存储区域包括对应有存储阈值的多层存储空间,每层存储空间按照键值标识升序的顺序存储多个待删除文件,每个待删除文件中包括升序的多个键值标识,新生成的待删除文件被存储至顶层,所述方法还包括:针对任一层存储空间,若其中存储的待删除文件的总大小超出其对应的存储阈值,则将该层中的任一个或多个待删除文件向下一层合并。由此,可以按层存储待删除文件,并可以通过文件向下一层合并,方便地保证每一层级内的键值标识按照升序存储。
示例地,若L0层的待删除文件超出L0层对应的存储阈值,则可以将L0层的一待删除文件向L1层合并。具体进行合并时,可以根据L0层中将要向下合并待删除文件A1中存储的键值标识的范围,确定L1层中与其范围存在重合的待删除文件A2、A3,并可以将待删除文件A1与待删除文件A2、A3合并。
可选地,本申请实施例中,若待删除文件的存储区域包括对应有存储阈值的多层存储空间,则所述方法还可以包括:根据最下层的存储空间中的待删除文件,确定多个值存储文件分别对应的空间放大率;根据各个值存储文件的空间放大率,确定一个或者确定多个连续的值存储文件作为待回收空间的值存储文件,并从最下层的存储空间中确定出键值标识范围与待回收空间对应的待删除文件。
则,步骤S304包括:将作为待回收空间的值存储文件的键值标识,以及键值标识范围与待回收空间对应的待删除文件的键值标识进行归并排序。
本实施例中,由于本申请实施例中采用的是多层存储及向下合并,因此,最下层中存储的待删除文件中存储的一般为较先确定为无效的键值标识,优先将其删除。
另外,在进行多层的存储区域设计时,可以将最下层的存储空间的空间阈值设置的较大,若空间放大率满足预设空间回收条件,则最下层的存储空间中存储了较多的待删除文件,因此,根据最下层的待删除文件进行空间回收操作时,可以极大缓解值存储空间的空间放大的问题。
具体根据最下层的存储空间的待删除文件进行空间回收时,可以确定多个值存储文件分别对应的空间放大率,值存储文件对应的空间放大率,可以用于表征值存储文件中包括的无效的值数据占其的比例。
空间放大率 = 一值存储文件中键值标识的总数量/(一值存储文件中键值标识的总数量-一值存储文件中无效的键值标识的数量)。
通过值存储文件的空间放大率,可以从多个值存储文件中,选择出空间放大率较大的优先处理,以尽量较多地缓解值存储空间的空间放大率。
由于值存储文件按照升序存储键值标识,因此,在选择出空间放大率较大的一个或多个连续的值存储文件作为待回收空间的值存储文件后,可以直接确定待回收空间的值存储文件对应的键值标识范围,由于待删除文件中的键值标识是升序的,因此可以进一步从最下层的存储空间中确定出键值标识范围与待回收空间对应的待删除文件。
示例地,可以根据值存储文件的空间放大率确定值存储文件A3\4\5为待回收空间对应的存储文件,则可以确定文件A3\4\5对应的键值标识范围为A3中存储的第一个键值标识v-20到A5中存储的最后一个键值标识v-100。
在确定键值标识范围后,可以从最下层的存储空间中确定出键值标识范围与待回收空间对应的待删除文件,即,键值标识范围包含v-20到v-100的待删除文件B3。
确定完成后,可以将文件A3\4\5的键值标识,以及待删除文件B3的键值标识进行归并排序。
可选地,为了减小保证无效的键值标识升序所耗费的资源,本实施例中,除最下层存储空间之外的其他层存储空间中包括待删除文件组,待删除文件组中包括多个待删除文件,待删除文件组内的键值标识升序,待删除文件组间的键值标识的范围可重叠。通过保证待删除文件组内的键值标识升序,可以减少需要保证升序的键值标识的数量,节约资源。
S305、将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收。
可选地,本申请实施例中,若在上述步骤中进行了归并排序,则在归并排序过程中,将重复的键值标识从待回收空间对应的待删除文件以及值存储文件中删除;对应的,步骤S305包括:在归并排序后,将剩余的待删除文件重新写入所述待删除文件的存储区域,以及将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域。
由于待删除文件的键值标识范围与待回收空间对应的待删除文件的键值标识范围可能不完全重合,因此,本实施例中,需要在删除重复的键值标识后,将待删除文件中剩余的键值标识重新写入待删除文件的存储区域,以防止遗漏无效的键值标识。
示例地,参见图3B,示出了一种值存储区域blobStore的示意图。
关于数据存储:
当要写入值数据value时,可以通过BlobBuffer向BlobIDGenerator为值数据生成v-id,并返回至键存储区域LSM-tree,使得LSM-tree保存(key|v-id),并可以将(v-id|value)保存至值存储区域blobStore的缓存BlobBuffer中。BlobIDGenerator可以保证为多个值数据生成的v-id是升序的。
BlobIDGenerator生成的键值标识可以包括:以秒为单位的时间戳+自增计数值。具体地,生成的键值标识可以为long类型(64bit)数值,其中的前48bit为时间戳,后16bit为自增计数值,这样vi-id支持的最大时间戳可以到6429年,支持tps可以到65m/s, 完全满足存储需求。
当缓存BlobBuffer中缓存的值数据到达预设数量后,可以将缓存BlobBuffer中的值数据存储为值存储文件blobFile,并保证值存储文件blobFile中的键值标识v-id升序。
值存储文件blobFile的数据结构可以包括:用于存储值数据的BlobDataBlock区域,用于存储索引的BlobIndexBlock区域,用于存储文件元数据信息的Footer区域。每个blobFile的元数据信息中保存着该值存储文件里包含的最小和最大的v-id。图3B中的示出的blobFile-0可知,每个blobFile中可以包括多个BlobDataBlock区域,每个BlobDataBlock区域中可以存储都多个(v-id|value)数据,每个blobFile中可以包括一BlobIndexBlock区域和一Footer区域,分别用于存储该文件的索引以及文件元数据信息。
关于数据查找:
当需要查询值数据时,外部可以通过get方式将待查找的键值标识v-id发送至值存储区域中,在值存储区域中可以先根据待查找的键值标识v-id在缓存BlobBuffer中进行查找,若未找到,可以进一步根据待查找的键值标识v-id通过二分查找的方式在值存储文件中进行查找。
具体进行二分查找时,可以先根据值存储文件里包含的最小和最大的v-id,确定包含待查找的键值标识v-id的值存储文件blobFile,再在值存储文件blobFile的索引进行二分查找,找到存储待查找的键值标识v-id对应值数据的blobDataBlock,再在blobDataBlock内部通过二分查找得到值数据并返回。
关于存储空间回收:
值存储区域blobStore中空间回收的过程可以由BlobFileCleaner执行,包括但不限于:生成待删除文件tombstoneFile、将待删除文件tombstoneFile与值存储文件blobFile中的键值标识进行归并排序、将、将待删除文件tombstoneFile与值存储文件blobFile进行重写等。
BlobFileCleaner可以获得键存储空间进行存储空间回收时确定为无效的键对应的无效键值标识v-id。
值存储空间获得无效的键值标识v-id后,可以将其存储在BlobFileCleaner的缓存空间中,在缓存空间中存储了预设数量的无效的键值标识后,可以生成待删除文件,待删除文件中可以按照升序存储无效的键值标识。为了便于区分,可以将无效的键值标识称为tombstone,可以将其存储为的待删除文件称为tombstoneFile。
本实施例中,可以将待删除文件tombstoneFile与值存储文件blobFile中的键值标识进行归并排序,以将待删除文件中的键值标识从值存储文件blobFile中删除,并将值存储文件blobFile中剩余的重写写入值存储区域,实现存储空间回收。
具体地,参见图3B ,为了保证多个待删除文件tombstoneFile之间也按照键值标识升序排列,待删除文件tombstoneFile的存储空间可以包括三层,分别为L0、L1、L2。三层存储空间中,L0为最顶层,L2为最下层。
针对新生成的待删除文件tombstoneFile,可以先存入L0层,在L0层中的待删除文件超出存储阈值时,可以将L0层中的待删除文件tombstoneFile向L1层合并,类似的,L1层中的待删除文件tombstoneFile也可向L2层合并。进行合并时,可以保证被合并的待删除文件tombstoneFile与下层的多个待删除文件之间是按照键值标识升序排列的,若存在范围重叠,可以将发生范围重叠的多个待删除文件tombstoneFile中的键值标识就进行排序以及将待删除文件进行重写。
针对L0或者L1层,参见图3B,每层中可以包括多个待删除文件组tombstoneFileGroup,在对多层数据进行合并时,可以仅保证组内的键值标识升序,无需保证组间的键值标识严格升序,允许组间存在键值标识的范围重叠,以降低维护成本。
本实施例中,最下层L2用于与值存储文件进行归并排序,因此,最下层L2只能有一个待删除文件组tombstoneFileGroup。
具体进行存储空间回收时,可以根据计算值存储区域的空间放大率,并在空间放大率符合预设的存储空间回收条件时,开始进行存储空间回收。
具体进行空间回收时,可以确定各个值存储文件的空间放大率,然后选择空间放大率较大的一个或多个连续的值存储文件进行存储空间回收。由于后续会进行重写,为了尽量减少对值存储区域的性能的影响,本实施例中,若选择多个连续的值存储文件,则需要保证根据其中剩余的键值标识重写时,重写获得的值存储文件的数量为1个。
空间放大率可以按照下述公式估算:
空间放大率 =值存储空间中v-id的总数量 /(值存储空间中v-id的总数量 -tombstoneFile中tombstone的数量)。
在对选择空间放大率较大的一个或多个连续的值存储文件进行存储空间回收时,可以从L2中获得待删除文件,待删除文件对应的键值标识的范围应该包含被选择的值存储文件的键值标识范围。
由于值存储文件blobFile以及待删除文件tombstoneFile中存储的均为升序的键值标识,因此,可以将两个文件中的键值标识进行归并排序,在归并排序的过程中,将重复的键值标识从值存储文件blobFile以及待删除文件tombstoneFile中删除。
在归并排序后,可以将待删除文件tombstoneFile剩余的键值标识写入L2层中的原位置,以及将值存储文件blobFile中剩余的键值标识及其对应的值数据,写入值存储区域中的原位置。
另外,本实施例提供的方案,利用待删除文件记录无效的键值标识,并保证待删除文件以及值存储文件中均按照键值标识升序的顺序存储,在进行存储空间回收的过程中,无需通过向键存储区域LSM-tree进行查询来确定键值标识是否无效,而可以直接将两个文件中的键值标识进行归并排序,实现高效的存储空间回收过程。
此外,存储空间回收方式除了以上阐述的blobFile和tombstoneFile合并的方式外,在设置数据过期时间的场景,还可以根据过期时间来对blobFile进行存储空间回收。即
(1)在分离的value被写入blobFile时,可以计算出该blobFile中数据过期时间的最大值,作为该blobFile的过期时间。
(2)blobStore可以通过BlobFileCleaner定期扫描所有的blobFile,将当前时间已经超出其过期时间的blobFile进行删除,从而回收磁盘空间。
一般情况下,键值分离存储的主要缺点是存储空间回收过程和LSM-tree的compaction过程相绑定,容易在compaction期间出现很集中的大量IO, 让LSM-tree在compaction时出现抖动。
本方案中的存储空间回收方式由blobStore内部独立调度,和LSM-tree的compaction没有直接关系,可以避免LSM-tree的compaction和值存储区域blobStore的存储空间回收同时触发时,系统变得不稳定的问题。本方案可以相对灵活地选择blobStore的存储空间回收被调度的时机,(例如,可以在系统处于低负载时,或者LSM-tree当前没有compaction操作的时候,才进行值存储区域blobStore存储空间回收),存储空间回收机制更加灵活。
本方案中通过tombstoneFile和blobFile合并的方式来进行存储空间回收,不需要查询和改写LSM-tree, 可以减少存储空间回收操作对LSM-tree性能的影响,从而可以保障存储空间回收期间系统的整体性能。
本实施例的存储空间回收方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
图4为本申请实施例提供的又一种存储空间回收方法的流程示意图,如图所示,其包括:
S401、展示值存储区域的空间信息,以及,接收针对值存储区域的空间回收指令。
本实施例中,空间信息可以包括已占用的总存储空间、存储有效数据的存储空间、空间放大率等。
类似的,本申请实施例中,还可以展示键存储空间的空间信息,以使得用户同时了解进行键值分离存储时,键存储空间和值存储空间各自对应的空间信息。
若用户根据展示的空间信息确定需要进行存储空间回收,可以输入空间回收指令。
S402、响应于所述空间回收指令,确定预先获得的无效的键值标识。
其中,无效的键值标识在键存储区域进行存储空间回收时获得的确定为无效的键对应的键值标识,所述键值标识是为值数据分配的标识,所述值数据是将键值对进行键值分离后得到的,所述键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据。
本步骤的具体实现方式可参考上述实施例,在此不再赘述。
S403、从所述值存储区域中,确定包含无效的键值标识的值存储文件,从所述值存储文件中将无效的键值标识及其对应的值数据删除,并将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收。
本步骤的具体实现方式可参考上述实施例,在此不再赘述。
S404、确定并展示回收的存储空间大小。
本实施例中,进行存储空间回收完成后,可以展示回收的存储空间的大小,以及展示进行存储空间回收操作后,值存储空间更新后的空间信息,以使得用户对存储空间的使用情况进行及时了解。
参照图5,示出了本申请实施例提供的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
处理器502,用于执行程序510,具体可以执行上述存储空间回收方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是处理器CPU,或者是特定集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510中各步骤的具体实现可以参见上述存储空间回收方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
本申请实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的任一存储空间回收方案对应的操作。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的存储空间回收方法。此外,当通用计算机访问用于实现在此示出的存储空间回收方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的存储空间回收方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (11)
1.一种存储空间回收方法,包括:
获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识,其中,所述键值标识是为值数据分配的标识,所述值数据是将键值对进行键值分离后得到的,所述键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据;
从所述值存储区域中,确定包含无效的键值标识的值存储文件,从所述值存储文件中将无效的键值标识及其对应的值数据删除,并将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收。
2.根据权利要求1所述的方法,其中,所述获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识,包括:
获得键存储区域进行存储空间回收时确定无效的键对应的无效的键值标识,并将无效的键值标识存储至待删除文件中;
所述从所述值存储文件中将无效的键值标识及其对应的值数据删除,包括:
对所述待删除文件中无效的键值标识与所述值存储文件中的键值标识进行合并操作,以将无效的键值标识及其对应的值数据从所述值存储文件中删除。
3.根据权利要求2所述的方法,其中,所述待删除文件中按照升序存储无效的键值标识,所述值存储文件中按照升序存储所述键值标识及其对应的值数据,
所述对所述待删除文件中无效的键值标识与所述值存储文件中的键值标识进行合并操作,以将无效的键值标识及其对应的值数据从所述值存储文件中删除,包括:
将所述待删除文件中无效的键值标识以及所述值存储文件中的键值标识进行归并排序;
在归并排序过程中,将重复的键值标识从所述值存储文件中的键值标识中删除,以将无效的键值标识及其对应的值数据从所述值存储文件中删除。
4.根据权利要求3所述的方法,其中,所述待删除文件的存储区域包括对应有存储阈值的多层存储空间,每层存储空间按照键值标识升序的顺序存储多个待删除文件,每个待删除文件中包括升序的多个键值标识,新生成的待删除文件被存储至顶层,所述方法还包括:
针对任一层存储空间,若其中存储的待删除文件的总大小超出其对应的存储阈值,则将该层中的任一个或多个待删除文件向下一层合并。
5.根据权利要求4所述的方法,其中,所述方法还包括:
根据最下层的存储空间中的待删除文件,确定多个值存储文件分别对应的空间放大率,其中,所述空间放大率 = 键值标识的总数量/(键值标识的总数量-无效的键值标识的数量);
根据各个值存储文件的空间放大率,确定一个或者确定多个连续的值存储文件作为待回收空间的值存储文件,并从最下层的存储空间中确定出键值标识范围与待回收空间对应的待删除文件;
所述将所述待删除文件中无效的键值标识以及所述值存储文件中的键值标识进行归并排序,包括:
将作为待回收空间的值存储文件的键值标识,以及键值标识范围与待回收空间对应的待删除文件的键值标识进行归并排序。
6.根据权利要求5所述的方法,其中,所述在归并排序过程中,将重复的键值标识从所述值存储文件中的键值标识中删除,以将无效的键值标识及其对应的值数据从所述值存储文件中删除,包括:
在归并排序过程中,将重复的键值标识从待删除文件以及值存储文件中删除;
所述将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收,包括:
在归并排序后,将剩余的待删除文件重新写入所述待删除文件的存储区域,以及将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域。
7.根据权利要求4所述的方法,其中,除最下层存储空间之外的其他层存储空间中包括待删除文件组,待删除文件组中包括多个待删除文件,待删除文件组内的键值标识升序,待删除文件组间的键值标识的范围可重叠。
8.根据权利要求2所述的方法,其中,所述方法还包括:
根据所述待删除文件中无效的键值标识的数量,以及所述值存储区域中存储的键值标识的总数量,确定所述值存储区域的空间放大率,其中,所述空间放大率 = 键值标识的总数量/(键值标识的总数量-无效的键值标识的数量);
若所述空间放大率符合预设空间回收条件,则执行从所述值存储区域中,确定包含无效的键值标识的值存储文件的步骤。
9.根据权利要求1所述的方法,其中,所述方法还包括:
获取待写入的键值对,判断键值对是否满足预设的键值分离阈值;
若满足,则将键值对分离得到值数据,并为所述值数据分配键值标识,所述键值标识包括时间戳以及自增计数值;
将所述键值对中的键以及所述键值标识存储至键存储区域,并将所述键值标识及对应的值数据存储至值存储区域。
10.一种存储空间回收方法,包括:
接收针对值存储区域的空间回收指令;
响应于所述空间回收指令,确定预先获得的无效的键值标识,其中,无效的键值标识在键存储区域进行存储空间回收时获得的确定为无效的键对应的键值标识,所述键值标识是为值数据分配的标识,所述值数据是将键值对进行键值分离后得到的,所述键存储区域中存储有键及对应的键值标识,值存储区域中存储有键值标识及对应的值数据;
从所述值存储区域中,确定包含无效的键值标识的值存储文件,从所述值存储文件中将无效的键值标识及其对应的值数据删除,并将所述值存储文件中剩余的键值标识及其对应的值数据重新写入所述值存储区域,以对所述值存储区域进行存储空间回收;
确定并展示回收的存储空间大小。
11.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-10中任一所述的存储空间回收方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210008265.0A CN114020707B (zh) | 2022-01-06 | 2022-01-06 | 存储空间回收方法、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210008265.0A CN114020707B (zh) | 2022-01-06 | 2022-01-06 | 存储空间回收方法、存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114020707A CN114020707A (zh) | 2022-02-08 |
CN114020707B true CN114020707B (zh) | 2022-06-14 |
Family
ID=80069900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210008265.0A Active CN114020707B (zh) | 2022-01-06 | 2022-01-06 | 存储空间回收方法、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114020707B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684307A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN111399777A (zh) * | 2020-03-16 | 2020-07-10 | 北京平凯星辰科技发展有限公司 | 一种基于数据值分类的差异化键值数据存储方法 |
CN112395212A (zh) * | 2020-11-05 | 2021-02-23 | 华中科技大学 | 减少键值分离存储系统的垃圾回收和写放大的方法及系统 |
WO2021197493A1 (zh) * | 2020-04-04 | 2021-10-07 | 厦门网宿有限公司 | 一种基于LSM-Tree存储引擎的文件管理方法和装置 |
CN113495847A (zh) * | 2020-04-04 | 2021-10-12 | 厦门网宿有限公司 | 一种存储空间回收方法、系统及计算机存储介质 |
CN113626431A (zh) * | 2021-07-28 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996563B2 (en) * | 2010-04-06 | 2015-03-31 | Tokutek, Inc. | High-performance streaming dictionary |
US9923970B2 (en) * | 2014-08-22 | 2018-03-20 | Nexenta Systems, Inc. | Multicast collaborative erasure encoding and distributed parity protection |
US10891264B2 (en) * | 2015-04-30 | 2021-01-12 | Vmware, Inc. | Distributed, scalable key-value store |
CN105677243B (zh) * | 2015-12-31 | 2018-12-28 | 华为技术有限公司 | 数据写入装置及方法 |
CN110389942B (zh) * | 2019-06-21 | 2021-07-30 | 华中科技大学 | 一种无垃圾回收的键值分离存储方法和系统 |
-
2022
- 2022-01-06 CN CN202210008265.0A patent/CN114020707B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684307A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN111399777A (zh) * | 2020-03-16 | 2020-07-10 | 北京平凯星辰科技发展有限公司 | 一种基于数据值分类的差异化键值数据存储方法 |
WO2021197493A1 (zh) * | 2020-04-04 | 2021-10-07 | 厦门网宿有限公司 | 一种基于LSM-Tree存储引擎的文件管理方法和装置 |
CN113495847A (zh) * | 2020-04-04 | 2021-10-12 | 厦门网宿有限公司 | 一种存储空间回收方法、系统及计算机存储介质 |
CN112395212A (zh) * | 2020-11-05 | 2021-02-23 | 华中科技大学 | 减少键值分离存储系统的垃圾回收和写放大的方法及系统 |
CN113626431A (zh) * | 2021-07-28 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统 |
Non-Patent Citations (2)
Title |
---|
Accordion:better memory organization for LSM key-value stores;Bortnikov E;《Proceedings of the VLDB Endowment》;20181231;第11卷(第12期);第1863-1875页 * |
一种读写均衡的高性能键值存储系统;吴加禹;《中国科学技术大学学报》;20201231;第50卷(第06期);第825-831页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114020707A (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI719281B (zh) | 用於串流選擇之系統、機器可讀媒體、及機器實施之方法 | |
TWI702506B (zh) | 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
CN107391774A (zh) | 基于重复数据删除的日志文件系统的垃圾回收方法 | |
CN111198856B (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
US11100047B2 (en) | Method, device and computer program product for deleting snapshots | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN106446044B (zh) | 存储空间回收方法及装置 | |
CN103678337A (zh) | 数据清除方法、装置及系统 | |
CN112306408A (zh) | 一种存储块处理方法、装置、设备及存储介质 | |
CN115878027A (zh) | 一种存储对象的处理方法、装置、终端及存储介质 | |
CN112817962B (zh) | 基于对象存储的数据存储方法、装置和计算机设备 | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
CN113867627A (zh) | 一种存储系统性能优化方法及系统 | |
CN114020707B (zh) | 存储空间回收方法、存储介质及程序产品 | |
CN112463058A (zh) | 一种碎片数据整理方法、装置及存储节点 | |
CN113254273A (zh) | 一种实时恢复主元数据的方法、系统、设备及介质 | |
CN111581157B (zh) | 一种对象存储平台以及对象操作方法、装置和服务器 | |
CN110413617B (zh) | 一种根据数据量的大小动态调节哈希表组的方法 | |
CN114443583A (zh) | 一种碎片空间整理方法、装置、设备及存储介质 | |
CN114115699A (zh) | 一种数据处理方法、装置及系统 | |
CN106959888B (zh) | 云存储系统中的任务处理方法及装置 | |
CN117009439B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN117729176B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40067493 Country of ref document: HK |