一种碎片数据整理方法、装置及存储节点转让专利

申请号 : CN202011364340.4

文献号 : CN112463058B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王定琋丁光凯

申请人 : 杭州海康威视系统技术有限公司

摘要 :

本发明实施例提供了一种碎片数据整理方法、装置及存储节点,涉及数据存储技术领域。该方法应用于分布式存储系统的存储节点,包括:对目标主数据块进行分组得到主数据块组;针对每个主数据块组,将该组的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块的全部数据片段写入完成后,释放该数据块的存储空间;针对每个主数据块组,每当完成属于该组的任一数据片段的写入后,指示该组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据并释放备份数据的原始存储空间。与现有技术相比,应用本发明实施例提供的方案,对数据块中的碎片数据进行整理,提高数据块的有效数据空间占比,提高存储节点的空间利用率。

权利要求 :

1.一种数据整理方法,其特征在于,应用于分布式存储系统中的存储节点,所述方法包括:确定各个目标主数据块;其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;

按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;其中,所述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;

针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;

针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放所述备份数据的原始存储空间;其中,所述目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。

2.根据权利要求1所述的方法,其特征在于,所述将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中的步骤,包括:针对该主数据块组中的目标主数据块所存储的每一数据片段,将该数据片段连续写入到第一数据块中,并将更新后的该数据片段的索引信息写入到所述第一数据块中;

所述指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据的步骤,包括:指示该目标主数据块组对应的目标存储节点将该数据片段的备份数据写入到第二数据块中,并将更新后的所述备份数据的索引信息写入到所述第二数据块中。

3.根据权利要求1或2所述的方法,其特征在于,在所述针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中的步骤之前,所述方法还包括:针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块;

其中,该主数据块组对应数据为:该主数据块组中各个目标主数据块所存储数据块,每个主数据块组对应的数据量为:该主数据块组中各个目标主数据块所存储数据片段的数据量总和,所述目标存储容量为:所述存储节点中的数据块的存储容量。

4.根据权利要求3所述的方法,其特征在于,在所述针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块的步骤之后,所述方法还包括:针对每个主数据块组,指示该主数据块对应的目标存储节点,确定用于存储该主数据块组对应备份数据的第二数据块;

其中,该主数据块组对应备份数据为:该数据块组中各个目标主数据块所存储数据片段的备份数据;该主数据块组对应的目标存储节点所确定的第二数据块的数量,与用于连续存储该主数据块组对应数据的第一数据块的数量相同。

5.根据权利要求1所述的方法,其特征在于,所述确定各个目标主数据块的步骤,包括:确定所述存储节点中,处于关闭状态且不存在异步任务的各个主数据块;

基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块。

6.根据权利要求5所述的方法,其特征在于,所述基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块的步骤,包括:从所确定的各个主数据块中,确定符合预定条件的目标主数据块;

其中,所述预定条件包括:有效数据空间占比小于第一指定占比阈值,和/或存在空洞。

7.根据权利要求1所述的方法,其特征在于,所述按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组的步骤,包括:按照预设分组原则,对各个目标主数据块进行分组,得到至少一个候选组;

针对每个候选组,若该候选组中各个目标主数据块的数量大于第一预设数值,和/或,该候选组中各个目标主数据块的有效数据空间占比总和大于第一预设占比和值,则将该候选组确定为主数据块组。

8.根据权利要求1或7所述的方法,其特征在于,所述预设分组原则还包括:属于同一组的各个目标主数据块的备份数据块属于同一虚拟组。

9.根据权利要求1所述的方法,其特征在于,所述方法还包括:

确定各个目标单副本数据块;其中,每个目标单副本数据块为:处于关闭状态的单副本数据块;

针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间。

10.根据权利要求9所述的方法,其特征在于,在所述针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中的步骤之前,所述方法还包括:将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个单副本数据块组;

所述针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中的步骤,包括:针对每个单副本数据块组,将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中。

11.根据权利要求10所述的方法,其特征在于,所述将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中的步骤,包括:针对该单副本数据块组中的目标单副本数据块所存储的每一数据片段,将该数据连续写入到该单副本数据块组对应的第三数据块中,并将更新后的该数据的索引信息写入到该单副本数据块组对应的第三数据块中。

12.一种数据整理装置,其特征在于,应用于分布式存储系统中的存储节点,所述装置包括:第一数据块确定模块,用于确定各个目标主数据块;其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;

第一数据块分组模块,用于按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;其中,所述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;

第一数据块迁移模块,用于针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;

备份数据迁移模块,用于针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放所述备份数据的原始存储空间;其中,所述目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。

13.一种存储节点,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现权利要求1‑11任一所述的方法步骤。

14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1‑11任一所述的方法步骤。

说明书 :

一种碎片数据整理方法、装置及存储节点

技术领域

[0001] 本发明涉及数据存储技术领域,特别是涉及一种碎片数据整理方法、装置及存储节点。

背景技术

[0002] 当前,随着各类应用场景中需要存储的数据的数据量不断增加,分布式存储系统被越来越多地运用到各类应用场景中,在分布式存储系统中,数据可以以数据块为单位进行存储,并且,在将数据存储到数据块中后,用户可以对数据进行增、删、改、查等操作。
[0003] 其中,由于数据是连续写入到数据块中的,而用户对数据进行的增、删、改、查等操作,可以导致数据块所存储的数据是不连续的,因此,数据块中可能存在多个不连续的数据片段。这些不连续存储的数据片段即为碎片数据,而不连续的碎片数据之间的存储空间则可以称为空洞。
[0004] 例如,在数据块BLOCK1中连续写入数据D1、数据D2和数据D3,若用户通过删操作,将数据D2删除,则在BLOCK1中,数据D1和数据D3之间就会存在一个容量等于D2数据的数据量的存储空间。这样,数据D1和数据D2对于BLOCK1来说就形成了碎片数据,而BLOCK1中的数据D1和数据D3之间的存储空间即为空洞。
[0005] 基于向数据块写入数据的技术要求,数据块中的空洞是不能写入数据的,也就是说,即使空洞所在存储空间中的数据已被删除,但是仍然无法得到复用。
[0006] 这样,当用户频繁对已存储数据进行增、删、改、查等操作时,数据块中可能出现大量的不能复用的空洞,从而,可以导致数据块中存储有数据的有效数据空间占比较低,进而,使得存储节点的空间利用率较低,甚至最终导致分布式存储系统瘫痪而无法提供存储服务。

发明内容

