一种节点容量释放方法、装置及电子设备与流程

文档序号:32390255发布日期:2022-11-30 07:56阅读:53来源:国知局
一种节点容量释放方法、装置及电子设备与流程

1.本技术涉及存储领域,特别涉及一种节点容量释放方法、装置及电子设备。


背景技术:

2.在应用中,为了保障最新数据比如安防监控中的录像数据等的存储,常需要基于循环覆盖机制删掉已存储的最早的数据比如录像数据等,这可简称为节点容量释放。
3.目前的循环覆盖机制是根据用户设置的周期规则,自动对已存储的最早的数据进行删除,释放存储空间,保证最新数据可以正常写入进行存储。周期规则可根据实际需求设置,比如可设置2天为一个周期等。而这种按照固定不变的周期规则释放存储空间,常常无法应对诸如存储节点突发离线而导致得在线可用容量(也即存储空间)无法承担数据写入压力、写入数据突发增多等场景,无法保障最新数据正常存储。


技术实现要素:

4.本技术实施例公开了一种节点容量释放方法、装置及电子设备,以基于动态变化的域容量来触发节点容量释放,保障最新数据正常存储。
5.本技术实施例提供一种节点容量释放方法,所述方法应用于云存储集群中的管理节点,所述云存储集群还包含存储节点,所述云存储集群中的存储节点被划分为至少一个域,每一域对应用于存储数据的至少一个桶bucket;该方法包括:
6.针对每一域,依据该域中在线存储节点的当前剩余容量,确定该域是否为需要释放节点容量的目标域;
7.当确定该域为需要释放节点容量的目标域时,根据所述目标域中在线存储节点的总容量和所述目标域中在线存储节点的当前剩余容量,确定所述目标域中待释放的目标容量;
8.根据所述目标容量、以及所述目标域对应的各bucket的数据占用量,确定各bucket待释放的目标数据量;其中,每一bucket的数据占用量是指该bucket中的数据当前占用的所述目标域中存储节点的存储空间;
9.针对每一bucket,依据该bucket中待释放的目标数据量,通知对应的存储节点按照写入时间从前至后的顺序释放已写入的数据;其中,释放的数据量小于或等于该bucket中待释放的目标数据量。
10.本技术实施例提供一种节点容量释放装置,所述装置应用于云存储集群中的管理节点,所述云存储集群还包含存储节点,所述云存储集群中的存储节点被划分为至少一个域,每一域对应用于存储数据的至少一个桶bucket;该装置包括:
11.确定单元,用于针对每一域,依据该域中在线存储节点的当前剩余容量,确定该域是否为需要释放节点容量的目标域;以及,
12.当确定该域为需要释放节点容量的目标域时,根据所述目标域中在线存储节点的总容量和所述目标域中在线存储节点的当前剩余容量,确定所述目标域中待释放的目标容
量;
13.根据所述目标容量、以及所述目标域对应的各bucket的数据占用量,确定各bucket待释放的目标数据量;其中,每一bucket的数据占用量是指该bucket中的数据占用的所述目标域中存储节点的存储空间;
14.释放单元,用于针对每一bucket,依据该bucket中待释放的目标数据量,通知对应的存储节点按照写入时间从前至后的顺序释放已写入的数据;其中,释放的数据量小于或等于该bucket中待释放的目标数据量。
15.本技术实施例提供一种电子设备,该电子设备包括:处理器和机器可读存储介质;
16.所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
17.所述处理器用于执行机器可执行指令,以实现权利要求1-8任一项所述的方法步骤。
18.由以上技术方案可知,本实施例基于域容量不足比如该域中在线存储节点的当前剩余容量来触发节点容量释放,而非依赖于用户固定设置的周期规则,这能保障即使在诸如存储节点突发离线而导致得在线可用容量(也即存储空间)无法承担数据写入压力、写入数据突发增多等场景下也能正常存储数据;
19.进一步地,在本实施例中,根据目标域对应的各bucket的数据占用量(该bucket中的数据当前占用的所述目标域中存储节点的存储空间)来释放对应存储空间,达到了尽快释放存储空间,均衡各bucket释放数据量的目的。
20.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
21.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
22.图1为本技术实施例提供的方法流程图;
23.图2为本技术实施例提供的步骤102实现流程图;
24.图3为本技术实施例提供的步骤103实现流程图;
25.图4为本技术实施例提供的装置结构图;
26.图5为本技术实施例提供的图4所示装置的硬件结构图。
具体实施方式
27.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
28.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
29.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
30.为了使本领域技术人员更好地理解本技术实施例提供的技术方案,并使本技术实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术实施例中技术方案作进一步详细的说明。
31.参见图1,图1为本技术实施例提供的方法流程图。该方法应用于云存储集群中的管理节点。云存储集群还包含存储节点。
32.其中,管理节点用于管理存储节点,比如保存数据写入至存储节点的写入时间,数据在存储节点的位置等索引信息。
33.在本实施例中,云存储集群内可划分至少一个域,将存储节点对应加入对应的域,并针对每一个域创建对应的桶(bucket),用户写入bucket的数据会存入对应域内的存储节点,实现数据按域隔离。可选地,在本实施例中,当一个域对应一个bucket时,这个bucket可以简称为该域的资源池。
34.在本实施例中,管理节点和存储节点还可用于统计各bucket在本节点的数据占有量,比如,写入数据时,存储节点和管理节点分别执行对bucket容量的递增记录,删除数据时,存储节点和管理节点分别执行对bucket容量的递减记录。
35.如图1所示,该方法包括以下步骤:
36.步骤101,针对每一域,依据该域中在线存储节点的当前剩余容量,确定该域是否为需要释放节点容量的目标域。
37.可以看出,在本步骤101中,其是实时根据域中在线存储节点的当前剩余容量(也即域容量在线剩余)来触发是否针对该域进行节点容量释放,不依赖于传统的周期配置,这样,即使域中有存储节点离线,也不会影响本技术实施例提供的节点容量释放。
38.至于如何根据域中在线存储节点的当前剩余容量(也即域容量在线剩余)来触发是否针对该域进行节点容量释放,其有很多方式,比如,确定该域中在线存储节点的当前剩余容量的总和n1;确定n1在该域中所有在线存储节点的总容量的总和n2中的比例,若该比例小于预设比例阈值,确定该域为需要释放节点容量的目标域,即需要针对该域触发节点容量释放;反之,若该比例大于预设比例阈值,则确定不需要针对该域触发节点容量释放。
39.可以看出,本实施例中,预设比例阈值为确定目标域的依据。在具体实现时,上述预设比例阈值可根据实际需求设置,比如设置为10%等,本实施例并不具体限定。
40.步骤102,当确定该域为需要释放节点容量的目标域时,根据目标域中在线存储节点的总容量和目标域中在线存储节点的当前剩余容量,确定目标域中待释放的目标容量。
41.通过步骤102,最终确定出整个目标域中待释放的总容量,即上述的目标容量。
42.至于如何根据目标域中在线存储节点的总容量和目标域中在线存储节点的当前剩余容量,确定目标域中待释放的目标容量,下文会通过图2举例描述,这里暂不赘述。
43.步骤103,根据目标容量、以及目标域对应的各bucket的数据占用量,确定各bucket待释放的目标数据量;其中,每一bucket的数据占用量是指该bucket中的数据当前
占用的目标域中存储节点的存储空间。
44.作为一个实施例,上述管理节点为所述云存储集群中部署的用于执行节点容量释放的节点,在此前提下,管理节点可可基于已记录的各bucket对象索引表确定各bucket的数据占用量。bucket对象索引表用于记录bucket中的数据当前占用的所述目标域中存储节点的存储空间。
45.作为另一个实施例,管理节点也可为从所述云存储集群中的所有存储节点选择出的用于执行节点容量释放的存储节点,比如选择编号最大的在线存储节点为管理节点等,本实施例并不具体限定。在此前提下,管理节点可通过和各存储节点交互,获知各存储节点被各bucket占用的存储空间,基于各存储节点被各bucket占用的存储空间推导出每一bucket的数据占用量。在本实施例中,通过选择在线存储节点作为管理节点,可以实现高可用下的循环覆盖逻辑(也即节点容量释放方法),保障云存储集群下循环覆盖逻辑也即节点容量释放方法)的健壮性。
46.在获得目标域对应的各bucket的数据占用量之后,即可依据目标容量和各bucket的数据占用量的比例,确定各bucket待释放的目标数据量。
47.作为一个实施例,最终确定出的各bucket待释放的目标数据量的比例为各bucket的数据占用量的比例,各bucket中待释放的目标数据量之和为目标容量。示例的,假若目标域对应bucket a和bucket b,bucket a和bucket b的数据占用量的比例为1:2,则按照比例1:2的方式确定bucket a和bucket b待释放的目标数据量。比如,目标容量为6g,bucket a待释放的目标数据量为2g,bucket b待释放的目标数据量为4g。
48.作为另一个实施例,为避免bucket数据被过多覆盖,本实施例在确定各bucket待释放的目标数据量时,还需要考虑最少数据量保护逻辑,以保证数据量比较少的bucket不进行容量释放。下文通过图3举例描述,这里暂不赘述。
49.步骤104,针对每一bucket,依据该bucket中待释放的目标数据量,通知对应的存储节点按照写入时间从前至后的顺序释放已写入的数据;其中,释放的数据量小于或等于该bucket中待释放的目标数据量。
50.可选地,在本实施例中,可根据各bucket对象索引,通知对应的存储节点按照写入时间从前至后的顺序释放已写入的数据,最终释放点最早数据,释放数据总容量不低于bucket待释放的目标数据容量。
51.至此,完成图1所示的流程。
52.通过图1所示流程可以看出,本实施例基于域容量不足比如该域中在线存储节点的当前剩余容量来触发节点容量释放,而非依赖于用户固定设置的周期规则,这能保障即使在诸如存储节点突发离线而导致得在线可用容量(也即存储空间)无法承担数据写入压力、写入数据突发增多等场景下也能正常存储数据;
53.进一步地,在本实施例中,根据目标域对应的各bucket的数据占用量(该bucket中的数据当前占用的所述目标域中存储节点的存储空间)来释放对应存储空间,达到了尽快释放存储空间,均衡各bucket释放数据量的目的。
54.下面对上述步骤103中如何根据目标域中在线存储节点的总容量和目标域中在线存储节点的当前剩余容量,确定目标域中待释放的目标容量进行描述:
55.参见图2,图2为本技术实施例提供的步骤102实现流程图。如图2所示,该流程可包
括以下步骤:
56.步骤201,依据目标域中所有在线存储节点的总容量的总和n2与预设比例阈值确定目标域对应的剩余容量阈值。
57.在本实施例中,预设比例阈值如上描述,这里不再赘述。
58.可选地,作为一个实施例,本步骤201依据目标域中所有在线存储节点的总容量的总和n2与预设比例阈值确定目标域对应的剩余容量阈值,有很多实现方式,比如,计算目标域中所有在线存储节点的总容量的总和n2与预设比例阈值的乘积,将计算结果确定为上述目标域当前对应的剩余容量阈值,等等,本实施例并不具体限定。
59.步骤202,计算剩余容量阈值与目标域中在线存储节点的当前剩余容量之和n1的差值;将差值确定为目标域中待释放的目标容量。
60.最终通过图2所示流程实现了如何根据目标域中在线存储节点的总容量和目标域中在线存储节点的当前剩余容量,确定目标域中待释放的目标容量。示例性的,假设一实施例中,预设比例阈值为p%,目标域中所有在线存储节点的总容量为t1,目标域中在线存储节点的当前剩余容量为t2,目标域对应的剩余容量阈值为t1*p%,待释放的目标容量为t1*p%-t2。
61.比如,预设比例阈值为10%,目标域中所有在线存储节点的总容量为100gb,目标域中在线存储节点的当前剩余容量为5gb,则可以得出上述剩余容量阈值为100*10%=10gb,待释放的目标容量为10gb-5gb=5gb。
62.至此,完成图2所示流程。
63.下面对图3所示流程进行描述:
64.参见图3,图3为本技术实施例提供的步骤103流程图。如图3所示,该流程可包括以下步骤:
65.步骤301,针对每一bucket,依据该bucket当前的数据占用量确定该bucket是否为满足容量释放条件的目标bucket。
66.作为一个实施例,当bucket当前的数据占用量大于该bucket对应的容量保护阈值,则确定该bucket为满足容量释放条件的目标bucket。
67.这里,每一bucket对应的容量保护阈值可通过以下步骤确定:针对每一bucket,确定该bucket被配置的存储空间占用比例,计算该bucket的存储空间占用比例与n2的乘积,n2表示目标域内当前在线存储节点的总容量之和;将计算结果确定为该bucket对应的容量保护阈值。
68.在具体实现时,上述存储空间占用比例是指该bucket使用目标域内在线存储节点的存储空间的比例,存储空间占用比例与该bucket被配置的尺寸(size)有关。比如,目标域对应bucket a和bucket b,bucket a和bucket b的尺寸分别为:1gb、2gb,则bucket a和bucket b按照1:2的比例使用域内在线存储设备的存储空间。也即,bucket a的存储空间占用比例为1/3,相应地,bucket b的存储空间占用比例为2/3。
69.比如,目标域内在线存储设备总容量为t,目标域对应bucket a和bucket b,bucket a和bucket b的尺寸分别为1gb、2gb,bucket a和bucket b按照1:2比例使用域内在线存储设备的存储空间,假若当前,bucket a的数据占有容量小于t/3,而bucket b的数据占有量大于2t/3,则此时可优先覆盖bucket b中数据,暂停bucket a数据的覆盖,也即,
bucket b为满足容量释放条件的目标bucket,bucket a为不满足容量释放条件的目标bucket。
70.步骤302,依据目标容量和各目标bucket的数据占用量的比例,确定各目标bucket待释放的目标数据量。
71.作为一个实施例,各目标bucket待释放的目标数据量之和小于或等于目标容量。
72.作为一个实施例,各目标bucket待释放的目标数据量的比例为各目标bucket的数据占用量的比例。
73.至此,完成图3所示流程。
74.通过图3所示流程实现了在确定各bucket待释放的目标数据量时考虑到最少数据量保护逻辑,避免bucket中数据被过多覆盖或释放。
75.需要说明的是,在本实施例中,假若存储节点比如编号最大的存储节点等作为管理节点,此时,该管理节点可能没有对象索引信息,基于此,作为一个实施例,可根据各bucket数据占有量比例,确定覆盖时间点,将覆盖时间点对应下发到存储节点,以由存储节点基于覆盖时间点释放存储设备的存储空间(比如删除写入时间在该覆盖时间点之前的所有数据等)。这里,可根据bucket平均每小时的数据量计算上述覆盖时间点。bucket平均每小时的数据量依赖于bucket被配置的存储周期和被写入的有效数据计算。
76.以上对本技术实施例提供的方法进行了描述,下面对本技术实施例提供的装置和电子设备进行描述:
77.参见图4,图4为本技术实施例提供的装置结构图。该装置可包括:确定单元和释放单元。
78.其中,确定单元用于针对每一域,依据该域中在线存储节点的当前剩余容量,确定该域是否为需要释放节点容量的目标域;以及,
79.当确定该域为需要释放节点容量的目标域时,根据所述目标域中在线存储节点的总容量和所述目标域中在线存储节点的当前剩余容量,确定所述目标域中待释放的目标容量;以及,
80.根据所述目标容量、以及所述目标域对应的各bucket的数据占用量,确定各bucket待释放的目标数据量;其中,每一bucket的数据占用量是指该bucket中的数据当前占用的所述目标域中存储节点的存储空间;
81.释放单元,用于针对每一bucket,依据该bucket中待释放的目标数据量,通知对应的存储节点按照写入时间从前至后的顺序释放已写入的数据;其中,释放的数据量小于或等于该bucket中待释放的目标数据量。
82.可选地,确定单元依据该域中在线存储节点的当前剩余容量,确定该域是否为需要释放节点容量的目标域包括:
83.确定该域中在线存储节点的当前剩余容量的总和n1;
84.确定所述n1在该域中所有在线存储节点的总容量的总和n2中的比例;
85.若所述比例小于预设比例阈值,确定该域为所述目标域。
86.可选地,确定单元根据所述目标域中在线存储节点的总容量和所述目标域中在线存储节点的当前剩余容量,确定所述目标域中待释放的目标容量包括:
87.依据所述目标域中所有在线存储节点的总容量的总和n2与预设比例阈值确定所
述目标域对应的剩余容量阈值;其中,所述预设比例阈值为确定所述目标域的依据;
88.计算所述剩余容量阈值与所述目标域中在线存储节点的当前剩余容量之和n1的差值;将所述差值确定为所述目标域中待释放的目标容量。
89.可选地,确定单元依据所述目标域中所有在线存储节点的总容量的总和n2与预设比例阈值确定所述目标域当前对应的剩余容量阈值包括:
90.计算所述目标域中所有在线存储节点的总容量的总和n2与预设比例阈值的乘积,将计算结果确定为所述目标域当前对应的剩余容量阈值。
91.可选地,确定单元根据所述目标容量、以及所述目标域对应的各bucket的数据占用量,确定各bucket待释放的目标数据量包括:
92.获得所述目标域对应的各bucket的数据占用量;
93.依据所述目标容量和各bucket的数据占用量的比例,确定各bucket待释放的目标数据量;其中,各bucket待释放的目标数据量的比例为各bucket的数据占用量的比例,各bucket中待释放的目标数据量之和为所述目标容量。
94.可选地,确定单元根据所述目标容量、以及所述目标域对应的各bucket的数据占用量,确定各bucket待释放的目标数据量包括:
95.获得所述目标域对应的各bucket的数据占用量;
96.针对每一bucket,依据该bucket当前的数据占用量确定该bucket是否为满足容量释放条件的目标bucket;其中,当bucket当前的数据占用量大于该bucket对应的容量保护阈值,则确定该bucket为满足容量释放条件的目标bucket;
97.依据所述目标容量和各目标bucket的数据占用量的比例,确定各目标bucket待释放的目标数据量。
98.可选地,每一bucket对应的容量保护阈值通过以下步骤确定:
99.针对每一bucket,确定该bucket被配置的存储空间占用比例;所述存储空间占用比例是指该bucket使用所述目标域内在线存储节点的存储空间的比例,所述存储空间占用比例与该bucket被配置的尺寸有关;
100.计算该bucket的存储空间占用比例与n2的乘积,n2表示所述目标域内当前在线存储节点的总容量之和;将计算结果确定为该bucket对应的容量保护阈值。
101.可选地,所述管理节点为所述云存储集群中部署的用于执行节点容量释放的节点;或者,
102.所述管理节点为从所述云存储集群中的所有存储节点选择出的用于执行节点容量释放的存储节点。
103.至此,完成图4所示装置的结构描述。
104.本技术实施例还提供了图4所示装置的硬件结构。参见图5,图5为本技术实施例提供的电子设备结构图。如图5所示,该硬件结构可包括:处理器和机器可读存储介质,机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现本技术上述示例公开的方法。
105.基于与上述方法同样的申请构思,本技术实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本技术上述示例公开的方法。
106.示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
107.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
108.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
109.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
110.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
111.而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
112.这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤.
113.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1