[0007] 本发明实施例的目的在于提供一种碎片数据整理方法、装置及存储节点,以对数据块中的碎片数据进行整理,提高数据块的有效数据空间占比,进而,提高存储节点的空间利用率。具体技术方案如下:
[0008] 第一方面,本发明实施例提供了一种数据整理方法,应用于分布式存储系统中的存储节点,所述方法包括:
[0009] 确定各个目标主数据块;其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;
[0010] 按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;其中,所述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;
[0011] 针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;
[0012] 针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放所述备份数据的原始存储空间;其中,所述目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。
[0013] 可选的,一种具体实现方式中,所述将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中的步骤,包括:
[0014] 针对该主数据块组中的目标主数据块所存储的每一数据片段,将该数据片段连续写入到第一数据块中,并将更新后的该数据片段的索引信息写入到所述第一数据块中;
[0015] 所述指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据的步骤,包括:
[0016] 指示该目标主数据块组对应的目标存储节点将该数据片段的备份数据写入到第二数据块中,并将更新后的所述备份数据的索引信息写入到所述第二数据块中。
[0017] 可选的,一种具体实现方式中,在所述针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中的步骤之前,所述方法还包括:
[0018] 针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块;
[0019] 其中,该主数据块组对应数据为:该主数据块组中各个目标主数据块所存储数据块,每个主数据块组对应的数据量为:该主数据块组中各个目标主数据块所存储数据片段的数据量总和,所述目标存储容量为:所述存储节点中的数据块的存储容量。
[0020] 可选的,一种具体实现方式中,在所述针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块的步骤之后,所述方法还包括:
[0021] 针对每个主数据块组,指示该主数据块对应的目标存储节点,确定用于存储该主数据块组对应备份数据的第二数据块;
[0022] 其中,该主数据块组对应备份数据为:该数据块组中各个目标主数据块所存储数据片段的备份数据;该主数据块组对应的目标存储节点所确定的第二数据块的数量,与用于连续存储该主数据块组对应数据的第一数据块的数量相同。
[0023] 可选的,一种具体实现方式中,所述确定各个目标主数据块的步骤,包括:
[0024] 确定所述存储节点中,处于关闭状态且不存在异步任务的各个主数据块;
[0025] 基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块。
[0026] 可选的,一种具体实现方式中,所述基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块的步骤,包括:
[0027] 从所确定的各个主数据块中,确定符合预定条件的目标主数据块;
[0028] 其中,所述预定条件包括:有效数据空间占比小于第一指定占比阈值,和/或存在空洞。
[0029] 可选的,一种具体实现方式中,所述按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组的步骤,包括:
[0030] 按照预设分组原则,对各个目标主数据块进行分组,得到至少一个候选组;
[0031] 针对每个候选组,若该候选组中各个目标主数据块的数量大于第一预设数值,和/或,该候选组中各个目标主数据块的有效数据空间占比总和大于第一预设占比和值,则将该候选组确定为主数据块组。
[0032] 可选的,一种具体实现方式中,所述预设分组原则还包括:属于同一组的各个目标主数据块的备份数据块属于同一虚拟组。
[0033] 可选的,一种具体实现方式中,所述方法还包括:
[0034] 确定各个目标单副本数据块;其中,每个目标单副本数据块为:处于关闭状态的单副本数据块;
[0035] 针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间。
[0036] 可选的,一种具体实现方式中,在所述针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中的步骤之前,所述方法还包括:
[0037] 将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个单副本数据块组;
[0038] 所述针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中的步骤,包括:
[0039] 针对每个单副本数据块组,将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中。
[0040] 可选的,一种具体实现方式中,所述将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中的步骤,包括:
[0041] 针对该单副本数据块组中的目标单副本数据块所存储的每一数据片段,将该数据连续写入到该单副本数据块组对应的第三数据块中,并将更新后的该数据的索引信息写入到该单副本数据块组对应的第三数据块中。
[0042] 第二方面,本发明实例提供了一种数据整理装置,应用于分布式存储系统中的存储节点,所述装置包括:
[0043] 第一数据块确定模块,用于确定各个目标主数据块;其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;
[0044] 第一数据块分组模块,用于按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;其中,所述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;
[0045] 第一数据块迁移模块,用于针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;
[0046] 备份数据迁移模块,用于针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放所述备份数据的原始存储空间;其中,所述目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。
[0047] 可选的,一种具体实现方式中,所述第一数据块迁移模块具体用于:
[0048] 针对该主数据块组中的目标主数据块所存储的每一数据片段,将该数据片段连续写入到第一数据块中,并将更新后的该数据片段的索引信息写入到所述第一数据块中;
[0049] 所述备份数据迁移模块,具体用于指示该目标主数据块组对应的目标存储节点将该数据片段的备份数据写入到第二数据块中,并将更新后的所述备份数据的索引信息写入到所述第二数据块中。
[0050] 可选的,一种具体实现方式中,所述装置还包括:
[0051] 数据块申请模块,用于在所述针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中之前,针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块;
[0052] 其中,该主数据块组对应数据为:该主数据块组中各个目标主数据块所存储数据块,每个主数据块组对应的数据量为:该主数据块组中各个目标主数据块所存储数据片段的数据量总和,所述目标存储容量为:所述存储节点中的数据块的存储容量。
[0053] 可选的,一种具体实现方式中,所述装置还包括:
[0054] 数据块指示模块,用于在所述针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块之后,针对每个主数据块组,指示该主数据块对应的目标存储节点,确定用于存储该主数据块组对应备份数据的第二数据块;
[0055] 其中,该主数据块组对应备份数据为:该数据块组中各个目标主数据块所存储数据片段的备份数据;该主数据块组对应的目标存储节点所确定的第二数据块的数量,与用于连续存储该主数据块组对应数据的第一数据块的数量相同。
[0056] 可选的,一种具体实现方式中,所述第一数据块确定模块包括:
[0057] 第一数据块确定子模块,用于确定所述存储节点中,处于关闭状态且不存在异步任务的各个主数据块;
[0058] 第二数据块确定子模块,用于基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块。
[0059] 可选的,一种具体实现方式中,所述第二数据块确定子模块具体用于:
[0060] 从所确定的各个主数据块中,确定符合预定条件的目标主数据块;
[0061] 其中,所述预定条件包括:有效数据空间占比小于第一指定占比阈值,和/或存在空洞。
[0062] 可选的,一种具体实现方式中,第一数据块分组模块具体用于:
[0063] 按照预设分组原则,对各个目标主数据块进行分组,得到至少一个候选组;
[0064] 针对每个候选组,若该候选组中各个目标主数据块的数量大于第一预设数值,和/或,该候选组中各个目标主数据块的有效数据空间占比总和大于第一预设占比和值,则将该候选组确定为主数据块组。
[0065] 可选的,一种具体实现方式中,所述预设分组原则还包括:属于同一组的各个目标主数据块的备份数据块属于同一虚拟组。
[0066] 可选的,一种具体实现方式中,所述装置还包括:
[0067] 第二数据块确定模块,用于确定各个目标单副本数据块;其中,每个目标单副本数据块为:处于关闭状态的单副本数据块;
[0068] 第二数据块迁移模块,用于针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间。
[0069] 可选的,一种具体实现方式中,所述装置还包括:
[0070] 第二数据块分组模块,用于在所述针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中的步骤之前,将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个单副本数据块组;
[0071] 所述第二数据块迁移模块,包括:
[0072] 数据迁移子模块,用于针对每个单副本数据块组,将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中。
[0073] 可选的,一种具体实现方式中,所述数据迁移子模块,具体用于:
[0074] 针对该单副本数据块组中的目标单副本数据块所存储的每一数据片段,将该数据连续写入到该单副本数据块组对应的第三数据块中,并将更新后的该数据的索引信息写入到该单副本数据块组对应的第三数据块中。
[0075] 第三方面,本发明实施例提供了一种存储节点,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
[0076] 存储器,用于存放计算机程序;
[0077] 处理器,用于执行存储器上所存放的程序时,实现上述本发明实施例第一方面提供的任一数据整理方法的步骤。
[0078] 第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例第一方面提供的任一数据整理方法的步骤。
[0079] 第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例第一方面提供的任一数据整理方法的步骤。
[0080] 本发明实施例有益效果:
[0081] 以上可见,应用本发明实施例提供的方案,分布式存储系统中的存储节点可以首先确定各个处于关闭状态且不存在异步任务的主数据块,作为目标主数据块。其中,由于主数据块和该主数据块的备份数据块位于不同的存储节点中,而所确定的各个目标主数据块的备份数据块可以位于不同的存储节点中,因此,在确定出各个目标主数据块后,便可以按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组,其中,属于同一组的目标主数据块的备份数据块位于同一存储节点。接着,针对每个主数据块组,便可以将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,进而,在每一目标主数据块中的全部数据片段写入完成后,便可以释放该目标主数据块的存储空间。而由于每个主数据块存在备份数据块,当对主数据块中的数据进行迁移,存储到新的数据块中时,为了保证主数据块和备份数据块之间的一致性,需要同时对该主数据块的备份数据块中的数据进行迁移,因此,针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放备份数据的原始存储空间。
[0082] 基于此,应用本发明实施例提供的方案,对于存储介质中所存在的目标主数据块,可以将该各个目标主数据块中的数据片段连续写入到第一数据块中,从而,释放各个目标主数据块的存储空间。这样,便可以将分散存储在多个数据块中的数据集中存储到数量较少的数据块中,并且,该数量较少的数据块中不存在空洞。从而,对于存在空洞的各个目标主数据块而言,该各个目标主数据块中的空洞可以随着该各个数块中的存储空间的释放而能够得以复用,而对于用于存储各个目标主数据块中的数据的第一数据块而言,由于各个第一数据块中的数据片段是连续存储的,因此,各个第一数据块中不存在不能复用的空洞,各个第一数据块中的剩余存储空间可以继续使用。这样,便可以对各个数据块中的碎片数据进行整理,从而,减少各个数据块中由于空洞存在所造成的不能复用的存储空间的浪费,进而,提高数据块的有效数据空间占比,以提高存储节点的空间利用率。

附图说明

[0083] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0084] 图1为本发明实施例提供的一种数据整理方法的流程示意图;
[0085] 图2为存储节点中每个数据块的存储结构示意图;
[0086] 图3为本发明实施例提供的另一种数据整理方法的流程示意图;
[0087] 图4为本发明实施例提供的另一种数据整理方法的流程示意图;
[0088] 图5为本发明实施例提供的另一种数据整理方法的流程示意图;
[0089] 图6为本发明实施例提供的另一种数据整理方法的流程示意图;
[0090] 图7为本发明实施例提供的一种数据整理装置的结构示意图;
[0091] 图8为本发明实施例提供的一种存储节点的结构示意图。

具体实施方式

[0092] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0093] 相关技术中,在分布式存储系统中,数据可以以数据块为单位进行存储,并且,在将数据存储到数据块中后,用户可以对数据进行增、删、改、查等操作。当用户频繁对已存储数据进行增、删、改、查等操作时,数据块中可能出现大量的不能复用的空洞,从而,可以导致数据块中存储有数据的有效数据空间占比较低,进而,使得存储节点的空间利用率较低,甚至最终导致分布式存储系统瘫痪而无法提供存储服务。
[0094] 为了解决上述技术问题,本发明实施例提供了一种数据整理方法。
[0095] 其中,由于分布式存储系统可以采用无中心化存储方式,因此,该方法可以应用于分布式存储系统中的任一存储节点。并且,本发明实施例可以应用于任一采用分布式存储系统的应用场景中,例如,道路交通监控、购物网站用户信息管理等。进一步的,分布式存储系统中的存储节点可以是台式电脑、NVR(Network Video Recorder,网络视频录像机)等各种类型的电子设备。
[0096] 基于此,本发明实施例不对所提供的数据整理方法的应用场景和执行主体进行具体限定。
[0097] 进而,本发明实施例提供的一种数据整理方法,可以包括如下步骤:
[0098] 确定各个目标主数据块;其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;
[0099] 按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;其中,所述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;
[0100] 针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;
[0101] 针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放所述备份数据的原始存储空间;其中,所述目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。
[0102] 以上可见,应用本发明实施例提供的方案,分布式存储系统中的存储节点可以首先确定各个处于关闭状态且不存在异步任务的主数据块,作为目标主数据块。其中,由于主数据块和该主数据块的备份数据块位于不同的存储节点中,而所确定的各个目标主数据块的备份数据块可以位于不同的存储节点中,因此,在确定出各个目标主数据块后,便可以按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组,其中,属于同一组的目标主数据块的备份数据块位于同一存储节点。接着,针对每个主数据块组,便可以将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,进而,在每一目标主数据块中的全部数据片段写入完成后,便可以释放该目标主数据块的存储空间。而由于每个主数据块存在备份数据块,当对主数据块中的数据进行迁移,存储到新的数据块中时,为了保证主数据块和备份数据块之间的一致性,需要同时对该主数据块的备份数据块中的数据进行迁移,因此,针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放备份数据的原始存储空间。
[0103] 基于此,应用本发明实施例提供的方案,对于存储介质中所存在的目标主数据块,可以将该各个目标主数据块中的数据片段连续写入到第一数据块中,从而,释放各个目标主数据块的存储空间。这样,便可以将分散存储在多个数据块中的数据集中存储到数量较少的数据块中,并且,该数量较少的数据块中不存在空洞。从而,对于存在空洞的各个目标主数据块而言,该各个目标主数据块中的空洞可以随着该各个数块中的存储空间的释放而能够得以复用,而对于用于存储各个目标主数据块中的数据的第一数据块而言,由于各个第一数据块中的数据片段是连续存储的,因此,各个第一数据块中不存在不能复用的空洞,各个第一数据块中的剩余存储空间可以继续使用。这样,便可以对各个数据块中的碎片数据进行整理,从而,减少各个数据块中由于空洞存在所造成的不能复用的存储空间的浪费,进而,提高数据块的有效数据空间占比,以提高存储节点的空间利用率。
[0104] 下面,结合附图,对本发明实施例提供的一种数据整理方法进行具体说明。
[0105] 图1为本发明实施例提供的一种数据整理方法的流程示意图,如图1所述,该方法可以包括如下步骤:
[0106] S101:确定各个目标主数据块;
[0107] 其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;
[0108] 每个存储节点中可以存在多个数据块,并且,根据每个数据块中所存储数据的存储模式,该存储节点中所存在的数据块的类型可以包括单副本数据块、主数据块和备份数据块中的至少一类。
[0109] 其中,针对每个数据块,该数据块可以具有打开和关闭两种状态,其中,当该数据块打开时,说明正在对该数据块进行写入操作,即存在正在写入到该数据块中的数据;而当该数据块关闭时,说明未对该数据块进行写入操作,即不存在正在写入到该数据块中的数据。
[0110] 进而,在双副本存储模式下,对于一对主数据块和备份数据块而言,当对该主数据块进行操作时,由于网络故障、设备故障等原因,该备份数据块可以未执行相应的一致性操作,从而,导致该主数据块和该备份数据块中的数据不一致,这样,可以认为该主数据块和该备份数据块之间存在异步操作,此时,可以对该主数据块添加异步任务标识,以表示该主数据块和备份数据块之间存在异步任务,直至该备份数据块执行了上述相应的一致性操作,使得该主数据块和该备份数据块中的数据恢复一致后,去除该主数据块上所添加的异步任务标识,以表示该主数据块和备份数据块之间不存在异步任务。
[0111] 这样,存储节点便可以在自身所存在的多个数据块中,确定处于关闭状态且不存在异步任务的各个主数据块,作为各个目标主数据块。
[0112] 也就是说,存储节点可以确定自身所存在的多个数据块中,未进行写入操作且与备份数据块之间不存在异步任务的各个主数据块,得到各个目标主数据块。
[0113] 其中,存储节点可以通过多种方式执行上述步骤S101,对此,本发明实施例不做具体限定。为了行文清晰,后续将会对上述步骤S101的具体实现方式进行举例说明。
[0114] S102:按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;
[0115] 其中,预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;
[0116] 对于每个主数据块而言,该主数据块的备份数据块与该数据块位于不同的存储节点中,因此,对于上述所确定的各个目标主数据块而言,每个目标主数据块的备份数据块位于上述分布式存储系统的其他存储节点中。其中,不同的目标数块的备份数据块可以位于相同的存储节点中,也可以位于不同的存储节点中。
[0117] 这样,便可以按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组,以使得属于同一组的目标主数据块的备份数据块位于同一存储节点。
[0118] 其中,在一些情况下,由于分布式存储系统中可以存储多种类型的数据,例如,图像数据、视频数据和文本数据等。因此,为了实现对同一类型的数据的统一管理,以提高分布式存储系统的数据管理效率,可以在分布式存储系统的各个存储节点中构建虚拟节点。
[0119] 其中,每个存储节点中可以构建多个虚拟节点,而每个虚拟节点中可以包括多个数据块。也就是说,可以将每个存储节点中的各个数据块分配给在该存储节点中构建的各个虚拟节点。
[0120] 进而,分别位于两个不同存储节点中的两个虚拟节点可以构成一个虚拟组,则该两个不同的存储节点中分别属于该两个存储节点的各个数据块属于同一个虚拟组。
[0121] 例如,存储节点A中的虚拟节点a包括数据块1、2和3,存储节点B中的虚拟节点b包括数据块4、5和6,那么,当虚拟节点a和虚拟节点b构成一个虚拟组C时,那么,数据块1、2和3和数据块4、5和6便属于该虚拟组C。
[0122] 基于此,可选的,一种具体实现方式中,上述预设分组原则还包括:属于同一组的各个目标主数据块的备份数据块属于同一虚拟组。
[0123] 这样,在本具体实现方式中,所得到的每个主数据块组中的各个目标主数据块的备份数据块位于同一存储节点,且属于同一虚拟组。
[0124] S103:针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;
[0125] 在得到各个主数据块组后,针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中。进而,在该主数据块组中的每一目标主数据块中的全部数据片段写入完成后,便可以释放该目标主数据块的存储空间。
[0126] 其中,针对每个主数据块组,可以首先确定该主数据块组中的各目标主数据块的排列顺序,以及用于连续存储该主数据块组中的各个目标主数据块中的数据片段的各个第一数据块的存储顺序。
[0127] 这样,针对该主数据块组中的第一个目标主数据块,从该第一个目标主数据块的起始位置开始,读取该第一个目标主数据块中的第一个数据片段,并从第一个第一数据块的起始位置开始,将该第一个数据片段写入到该第一个第一数据块;接着,读取该第一个目标主数据块中的第二个数据片段,并从第一个第一数据块中上述第一个数据片段所占用的最后一个存储位置的下一个存储位置开始,将该第二个数据片段连续存储到该第一个第一数据块中。依次类推,直至将该第一个目标主数据块中的全部数据片段存储到第一数据块中。
[0128] 其中,若在存储该第一个目标主数据块中的某个数据片段时,第一个第一数据块中剩余的存储空间小于数据片段的大小,那么,可以从该数据片段的第一个数据开始,将该数据片段中数据大小与该第一个第一数据块中剩余的存储空间相同的部分数据存储到该第一个第一数据块,并从第二个第一数据块的起始位置开始,将该数据片段中的剩余数据存储到第二个第一数据块中。这样,对于该第一个目标主数据块中该数据片段的下一数据片段,便可以接着连续存储到该第二个第一数据块。
[0129] 若在存储完该第一个目标主数据块中的全部数据片段后,第一个第一数据块中仍然存在剩余存储空间,那么,便可以从该第二个目标主数据块的起始位置开始,读取该第二个目标主数据块中的第一个数据片段,并从第一个第一数据块中最后数据片段所占用的最后一个存储位置的下一个存储位置开始,将所读取到的数据片段连续写入到第一个第一数据块中。
[0130] 这样,依次类推,针对每个主数据块组,便可以将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中。
[0131] 其中,针对该主数据块组中的每个目标主数据块,当该目标主数据块中的全部数据片段均写入到第一数据块中后,便可以释放该目标主数据块的存储空间。
[0132] 这样,由于是在每个目标主数据块中的全部数据片段整理完成后,才释放该目标主数据块的存储空间的,因此,可以保证在对该目标主数据块中的数据片段进行整理的过程中,执行基于该目标主数据块中的各个数据片段的业务的设备仍然可以从该目标主数据块中读取所需的数据片段,从而,可以保证基于该目标主数据块中的各个数据片段的业务的正常运行。
[0133] S104:针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放备份数据的原始存储空间;
[0134] 其中,目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。
[0135] 由于每个主数据块具有备份数据块,一对主数据块与备份数据块之间具有一致性,即其分别所存储的数据是相同,并且,存储的每个数据在各自存储空间中所占用的存储位置也是相同的。因此,针对每个目标主数据块,在将该目标主数据块中的数据存储到其他数据块中时,需要同步对该数据的备份数据进行一致性操作,以保证存储到其他数据块中的数据与其备份数据之间的一致性。
[0136] 进一步的,由于属于同一主数据块组的目标主数据块的备份数据块位于同一存储节点,因此,针对每一主数据块组,可以指示该主数据块组对应的目标存储节点确定各个第二数据块,其中,各个第二数据块用于连续存储该主数据块组中的各个目标主数据块中的数据片段的备份数据,并且,针对每个主数据块组,所确定的第一数据块的数量与第二数据块的数量相同,且每个第一数据块的存储容量与每个第二数据块的存储容量也相同。
[0137] 这样,每当将属于该主数据块组的任一数据片段写入到第一数据块中后,便可以指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,并且,指示该目标存储节点在完成对备份数据的写入后,释放该备份数据的原始存储空间。其中,所谓该备份数据的原始存储空间是该备份数据在上述数据片段所在的目标主数据块的备份数据块中的存储空间。
[0138] 其中,针对每个主数据块组,在指示该主数据块组对应的目标存储节点确定各个第二数据块后,该目标存储节点可以确定各个第二数据块的存储顺序。
[0139] 这样,当主数据块组中的第一个目标主数据块中的第一个数据片段被存储到第一个第一数据块时,便可以指示该目标存储节点存储该第一个数据片段的备份数据。这样,目标存储节点便可以从第一个第二数据块的起始位置开始,将该第一个数据片段的备份数据存储到第一个第二数据块中。
[0140] 接着,当主数据块组中的第一个目标主数据块中的第一个数据片段被存储到第一个第一数据块时,便可以指示该目标存储节点存储该第二个数据片段的备份数据。这样,目标存储节点便可以从第一个第二数据块中上述第一个数据片段的备份数据所占用的最后一个存储位置的下一个存储位置开始,将该第二个数据片段的备份数据连续存储到该第一个第一数据块中。依次类推,直至将该第一个目标主数据块中的全部数据片段的备份数据存储到第二数据块中。
[0141] 其中,若第一个目标主数据块中的某个数据片段被分开存储到第一个第一数据块和第二个第一数据块时,则该数据片段的备份数据也被分开存储到第一个第二数据块和第二个第二数据块,并且,存储到第一个第二数据块和第二个第二数据块的部分备份数据分别为存储到第一个第一数据块和第二个第一数据块的部分数据片段的备份数据。
[0142] 这样,依次类推,针对每个主数据块组,便可以在将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中的过程中,将各个数据片段的备份数据连续写到第二数据块中,从而,各个第二数据块便可以成为各个第一数据块的备份数据块,二者之间具有一致性。
[0143] 如图2所示,为存储节点中每个数据块的存储结构示意图,可见,在每个数据块中存储有各个数据片段的索引信息。那么,当将目标主数据块中的各个数据片段存储到第一数据块中时,则该数据片段的索引信息发生更新,并且,当释放各个目标主数据块的存储空间时,该目标主数据块中所存储的索引信息也会随之删除,因此,为了实现对所存储数据的各种操作,需要在第一数据块中存储有各个数据片段的更新后的索引信息。
[0144] 基于此,可选的,一种具体实现方式中,上述步骤S103中,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,即可以包括如下步骤1031‑1032:
[0145] 步骤1031:针对该主数据块组中的目标主数据块所存储的每一数据片段,将该数据片段连续写入到第一数据块中,并将更新后的该数据片段的索引信息写入到所述第一数据块中。
[0146] 相应的,在本具体实现方式中,上述步骤S104中,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,便可以包括如下步骤1032:
[0147] 步骤1032:指示该目标主数据块组对应的目标存储节点将该数据片段的备份数据写入到第二数据块中,并将更新后的所述备份数据的索引信息写入到所述第二数据块中。
[0148] 在本具体实现方式,针对每个主数据块组,在将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块时,还可以进一步将更新后的该数据片段的索引信息写入到第一数据块中。其中,每个数据片段和更新后的该数据片段的索引信息被写入到同一第一数据块中。
[0149] 进而,针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,在指示该目标主数据块组对应的目标存储节点将该数据片段的备份数据写入到第二数据块中时,可以进一步指示该目标存储节点将更新后的备份数据的索引信息写入到第二数据块中。其中,每个数据片段的备份数据和更新后的该备份数据的索引信息被写入到同一第二数据块中。
[0150] 以上可见,基于此,应用本发明实施例提供的方案,对于存储介质中所存在的目标主数据块,可以将该各个目标主数据块中的数据片段连续写入到第一数据块中,从而,释放各个目标主数据块的存储空间。这样,便可以将分散存储在多个数据块中的数据集中存储到数量较少的数据块中,并且,该数量较少的数据块中不存在空洞。从而,对于存在空洞的各个目标主数据块而言,该各个目标主数据块中的空洞可以随着该各个数块中的存储空间的释放而能够得以复用,而对于用于存储各个目标主数据块中的数据的第一数据块而言,由于各个第一数据块中的数据片段是连续存储的,因此,各个第一数据块中不存在不能复用的空洞,各个第一数据块中的剩余存储空间可以继续使用。这样,便可以对各个数据块中的碎片数据进行整理,从而,减少各个数据块中由于空洞存在所造成的不能复用的存储空间的浪费,进而,提高数据块的有效数据空间占比,以提高存储节点的空间利用率。
[0151] 其中,可选的,一种具体实现方式中,如图3所示,上述本发明实施例提供的一种数据整理方法还可以包括如下步骤:
[0152] S105:针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块;
[0153] 其中,该主数据块组对应数据为:该主数据块组中各个目标主数据块所存储数据块,每个主数据块组对应的数据量为:该主数据块组中各个目标主数据块所存储数据片段的数据量总和,目标存储容量为:存储节点中的数据块的存储容量。
[0154] 在本具体实现方式中,在得到每个主数据块组后,还需要进一步确定用于连续存储该主数据块组对应数据的第一数据块。
[0155] 针对每个主数据块组,可以首先确定该主数据块组中各个目标主数据块所存储数据片段的数据量总和作为该主数据块组对应的数据量,以及存储节点中的数据块的存储容量,作为目标存储容量,从而,便可以根据该主数据块组对应的数据量和目标存储容量,确定连续存储该主数据块组对应数据所需的数据块的数量,从而,便可以申请所计算得到的数量个的空的数据块作为用于连续存储该主数据块组对应数据的第一数据块。
[0156] 其中,针对每个主数据块组,可以首先计算该主数据块组对应的数据量和目标存储容量的比值,进而,对该比值向上取整,则所得到的正整数即为连续存储该主数据块组对应数据所需的数据块的数量。
[0157] 可选的,一种具体实现方式中,在上述图3所示的具体实现方式的基础上,如图4所示,本发明实施例提供的一种数据整理方法,还可以包括如下步骤:
[0158] S106:针对每个主数据块组,指示该主数据块对应的目标存储节点,确定用于存储该主数据块组对应备份数据的第二数据块;
[0159] 其中,该主数据块组对应备份数据为:该数据块组中各个目标主数据块所存储数据片段的备份数据;该主数据块组对应的目标存储节点所确定的第二数据块的数量,与用于连续存储该主数据块组对应数据的第一数据块的数量相同。
[0160] 在本具体实现方式中,在针对每个主数据块组,确定用于连续存储该主数据块组对应数据的第一数据块后,便可以指示该主数据块对应的目标存储节点,确定用于存储该主数据块组对应备份数据的第二数据块。
[0161] 其中,针对每个主数据块组,由于用于存储该主数据块组对应备份数据的第二数据块可以成为用于连续存储该主数据块组对应数据的第一数据块的备份数据块,因此,针对每个主数据块组,所确定的用于连续存储该主数据块组对应数据的第一数据块的数量,与用于存储该主数据块组对应备份数据的第二数据块的数量相同。
[0162] 可选的,一种具体实现方式中,针对所存在的每个数据块,存储节点可以执行如下步骤11‑15:
[0163] 步骤11:判断该数据块是否为主数据块,如果是,执行步骤12,否则,执行步骤13;
[0164] 步骤12:判断该数据块是否处于关闭状态,如果是,执行步骤14,否则,执行步骤13;
[0165] 步骤13:确定该数据块的下一数据块,并返回执行步骤11;
[0166] 步骤14:判断该数据块是否存在异步任务,如果是,执行步骤13,否则,执行步骤15;
[0167] 步骤15:确定该数据块为目标主数据块。
[0168] 在本具体实现方式中,存储介质可以遍历所存在的每一数据块,并在遍历到每一数据块时,针对该数据块执行上述各个步骤,从而,在遍历完最后一个数据块时,存储介质便可以得到所存在的各个数据块中的目标主数据块。
[0169] 需要强调的是,当所确定的各个目标主数据块为:处于关闭状态且不存在异步任务的主数据块时,则针对所存在的每个数据块,只要该数据块满足:为主数据块、处于关闭状态且不存异步任务三个条件时,该数据块便可以被确定为目标主数据块,因此,在判断所存在的每个数据块是否为目标主数据块时,本发明实施例不对上述三个条件的判断顺序进行限定。
[0170] 例如,如上述具体实现方式所示,上述三个条件的判断顺序可以为:先判断是否为主数据块,再判断是否处于关闭状态,最后判断是否存在异步任务;那么,在其他的具体实现方式中,可以先判断是否处于关闭状态,再判断是否为主数据块,最后判断是否存在异步任务;或者,可以先判断是否为主数据块,再判断是否存在异步任务,最后判断是否处于关闭状态。这都是合理的。
[0171] 可选的,另一种具体实现方式中,上述步骤S101,确定各个目标主数据块,可以包括如下步骤1011‑1012:
[0172] 步骤1011:确定存储节点中,处于关闭状态且不存在异步任务的各个主数据块;
[0173] 在本具体方式中,存储节点可以首先在自身所存在的各个数据块中,确定处于关闭状态且不存在异步任务的各个主数据块。
[0174] 其中,存储节点可以通过多种方式执行上述步骤1011,对此,本发明实施例不做具体限定。例如,可以利用上述步骤11‑15所示的具体实现方式,对所存在的每个数据块进行判断,得到存储节点中,处于关闭状态且不存在异步任务的各个主数据块。
[0175] 其中,在本具体实现方式中,利用上述步骤11‑15的具体实现方式所确定的处于关闭状态且不存在异步任务的各个主数据块,可能不是最终所需要的目标主数据块,而需要通过后续的步骤1012,从所确定的处于关闭状态且不存在异步任务的各个主数据块进行一步选取得到各个目标主数据块。
[0176] 步骤1012:基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块。
[0177] 进而,便可以基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块。
[0178] 其中,每个主数据块所存储数据片段的数据存储信息可以包括:该主数据块的有效数据空间占比和是否存在空洞的确定结果。
[0179] 这样,针对所确定的每个处于关闭状态且不存在异步任务的主数据块,便可以基于该主数据块的有效数据空间占比和/或是否存在空洞的确定结果,确定该主数据块是否为目标主数据块。
[0180] 当然,每个主数据块所存储数据片段的数据存储信息还可以包括其他信息,那么,针对所确定的每个处于关闭状态且不存在异步任务的主数据块,便可以基于上述其他信息,确定该主数据块是否为目标主数据块。这都是合理的。
[0181] 基于此,可选的,一种具体实现方式中,上述步骤1012可以包括如下步骤21:
[0182] 步骤21:从所确定的各个主数据块中,确定符合预定条件的目标主数据块;
[0183] 其中,预定条件包括:有效数据空间占比小于第一指定占比阈值,和/或存在空洞。
[0184] 其中,在本具体实现方式中,可以将所确定的各个主数据块中,有效数据空间占比小于第一指定占比阈值的各个主数据块,确定为各个目标主数据块。
[0185] 在本具体实现方式中,也可以将所确定的各个主数据块中,存在空洞的各个主数据块,确定为各个目标主数据块。
[0186] 其中,每个主数据块是否存在空洞是:基于所记录的该主数据块中各个数据片段在该主数据块中的存储地址所确定的。若所记录的该主数据块中各个数据片段在该主数据块中的存储地址是连续的,则可以确定该主数据块中不存在空洞,否则,便可以确定该主数据块中存在空洞。
[0187] 这样,对于从所确定的各个主数据块中,数据片段是连续存储的主数据块来说,可以不对这些主数据块进行数据整理,从而,可以减少待整理的目标主数据块的数量,进而,可以节省数据整理所耗费的时间和资源,提高数据整理的效率。
[0188] 在本具体实现方式中,还可以将所确定的各个主数据块中,有效数据空间占比小于第一指定占比阈值,且存在空洞的各个主数据块,确定为各个目标主数据块。
[0189] 这样,从有效数据空间占比和是否存在空洞两个方面,在所确定的各个主数据块中选取各个目标主数据块,可以进一步减少待整理的目标主数据块的数量,进而,可以节省数据整理所耗费的时间和资源,提高数据整理的效率。
[0190] 可选的,一种具体实现方式中,上述步骤S102:按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组,可以包括如下步骤1021‑1022:
[0191] 步骤1021:按照预设分组原则,对各个目标主数据块进行分组,得到至少一个候选组;
[0192] 步骤1022:针对每个候选组,若该候选组中各个目标主数据块的数量大于第一预设数值,和/或,该候选组中各个目标主数据块的有效数据空间占比总和大于第一预设占比和值,则将该候选组确定为主数据块组。
[0193] 在本具体实现方式中,在按照预设分组原则,对各个目标主数据块进行分组,所得到的至少一个候选组中,可能存在只包括一个目标主数据块的候选组,也可能存在所包括的各个目标主数据块的有效数据空间占比总和较小的候选组,因此,考虑到数据整理的效率,可以对所得到的各个候选组进行进一步筛选,得到各个主数据块组,从而,减少待整理的目标主数据块的数量,进而,可以节省数据整理所耗费的时间和资源,提高数据整理的效率。
[0194] 其中,针对每个候选组,可以判断该候选组中各个目标主数据块的数量是否大于第一预设数值,如果大于,则将该候选组确定为主数据块组;
[0195] 针对每个候选组,也可以判断该候选组中各个目标主数据块的有效数据空间占比总和是否大于第一预设占比和值,如果大于,则将该候选组确定为主数据块组;
[0196] 针对每个候选组,还可以判断该候选组中各个目标主数据块的数量是否大于第一预设数值,且该候选组中各个目标主数据块的有效数据空间占比总和是否大于第一预设占比和值,如果均大于,则将该候选组确定为主数据块组。
[0197] 其中,需要强调的是,在本具体实现方式中,如果上述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;则所得到的每个候选组中的目标主数据块为:备份数据块位于同一存储节点的目标主数据块,相应的,最终所确定的每个主数据块中的目标主数据块为:备份数据块位于同一存储节点的目标主数据块。
[0198] 如果上述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点,以及属于同一组的各个目标主数据块的备份数据块属于同一虚拟组;则所得到的每个候选组中的目标主数据块为:备份数据块位于同一存储节点,且备份数据块属于同一虚拟组的目标主数据块,相应的,最终所确定的每个主数据块中的目标主数据块为:备份数据块位于同一存储节点,且备份数据块属于同一虚拟组的目标主数据块。
[0199] 在很多情况下,有些数据可以因为不需要进行备份,而进行单副本存储,从而,存储节点中可以存在单副本数据块;其中,所谓单副本数据块即为:所存储数据不存在备份数据的数据块。进而,由于某些单副本数据块中也可能存在空洞,因此,存储节点在进行数据整理时,可以同时对单副本数据块中所存储的数据片段进行整理。
[0200] 基于此,可选的,一种具体实现方式中,如图5所示,本发明实施例提供的一种数据整理方法,还可以包括如下步骤:
[0201] S107:确定各个目标单副本数据块;其中,每个目标单副本数据块为:处于关闭状态的单副本数据块;
[0202] 由于单副本数据块不存在备份数据块,因此,对于单副本数据块而言,不存异步任务,从而,在本具体实现方式中,存储节点便可以在自身所存在的多个数据块中,确定处于关闭状态的各个单副本数据块,作为各个目标单副本数据块。
[0203] 其中,在本具体实现方式中,存储节点可以同时确定出处于关闭状态且不存在异步任务的各个主数据块和处于关闭状态的各个单副本数据块;也可以先确定出处于关闭状态且不存在异步任务的各个主数据块,再确定出处于关闭状态的各个单副本数据块;还可以先确定出处于关闭状态的各个单副本数据块,再确定出处于关闭状态且不存在异步任务的各个主数据块。这都是合理的。
[0204] 并且,在本具体实现方式中,存储节点可以通过多种方式确定处于关闭状态且不存在异步任务的各个主数据块和处于关闭状态的各个单副本数据块,对此,本发明实施例步骤具体限定。
[0205] 例如,作为本具体实现方式的一种实施例,针对所存在的每个数据块,存储节点可以执行如下各个步骤31‑36:
[0206] 步骤31:判断该数据块是否处于关闭状态;如果是,执行步骤32;否则,执行步骤33;
[0207] 步骤32:确定该数据块的类型;如果是主数据块,执行步骤34,如果是单副本数据块,执行步骤35;如果是备份数据块,执行步骤33;
[0208] 步骤33:确定该数据块的下一数据块,并返回执行上述步骤31;
[0209] 步骤34:判断该数据块是否存在异步任务;如果否,执行步骤36,否则,执行步骤33;
[0210] 步骤35:确定该数据块为目标单副本数据块;
[0211] 步骤36:确定该数据块为目标主数据块。
[0212] 在本实施例中,存储介质可以遍历所存在的每一数据块,并在遍历到每一数据块时,针对该数据块执行上述各个步骤,从而,在遍历完最后一个数据块时,存储介质便可以得到所存在的各个数据块中,处于关闭状态且不存在异步任务的各个主数据块和处于关闭状态的各个单副本数据块。
[0213] S108:针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间。
[0214] 在确定出各个目标单副本数据块后,可以首先确定各个目标单副本数据块的排列顺序,以及用于连续存储各个目标单副本数据块中的数据片段的各个第三数据块的存储顺序,进而,便可以按照上述排列顺序和存储顺序,针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中。进而,在该目标单副本数据块中的全部数据片段写入完成后,便可以释放该目标主数据块的存储空间。
[0215] 其中,可选的,可以根据所确定的各个目标单副本数据块所存储的数据片段的数据量总和与目标存储容量的比值,进而,对该比值向上取整,所得到的正整数即为连续存储各个目标单副本数据块中的数据片段所需的数据块的数量,从而,申请所确定的数量个空的数据块,作为第三数据块。
[0216] 其中,上述步骤S108的具体实现方式与上述步骤S103的具体实现方式类似,在此不再赘述。
[0217] 其中,由于每个存储节点中可以构建多个虚拟节点,而每个虚拟节点中可以包括多个数据块。因此,上述所确定的各个目标单副本数据块可能属于不同的虚拟节点,从而,由于不同的虚拟节点属于不同的虚拟组,因此,上述所确定的各个目标单副本数据块可能属于不同的虚拟组。
[0218] 基于此,可选的,一种具体实现方式中,如图6所示,本发明实施例提供的一种数据整理方法可以还包括如下步骤:
[0219] S109:将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个单副本数据块组。
[0220] 相应的,上述步骤S108,针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间,便可以包括如下步骤S108A:
[0221] S108A:针对每个单副本数据块组,将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间。
[0222] 在本具体实现方式中,对于确定出各个目标单副本数据块,便可以将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个单副本数据块组。
[0223] 其中,可选的,一种具体实现方式中,上述步骤S109,可以包括如下步骤1091‑1092:
[0224] 步骤1091:将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个备选组;
[0225] 步骤1092:针对每个备选组,若该备选组中各个目标单副本数据块的数量大于第二预设数值,和/或,该备选组中各个目标单副本数据块的有效数据空间占比总和大于第二预设占比和值,则将该备选组确定为单副本数据块组。
[0226] 在本具体实现方式中,在按照各个目标单副本数据块所属的虚拟组,对各个目标单副本数据块进行分组,所得到的至少一个备选组中,可能存在只包括一个目标单副本数据块的备选组,也可能存在所包括的各个目标单副本数据块的有效数据空间占比总和较小的备选组,因此,考虑到数据整理的效率,可以对所得到的各个备选组进行进一步筛选,得到各个单副本数据块组,从而,减少待整理的目标单副本数据块组的数量,进而,可以节省数据整理所耗费的时间和资源,提高数据整理的效率。
[0227] 其中,针对每个备选组,可以判断该备选组中各个目标单副本数据块组的数量是否大于第二预设数值,如果大于,则将该备选组确定为单副本数据块组组;
[0228] 针对每个备选组,也可以判断该备选组中各个目标单副本数据块组的有效数据空间占比总和是否大于第二预设占比和值,如果大于,则将该备选组确定为单副本数据块组组;
[0229] 针对每个备选组,还可以判断该备选组中各个目标单副本数据块组的数量是否大于第二预设数值,且该备选组中各个目标单副本数据块组的有效数据空间占比总和是否大于第二预设占比和值,如果均大于,则将该备选组确定为单副本数据块组。
[0230] 进而,针对每个单副本数据块组,可以首先确定该主数据块组中的各目标单副本数据块的排列顺序,以及用于连续存储该单副本数据块组中的各个目标单副本数据块的数据片段的各个第三数据块的存储顺序。进而,便可以按照上述排列顺序和存储顺序,将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中。
[0231] 其中,可选的,针对每个单副本数据块组,可以根据该单副本数据块组中各个目标单副本数据块所存储数据片段的数据量总和与目标存储容量的比值,进而,对该比值向上取整,则所得到的正整数即为连续存储该单副本数据块组对应数据所需的数据块的数量,从而,便可以申请所计算得到的数量个的空的数据块作为第三数据块。
[0232] 进而,由于在每个目标单副本数据块中存储有各个数据片段的索引信息。那么,当将各个目标单副本数据块中的各个数据片段存储到第三数据块中时,则该数据片段的索引信息发生更新,并且,当释放各个目标单副本数据块的存储空间时,该目标单副本数据块中所存储的索引信息也会随之删除,因此,为了实现对所存储数据的各种操作,需要在第三数据块中存储有各个数据片段的更新后的索引信息。
[0233] 基于此,可选的,一种具体实现方式中,上述步骤S108A便可以包括如下步骤41:
[0234] 步骤41:针对该单副本数据块组中的目标单副本数据块所存储的每一数据片段,将该数据连续写入到该单副本数据块组对应的第三数据块中,并将更新后的该数据的索引信息写入到该单副本数据块组对应的第三数据块中
[0235] 在本具体实现方式,针对每个单副本数据块组,在将该单副本数据块组中的目标单副本数据块所存储的各个数据片段连续写入到第三数据块时,还可以进一步将更新后的该数据片段的索引信息写入到第三数据块中。其中,每个数据片段和更新后的该数据片段的索引信息被写入到同一第三数据块中。
[0236] 可选的,一种具体实现方式中,上述步骤S107,确定各个目标单副本数据块,可以包括如下步骤1071‑1072:
[0237] 步骤1071:确定存储节点中,处于关闭状态的各个单副本数据块;
[0238] 步骤1072:基于所确定的各个单副本数据块所存储数据片段的数据存储信息,从所确定的各个单副本数据块中确定各个目标单副本数据块。
[0239] 在本具体方式中,存储节点可以首先在自身所存在的各个数据块中,确定存储节点中,处于关闭状态的各个单副本数据块。
[0240] 其中,存储节点可以通过多种方式执行上述步骤1071,对此,本发明实施例不做具体限定。
[0241] 例如,可以利用上述步骤31‑36所示的具体实现方式,对所存在的每个数据块进行判断,得到存储节点中,处于关闭状态的各个单副本数据块。
[0242] 其中,在本具体实现方式中,利用上述步骤31‑36所示的具体实现方式所确定的处于关闭状态的各个单副本数据块,可能不是最终所需要的目标单副本数据块,而需要通过上述步骤1072,基于所确定的各个单副本数据块所存储数据片段的数据存储信息,从所确定的处于关闭状态的各个单副本数据块进行一步选取得到各个目标单副本数据块。
[0243] 其中,每个单副本数据块所存储数据片段的数据存储信息可以包括:该单副本数据块的有效数据空间占比和是否存在空洞的确定结果。
[0244] 这样,针对所确定的每个处于关闭状态的单副本数据块,便可以基于该单副本数据块的有效数据空间占比和/或是否存在空洞的确定结果,确定该单副本数据块是否为目标单副本数据块。
[0245] 当然,每个单副本数据块所存储数据片段的数据存储信息还可以包括其他信息,那么,针对所确定的每个处于关闭状态的单副本数据块,便可以基于上述其他信息,确定该单副本数据块是否为目标单副本数据块。这都是合理的。
[0246] 基于此,可选的,一种具体实现方式中,上述步骤1072可以包括如下步骤51:
[0247] 步骤51:从所确定的各个单副本数据块中,确定符合预定条件的目标单副本数据块;
[0248] 其中,预定条件包括:有效数据空间占比小于第一指定占比阈值,和/或存在空洞。
[0249] 其中,在本具体实现方式中,可以将所确定的各个单副本数据块中,有效数据空间占比小于第一指定占比阈值的各个单副本数据块,确定为各个目标单副本数据块。
[0250] 在本具体实现方式中,也可以将所确定的各个单副本数据块中,存在空洞的各个单副本数据块,确定为各个目标单副本数据块。
[0251] 其中,每个单副本数据块是否存在空洞是:基于所记录的该单副本数据块中各个数据片段在该单副本数据块中的存储地址所确定的。若所记录的该单副本数据块中各个数据片段在该单副本数据块中的存储地址是连续的,则可以确定该主单副本数据块中不存在空洞,否则,便可以确定该单副本数据块中存在空洞。
[0252] 这样,对于从所确定的各个单副本数据块中,数据片段是连续存储的单副本数据块来说,可以不对这些单副本数据块进行数据整理,从而,可以减少待整理的目标单副本数据块的数量,进而,可以节省数据整理所耗费的时间和资源,提高数据整理的效率。
[0253] 在本具体实现方式中,还可以将所确定的各个单副本数据块中,有效数据空间占比小于第一指定占比阈值,且存在空洞的各个单副本数据块,确定为各个目标单副本数据块。
[0254] 这样,从有效数据空间占比和是否存在空洞两个方面,在所确定的各个单副本数据块中选取各个目标单副本数据块,可以进一步减少待整理的目标单副本数据块的数量,进而,可以节省数据整理所耗费的时间和资源,提高数据整理的效率。
[0255] 相应于上述本发明实施例提供的一种数据整理方法,本发明实施例还提供了一种数据整理装置。其中,该装置应用于分布式存储系统中的存储节点。
[0256] 图7为本发明实施例提供的一种数据整理装置的结构示意图,如图7所示,该装置可以包括如下模块:
[0257] 第一数据块确定模块710,用于确定各个目标主数据块;其中,每个目标主数据块为:处于关闭状态且不存在异步任务的主数据块;
[0258] 第一数据块分组模块720,用于按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组;其中,所述预设分组原则包括:属于同一组的目标主数据块的备份数据块位于同一存储节点;
[0259] 第一数据块迁移模块730,用于针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,在每一目标主数据块中的全部数据片段写入完成后,释放该目标主数据块的存储空间;
[0260] 备份数据迁移模块740,用于针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放所述备份数据的原始存储空间;其中,所述目标存储节点为:该主数据块组的各个目标主数据块的备份数据块所在的存储节点。
[0261] 以上可见,应用本发明实施例提供的方案,分布式存储系统中的存储节点可以首先确定各个处于关闭状态且不存在异步任务的主数据块,作为目标主数据块。其中,由于主数据块和该主数据块的备份数据块位于不同的存储节点中,而所确定的各个目标主数据块的备份数据块可以位于不同的存储节点中,因此,在确定出各个目标主数据块后,便可以按照预设分组原则,对各个目标主数据块进行分组,得到至少一个主数据块组,其中,属于同一组的目标主数据块的备份数据块位于同一存储节点。接着,针对每个主数据块组,便可以将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中,进而,在每一目标主数据块中的全部数据片段写入完成后,便可以释放该目标主数据块的存储空间。而由于每个主数据块存在备份数据块,当对主数据块中的数据进行迁移,存储到新的数据块中时,为了保证主数据块和备份数据块之间的一致性,需要同时对该主数据块的备份数据块中的数据进行迁移,因此,针对每个主数据块组,每当完成属于该主数据块组的任一数据片段的写入后,指示该目标主数据块组对应的目标存储节点在第二数据块中连续写入该数据片段的备份数据,以及释放备份数据的原始存储空间。
[0262] 基于此,应用本发明实施例提供的方案,对于存储介质中所存在的目标主数据块,可以将该各个目标主数据块中的数据片段连续写入到第一数据块中,从而,释放各个目标主数据块的存储空间。这样,便可以将分散存储在多个数据块中的数据集中存储到数量较少的数据块中,并且,该数量较少的数据块中不存在空洞。从而,对于存在空洞的各个目标主数据块而言,该各个目标主数据块中的空洞可以随着该各个数块中的存储空间的释放而能够得以复用,而对于用于存储各个目标主数据块中的数据的第一数据块而言,由于各个第一数据块中的数据片段是连续存储的,因此,各个第一数据块中不存在不能复用的空洞,各个第一数据块中的剩余存储空间可以继续使用。这样,便可以对各个数据块中的碎片数据进行整理,从而,减少各个数据块中由于空洞存在所造成的不能复用的存储空间的浪费,进而,提高数据块的有效数据空间占比,以提高存储节点的空间利用率。
[0263] 可选的,一种具体实现方式中,所述第一数据块迁移模块730具体用于:
[0264] 针对该主数据块组中的目标主数据块所存储的每一数据片段,将该数据片段连续写入到第一数据块中,并将更新后的该数据片段的索引信息写入到所述第一数据块中;
[0265] 所述备份数据迁移模块740,具体用于指示该目标主数据块组对应的目标存储节点将该数据片段的备份数据写入到第二数据块中,并将更新后的所述备份数据的索引信息写入到所述第二数据块中。
[0266] 可选的,一种具体实现方式中,所述装置还包括:
[0267] 数据块申请模块,用于在所述针对每个主数据块组,将该主数据块组中的目标主数据块所存储的各个数据片段连续写入到第一数据块中之前,针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块;
[0268] 其中,该主数据块组对应数据为:该主数据块组中各个目标主数据块所存储数据块,每个主数据块组对应的数据量为:该主数据块组中各个目标主数据块所存储数据片段的数据量总和,所述目标存储容量为:所述存储节点中的数据块的存储容量。
[0269] 可选的,一种具体实现方式中,所述装置还包括:
[0270] 数据块指示模块,用于在所述针对每个主数据块组,基于该主数据块组对应的数据量和目标存储容量,确定用于连续存储该主数据块组对应数据的第一数据块之后,针对每个主数据块组,指示该主数据块对应的目标存储节点,确定用于存储该主数据块组对应备份数据的第二数据块;
[0271] 其中,该主数据块组对应备份数据为:该数据块组中各个目标主数据块所存储数据片段的备份数据;该主数据块组对应的目标存储节点所确定的第二数据块的数量,与用于连续存储该主数据块组对应数据的第一数据块的数量相同。
[0272] 可选的,一种具体实现方式中,所述第一数据块确定模块710包括:
[0273] 第一数据块确定子模块,用于确定所述存储节点中,处于关闭状态且不存在异步任务的各个主数据块;
[0274] 第二数据块确定子模块,用于基于所确定的各个主数据块所存储数据片段的数据存储信息,从所确定的各个主数据块中确定各个目标主数据块。
[0275] 可选的,一种具体实现方式中,所述第二数据块确定子模块具体用于:
[0276] 从所确定的各个主数据块中,确定符合预定条件的目标主数据块;
[0277] 其中,所述预定条件包括:有效数据空间占比小于第一指定占比阈值,和/或存在空洞。
[0278] 可选的,一种具体实现方式中,第一数据块分组模块720具体用于:
[0279] 按照预设分组原则,对各个目标主数据块进行分组,得到至少一个候选组;
[0280] 针对每个候选组,若该候选组中各个目标主数据块的数量大于第一预设数值,和/或,该候选组中各个目标主数据块的有效数据空间占比总和大于第一预设占比和值,则将该候选组确定为主数据块组。
[0281] 可选的,一种具体实现方式中,所述预设分组原则还包括:属于同一组的各个目标主数据块的备份数据块属于同一虚拟组。
[0282] 可选的,一种具体实现方式中,所述装置还包括:
[0283] 第二数据块确定模块,用于确定各个目标单副本数据块;其中,每个目标单副本数据块为:处于关闭状态的单副本数据块;
[0284] 第二数据块迁移模块,用于针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中,在该目标单副本数据块中的全部数据片段写入完成后,释放该目标单副本数据块的存储空间。
[0285] 可选的,一种具体实现方式中,所述装置还包括:
[0286] 第二数据块分组模块,用于在所述针对每个目标单副本数据块,将该目标单副本数据块所存储的各个数据片段连续写入到第三数据块中的步骤之前,将各个目标单副本数据块中,属于同一虚拟组的目标单副本数据块划分为一组,得到至少一个单副本数据块组;
[0287] 所述第二数据块迁移模块,包括:
[0288] 数据迁移子模块,用于针对每个单副本数据块组,将该单副本数据块组中的目标单副本数据块所存储的各个数据片段,连续写入到该单副本数据块组对应的第三数据块中。
[0289] 可选的,一种具体实现方式中,所述数据迁移子模块,具体用于:
[0290] 针对该单副本数据块组中的目标单副本数据块所存储的每一数据片段,将该数据连续写入到该单副本数据块组对应的第三数据块中,并将更新后的该数据的索引信息写入到该单副本数据块组对应的第三数据块中。
[0291] 相应于上述本发明实施例提供的一种数据整理方法,本发明实施例还提供了一种存储节点,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
[0292] 存储器803,用于存放计算机程序;
[0293] 处理器801,用于执行存储器803上所存放的程序时,实现上述本发明实施例提供的任一数据整理方法的步骤。
[0294] 上述存储节点提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry  Standard Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0295] 通信接口用于上述存储节点与其他设备之间的通信。
[0296] 存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non‑Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0297] 上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0298] 在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例提供的任一数据整理方法的步骤。
[0299] 在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例提供的任一数据整理方法的步骤。
[0300] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
[0301] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0302] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、存储节点实施例、计算机可读存储介质实施例,以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0303] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。