1.本技术涉及云存储技术领域,具体涉及一种对象存储数据存储管理方法、装置及设备。
背景技术:
2.叠瓦式磁记录(shingled magnetic recording,smr)是一种领先的下一代磁盘技术,相邻磁道之间按序部分重叠,能提高单位存储介质的存储密度,降低存储成本。正是由于smr磁盘物理上的特点,导致了它的读行为虽然与普通hdd(hard disk drive)机械硬盘无异,但是它的写行为却有着巨大的变化,它不支持随机写和原地更新写,因为这样会导致相重叠磁道数据被覆盖。因此smr磁盘仅支持从头到尾的顺序写入。
3.smr磁盘将磁道划分为多个带(band),即连续磁道所构成的壳连续写入的区域,每个区域成为一个需要顺序写入的基本单元。band是smr磁盘物理概念,对应的逻辑概念称为“区域”(zone),一个zone的大小为256mb。即zone只支持连续写入,支持随机读取,只支持整个zone空间删除,造成空间浪费、空间不能及时回收。
4.基于上述smr的缺点,目前更多的是smr硬盘内部怎么具体的使用,例如,创建本地文件系统,创建smr硬盘内部索引,smr和随机存储介质之间的关联关系。均不涉及到分布式系统层面的全局管理、空间管理,以及集合数据类型,数据的可靠性等方面的研究,并未有效解决smr硬盘只支持连续zone写入,整块zone删除特性带来的空间浪费、空间及时回收问题,并未针对安防流式数据全局进行云存储空间管理。
技术实现要素:
5.本技术提供了一种对象存储数据存储空间管理方法、装置及设备,用于对象存储数据的存储空间管理,提升了整个基于smr硬盘的云存储系统空间利用率。
6.第一方面,本技术实施例提供了一种对象存储数据存储空间管理方法,所述方法包括:
7.到达复用周期时,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,所述zg簇包括多个zg,所述zg中zone数量与所述源数据文件的对象的对象分片的数量n+m一致;
8.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,指示所述zg中zone所在存储节点执行对象的对象分片的写入;
9.根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇。
10.在一种可能的实施例中,从当前复用周期分配的zg簇中选择一个zg,包括:
11.确定当前对象为复用周期内第一个对象时,将所述当前对象写入所述zg簇中其中一个zg;
12.确定当前对象不为复用周期内第一个对象时,若上一个对象写入的zg剩余空间可
用时,将当前对象写入上一个对象写入的zg,若上一个对象写入的zg剩余空间不可用,重新从所述zg簇中选择一个未使用的zg进行对象写入。
13.在一种可能的实施例中,所述方法还包括:
14.若上一个对象写入的zg剩余空间不可用,且所述zg簇中没有未使用的zg时,按照存储节点负载均衡的策略,从存储节点中重新选择n+m个未使用的zone组成一个zg进行对象分片的写入。
15.在一种可能的实施例中,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,包括:
16.根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;
17.根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;
18.按照存储节点间负载均衡策略,从不同存储节点选择n+m个未使用的zone完成一个zg的分配,至完成n个zg的分配。
19.在一种可能的实施例中,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,包括:
20.根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;
21.根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;
22.对于每个待分配zg,按照存储节点间负载均衡策略,确定对应的n+m个存储节点;
23.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,包括:
24.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,确定选择的zg对应的n+m个存储节点,按照存储节点内部负载均衡的策略,从所述n+m个存储节点分别选择一个未使用的zone。
25.在一种可能的实施例中,响应于所述源数据文件的对象写入指令,还包括:
26.确定当前对象为之前发生流中断后第一次写入的数据,确定中断时间未超过预设时间时,获取发生中断前最后一个对象写入的第一zg,确定所述第一zg的剩余空间可用时,将所述当前对象写入所述第一zg;
27.否则,重新从所述zg簇中选择一个未使用的zg进行对象写入。
28.在一种可能的实施例中,指示所述zg中zone所在存储节点执行对象的对象分片的写入之后,还包括:
29.建立所述对象与当前周期分配的zg簇、以及选择的zg之间的双向索引关系;或者
30.记录对象写入选择的zg的时间,并按照zg中第一个对象写入的时间,对所述zg簇中的zg进行排序。
31.在一种可能的实施例中,所述方法还包括:
32.接收客户端发送的文件读取请求,所述文件读取请求包括待读取的源数据文件的文件标识及采集时间;
33.根据所述源数据文件的采集时间,查找所述采集时间对应的所有源数据文件的文件信息,在查到的源数据文件的文件信息中,根据文件标识查找待读取的源数据文件的文件信息;
34.根据查到的待读取源数据文件的文件信息,确定待读取的源数据文件所包括的对
象、对象所属的zg簇,对象在所属zg簇中起始zg及在zg中的偏移、结束zg及在结束zg中的偏移和长度;
35.从对象所属的zg簇中,从根据对象在所属zg簇中起始zg及在zg中的偏移确定的起始位置开始读取,至读取根据结束zg及在结束zg中的偏移和长度确定结束位置结束。
36.在一种可能的实施例中,根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇,包括:
37.根据zg簇的到期时间,确定过期的zg簇并删除,所述zg簇的到期时间为所述zg簇中最先写入对象的zg中第一个对象的第一写入时间,与所述源数据文件的生命周期及所述zg簇的复用周期求和得到的时间;
38.根据zg的到期时间,确定过期的zg并删除,所述zg的到期时间为所述zg中第一个对象的第二写入时间,与所述源数据文件的生命周期及所述zg的复用周期求和得到的时间。
39.在一种可能的实施例中,还包括如下至少一个步骤:
40.确定所述源数据文件的生命周期变更或所述源数据文件的对象的ec模式发生变更时,释放当前复位周期分配的zg簇内未使用的zg,并触发重新分配zg簇;
41.在当前服务周期结束前判定所分配的zg簇的空间不能满足存储需求时,触发到达下一个复用周期重新进行zg簇分配;
42.确定当前复用周期结束时所述zg簇中存在未使用的zg时,将所述未使用的zg从所述zg簇中释放。
43.在一种可能的实施例中,所述方法还包括:
44.检测出当前复用周期zg簇中存在出现异常zone的第二zg;
45.确定所述第二zg未使用时,重新选择新的zg替换所述第二zg;
46.确定所述第二zg已使用时,根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。
47.在一种可能的实施例中,响应于zg完整性检测指令,检测出所有所分配的zg簇中存在出现异常zone的第二zg;
48.根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。
49.第二方面,本技术实施例提供了一种对象存储数据存储空间管理装置,所述装置包括:
50.zg簇预分配模块,用于根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,所述zg簇包括多个zg,所述zg中zone数量与所述源数据文件的对象的对象分片的数量n+m一致;
51.数据写入模块,用于响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,指示所述zg中zone所在存储节点执行对象的对象分片的写入;
52.zg簇删除模块,用于根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇。
53.第三方面,本技术实施例提供了一种对象存储数据存储空间管理设备,所述设备包括:
54.至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行对象存储数据存储空间管理方法中任何一项所述的方法。
55.第四方面,本技术实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行对象存储数据存储空间管理方法中任何一项所述的方法。
56.本技术实施例提供的一种对象存储数据存储空间管理方法、装置及设备,通过进行数据存储的全局空间申请、管理、动态调整;数据删除的全局空间回收,达到高效循环利用云存储空间的效果,解决smr硬盘只支持连续zone写入,整块zone删除特性带来的空间浪费、空间及时回收问题,提升了整个对象存储系统的空间利用率。
附图说明
57.图1为根据本发明示例性实施例示例的一种zg组成示意图;
58.图2为根据本发明示例性实施例示例的一种对象存储数据存储空间管理方法流程示意图;
59.图3为根据本发明示例性实施例示例的一种数据写入过程示意图;
60.图4为根据本发明示例性实施例示例的一种对象写入流程示意图;
61.图5为根据本发明示例性实施例示例的一种对象存储数据存储空间管理装置示意图;
62.图6为根据本发明示例性实施例示例的一种对象存储数据存储空间管理设备示意图。
具体实施方式
63.下面将结合附图对本技术实施例中的技术方案进行清楚、详尽地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
64.首先,对本发明实施例的专业术语进行介绍。
65.叠瓦式磁记录(shingled magnetic recording,smr)磁盘:是一种领先的下一代磁盘技术,相邻磁道之间按序部分重叠,能提高单位存储介质的存储密度,降低存储成本。正是由于smr磁盘物理上的特点,导致了它的读行为虽然与普通机械硬盘(hard disk drive,hdd)无异,但是它的写行为却有着巨大的变化,它不支持随机写和原地更新写,因为这样会导致相重叠磁道数据被覆盖。因此smr磁盘仅支持从头到尾的顺序写入。
66.smr磁盘将磁道划分为多个带(band),即连续磁道所构成的壳连续写入的区域,每个区域成为一个需要顺序写入的基本单元。band是smr磁盘物理概念,对应的逻辑概念称为“区域”(zone),一个zone的大小为256mb。即zone只支持连续写入,支持随机读取,只支持整个zone空间删除。
67.纠删码(erasure code,ec):通用术语为n+m,即n个对象分片,生成m个校验块。
68.数据生命周期:即表示数据的有效存储时间。例如在安防存储场景下,视频、图片
存储周期,通常都是按照以“小时”粒度进行衡量。例如录像存储90天*24小时、图片存储180天*24小时。数据生命周期到期之后,系统自动对过期数据进行删除,空间释放,用于新数据写入,存储空间循环利用。
69.区域组(zone group,zg):一组zone的集合。从n+m块smr硬盘中选择出n+m个zone(每块硬盘选择一个zone),组成一个zg。在分布式存储系统中,考虑到数据存储的可靠性,zg中zone组成,通常来源于不同的机架、不同的存储节点、不同的smr硬盘。其中n+m与ec模式中的n+m个数相同。
70.如图1所示,以4+1为例,zg由zone1、zone2、zone3、zone4、zone5组成,各zone来自不同的存储节点。
71.下面将结合附图对本技术实施例中的对象存储数据存储空间管理方法进行详细的说明。
72.图2为本技术实施例提供的一种对象存储数据存储空间管理方法流程示意图,应用与管理节点,包括:
73.s201:到达复用周期时,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,所述zg簇包括多个zg,所述zg中zone数量与所述源数据文件的对象的对象分片的数量n+m一致。
74.用户通过客户端将数据写入云存储系统,存储系统中会建立一个与所述客户对应的桶bucket目录。本技术实施例中的源数据文件是按照ec模式写入云存储系统,即一个数据文件可以划分为多个对象,将对象按照预设对象分片大小进行分片,然后计算多个冗余对象分片,最后得到n+m个对象分片。
75.在预设的复用周期内,上传到云存储系统的源数据文件的数据量是可以进行预估的,根据所述预估的数据量,分配与所述数据量匹配的zg簇,zg簇包括多个zg,所述zg包括n+m个zone,其中n+m个zone可以来自同一存储节点,但是出自对于数据可靠性的考虑,本技术实施例中zg包括的n+m个zone分别来自不同的存储节点,其中n+m个zone均为空闲zone。复用周期为分配zg簇的周期,可以根据用户的需求进行配置。
76.管理节点需要存储节点上报所有存储节点上的所有zone信息,包括已经用过的zone的数量和未使用zone,已经用过的zone包括写过未写满和写满的zone;分配的zone的数量以及各存储节点中的容量信息。上述信息是通过管理节点指示各个存储节点上报和/或各个存储节点按照预设的时间粒度进行上报得到的。
77.s202:响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,指示所述zg中zone所在存储节点执行对象的对象分片的写入。
78.从当前复用周期分配的zg簇中选择一个zg需要根据当前对象的写入顺序、上一个对象写入的zg剩余空间、当前zg簇的容量以及数据流的中断时间进行选择。
79.需要注意的是,本技术实施例中的写入过程均为对齐写入,即将n+m个对象同时写入当前zg的n+m个zone中。
80.s203:根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇。
81.同一客户端的源数据文件属于同一bucket,源数据文件按照bucket粒度进行生命周期的管理。列举客户端所拥有的bucket下的所有源数据文件信息,所述源数据文件信息
包括为所述源数据文件分配的zg簇中各zg的对象分片写入时间,若当前系统时间距离该对象分片写入的时间超出生命周期,则满足所述zg或zg簇删除条件,将所述zg或zg簇删除,并指示对应存储节点将空闲的zone进行回收和写指针重置,对空闲的zone进行可用资源的统一管理。如上所述的删除方式不存在zone数据空洞导致的zone延后释放,极大提升系统空间利用率。
82.本技术实施例提供的一种对象存储数据存储空间管理方法,基于存储节点上smr硬盘,通过逻辑上提前分配zg空间,让同一个数据源数据写入到预分配zg中。数据生命周期到期之后,整个zg空间快速回收。即数据写入空间申请和释放,在逻辑上是zg整块申请、整块释放。并且能够非常灵活适应流式数据源写入、以及支持频繁的生命周期变更,动态适配ec写入模式变更等场景,达到提升云存储空间利用率的目的。
83.上述s201的步骤中,数据文件和zg的对应关系如图3所示,用户通过客户端将数据写入云存储系统是按照ec模式进行写入的,分配的zg簇是以zg分配的时间策略构建的,例如预估1天数据量,为1天数据分配8个zg,将所述8个zg进行统一管理,得到1天内分配的zg簇,该时间为可以根据用户的意愿进行配置。所述zg簇中同一zg包括的zone分别来源于不同的存储节点,不同zg中的zone可以来源于相同的存储节点。
84.在一种可能的实施方式中,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇包括如下至少一种情况:
85.作为一种可能的实施方式,在根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇的工程中,包括如下至少一种情况:
86.1)管理节点上只记录zg簇在每个存储节点上需要分配的zone数量,当数据写入之前,获取所述存储节点具体某块smr盘和对应的具体的zone的偏移地址。
87.根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;
88.根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;
89.对于每个待分配zg,按照存储节点间负载均衡策略,确定对应的n+m个存储节点;
90.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,包括:
91.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,确定选择的zg对应的n+m个存储节点,按照存储节点内部负载均衡的策略,从所述n+m个存储节点分别选择一个未使用的zone。
92.2)管理节点记录zg簇在每个存储节点上需要分配的zone数量,以及所述存储节点具体某块smr盘和对应的具体的zone的偏移地址。
93.根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;
94.根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;
95.按照存储节点间负载均衡策略,从不同存储节点选择n+m个未使用的zone完成一个zg的分配,至完成n个zg的分配。
96.3)可以按照复用周期进行分配。
97.例如根据预估1天的数据量为8gb,以4+1模式为例,首先将8gb的数据文件划分为8个1gb的对象,将所述8个1gb的对象分别按照4+1模式进行zg空间的分配,则每个1gb的对象将分配到一个zg,8gb的数据将分配8个zg,每个zg包括5个zone,各zone来自不同的存储节
点。
98.若数据生命周期为30天,可以预估30天的数据量,为30天的数据一次性分配所需要的zg。上述分配的zg包括多个空闲zone,此时复用周期为数据生命周期。
99.4)确定所述源数据文件的生命周期变更或所述源数据文件的对象的ec模式发生变更时,释放当前复位周期分配的zg簇内未使用的zg,并触发重新分配zg簇。
100.ec模式变更即n+m变更,例如由4+1模式变更为4+2模式。在此种情况下,zg中zone的数量也会发生变化,因此之前预分配的zg簇中的zg无法继续使用,当前zg簇将释放未使用的zg,然后按照变更后的4+2模式重新构建zg簇。
101.5)在当前服务周期结束前判定所分配的zg簇的空间不能满足存储需求时,触发到达下一个复用周期重新进行zg簇分配。
102.当数据码流的规格发生提升或者由于数据量预估错误,进而导致当前复用周期内分配的zg簇中剩余空间不能满足存储需求时(例如剩余空间低于总空间的5%,5%可配置),提前触发下一个复用周期的zg簇的重新分配。
103.上述扩充未使用的zg为实时、动态的,不需要停止当前数据写入的动作,即在用户感知不到的情况下进行扩充。
104.根据上述分配方式,使得每次数据写入,都是选择当前最合理的硬盘、最合理的zone,最大程度提升整个系统的稳定性。
105.上述s202的步骤具体可以通过如下实施方式:
106.在写入的过程中,数据为连续写入,即先将对象写入一个zg,当所述zg写满或剩余空间不足以写下一个对象时,再从当前zg簇中选择另一个zg,将未写入的对象写入该zg中。
107.在一种可能的实施方式中,从当前复用周期分配的zg簇中选择一个zg,包括:
108.确定当前对象为复用周期内第一个对象时,将所述当前对象写入所述zg簇中其中一个zg,如果是第一个对象,说明zg簇中zg均可用,则可以任选一个zg;
109.确定当前对象不为复用周期内第一个对象时,若上一个对象写入的zg剩余空间可用时,将当前对象写入上一个对象写入的zg,若上一个对象写入的zg剩余空间不可用,重新从所述zg簇中选择一个未使用的zg进行对象写入,这样会使一个zg写满或剩余空间不可用时,再写入下一个zg,保证时间差不多的对象写入到同一个zg中。
110.在一种可能的实施方式中,若上一个对象写入的zg剩余空间不可用,且所述zg簇中没有未使用的zg时,说明当前复用周期内分配的zg不够,则按照存储节点负载均衡的策略,从存储节点中重新选择n+m个未使用的zone组成一个zg进行对象分片的写入,将所述重新选择的zg扩充到当前zg簇中。
111.在数据写入过程中,可能之前发生过中断,本实施例中确定当前对象为之前发生流中断后第一次写入的数据,确定中断时间未超过预设时间时,获取发生中断前最后一个对象写入的第一zg,确定所述第一zg的剩余空间可用时,将所述当前对象写入所述第一zg;
112.否则,重新从所述zg簇中选择一个未使用的zg进行对象写入。
113.这样,在数据中断一段时间后,将新对象写入上次未写满的zg中,在本技术实施例中,其中断时间通常不超过数据生命周期的一半,例如生命周期180天,则zg中的数据写入时间,不要相差90天,本实施例中的上述复用时间为可配置项。
114.数据具体的写入流程如图4所示:
115.按照同一个数据源数据,写入到同一组zg簇中;同一个客户端,时间上相近的流式数据,即使中间流式数据写入中断(存在中断时间),流式数据恢复之后,继续写入上一个未满的zg中。即时间相近的数据,写入到同一个zg中。
116.步骤1:首先接收来自客户端发过来的对象分片,判断当前对象是否为之前发生流中断后第一次写入的数据,若是,则获取发生中断前最后一个对象写入的第一zg,若不是,则执行步骤3。
117.步骤2:判断中断时间是否超过预设时间,若未超过,则判断所述zg的剩余空间是否可用,若超过,则执行步骤3;若剩余空间可用则获取所述zg可写偏移地址,建立文件和zg以及zg簇的对应关系进行数据写入,若剩余空间不可用,则执行步骤3。
118.步骤3:从当前zg簇中获取任意一个未使用的zg,建立文件和zg以及zg簇的对应关系进行数据写入。
119.步骤4:对象文件写到一定大小后,切换新对象文件写入,建立新对象文件与zg和zg簇对应关系。
120.需要注意的是,为了保证信息的持久化,指示所述zg中zone所在存储节点执行对象的对象分片的写入之后,建立所述对象与当前周期分配的zg簇、以及选择的zg之间的双向索引关系;或者
121.记录对象写入选择的zg的时间,并按照zg中第一个对象写入的时间,对所述zg簇中的zg进行排序。
122.在一种可能的实施方式中,进行数据写入的过程中,还存在如下情况:
123.1)确定当前复用周期结束时所述zg簇中存在未使用的zg时,将所述未使用的zg从所述zg簇中释放。
124.当数据码流的规格发生降低或者由于数据量预估错误,进而导致当前复用周期内分配的zg簇中剩余未使用的zg时,将所述未使用的zg从所述zg簇中释放。
125.2)检测出当前复用周期zg簇中存在出现异常zone的第二zg且确定所述第二zg未使用时,重新选择新的zg替换所述第二zg。
126.zone异常的情况包括多种,例如机架、存储节点、smr硬盘出现故障。在上述情况下,若当前zg未使用,则重新选择新的zg替换当前zg,选择过程如前所述。
127.异常zone为拔盘、坏盘、坏扇区、节点删除、节点离线且超时等情形,管理节点会将zg缓存中对应的这些zone信息进行重置(zone长度和所处存储节点位置重置为0),则确定所述第一zg中对象分片长度或写指针位置被重置为0的zone为异常zone。
128.3)检测出当前复用周期zg簇中存在出现异常zone的第二zg且确定所述第二zg已使用,确定满足恢复条件时,对所述第二zg进行数据恢复。
129.响应于zg完整性检测指令,检测出所有所分配的zg簇中存在出现异常zone的第二zg;
130.根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。
131.对出现异常zone的第二zg中各zone进行数据长度统计,得到至少一个对象分片长度,并确定各对象分片长度对应的zone数量;
132.当最大的zone数量l满足恢复条件时,确定所述待恢复zg可以恢复,所述恢复条件
为:所述l满足n≤l《n+m。
133.上述s203的步骤具体可以通过如下实施方式:
134.在一种可能的实施方式中,删除过期的任一zg或zg簇具体包括如下至少一种情况:
135.1)以zg簇为粒度进行删除。
136.根据zg簇的到期时间,确定过期的zg簇并删除,所述zg簇的到期时间为所述zg簇中最先写入对象的zg中第一个对象的第一写入时间,与所述源数据文件的生命周期及所述zg簇的复用周期求和得到的时间。
137.例如,zg簇按照以1天为粒度进行管理,即该zg簇的复用周期为1天,源数据文件的生命周期为30天,若距离该zg簇中最先写入对象的zg中第一个对象的写入时间超过31(30+1)天,则确定所述zg簇过期,释放该zg簇中的所有zg,释放所有zg对应所有的zone,管理节点指示存储节点进行zone回收和写指针重置,放入可用zone空间池中进行可用资源统一管理。zg簇删除成功之后,删除zg簇对应的所有关联对象文件记录信息。
138.2)以zg为粒度进行删除。
139.根据zg的到期时间,确定过期的zg并删除,所述zg的到期时间为所述zg中第一个对象的第二写入时间,与所述源数据文件的生命周期及所述zg的复用周期求和得到的时间。
140.例如:源数据文件的生命周期为30天,所述zg的复用周期为1天,若距离该zg中第一个对象的写入时间超过31(30+1)天,确定所述zg过期,则释放所有zg对应所有的zone,删除与所述zg关联的所有文件记录。
141.特别的,如果对象文件跨越多个zg,则标记该文件为“无效,待删除”。
142.上述两种方式,其最终释放空间的物理粒度,为smr硬盘的zone空间大小,整块删除整块重置。不存在zone数据空洞导致的zone延后释放。极大提升系统空间利用率。
143.在一种可能的实施方式中,从云存储系统中读取数据的流程具体如下:
144.接收客户端发送的文件读取请求,所述文件读取请求包括待读取的源数据文件的文件标识及采集时间;
145.根据所述源数据文件的采集时间,查找所述采集时间对应的所有源数据文件的文件信息,在查到的源数据文件的文件信息中,根据文件标识查找待读取的源数据文件的文件信息;
146.根据查到的待读取源数据文件的文件信息,确定待读取的源数据文件所包括的对象、对象所属的zg簇,对象在所属zg簇中起始zg及在zg中的偏移、结束zg及在结束zg中的偏移和长度;
147.从对象所属的zg簇中,从根据对象在所属zg簇中起始zg及在zg中的偏移确定的起始位置开始读取,至读取根据结束zg及在结束zg中的偏移和长度确定结束位置结束。
148.例如,用户想要读取9月1日9点到10点的录像,则根据该客户端的信息,所述信息包括文件标识和采集时间,找到对应的bucket目录,列举bucket目录下所有的文件,9点到10点的文件可能包括多个,在所述所有文件中查找9点到10点的文件,进而可以确定所述9点到10点的文件中对应的对象、对象所属的zg簇,对象在所属zg簇中起始zg及在zg中的偏移、结束zg及在结束zg中的偏移和长度,从根据对象在所属zg簇中起始zg及在zg中的偏移
确定的起始位置开始读取,按照对象写入zg的时间先后顺序,依次进行读取。
149.基于相同的发明构思,本技术提供了一种对象存储数据生命周期管理装置,500,如图5所示,该装置包括:
150.zg簇预分配模块501,用于根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,所述zg簇包括多个zg,所述zg中zone数量与所述源数据文件的对象的对象分片的数量n+m一致;
151.数据写入模块502,用于响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,指示所述zg中zone所在存储节点执行对象的对象分片的写入;
152.zg簇删除模块503,用于根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇。
153.在一种可能的实施方式中,zg簇预分配模块从当前复用周期分配的zg簇中选择一个zg,包括:
154.确定当前对象为复用周期内第一个对象时,将所述当前对象写入所述zg簇中其中一个zg;
155.确定当前对象不为复用周期内第一个对象时,若上一个对象写入的zg剩余空间可用时,将当前对象写入上一个对象写入的zg,若上一个对象写入的zg剩余空间不可用,重新从所述zg簇中选择一个未使用的zg进行对象写入。
156.在一种可能的实施方式中,zg簇预分配模块还用于:
157.若上一个对象写入的zg剩余空间不可用,且所述zg簇中没有未使用的zg时,按照存储节点负载均衡的策略,从存储节点中重新选择n+m个未使用的zone组成一个zg进行对象分片的写入。
158.在一种可能的实施方式中,zg簇预分配模块根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,包括:
159.根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;
160.根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;
161.按照存储节点间负载均衡策略,从不同存储节点选择n+m个未使用的zone完成一个zg的分配,至完成n个zg的分配。
162.在一种可能的实施方式中,zg簇预分配模块根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,包括:
163.根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;
164.根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;
165.对于每个待分配zg,按照存储节点间负载均衡策略,确定对应的n+m个存储节点;
166.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,包括:
167.响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,确定选择的zg对应的n+m个存储节点,按照存储节点内部负载均衡的策略,从所述n+m个存储节点分别选择一个未使用的zone。
168.在一种可能的实施方式中,数据写入模块响应于所述源数据文件的对象写入指令,还包括:
169.确定当前对象为之前发生流中断后第一次写入的数据,确定中断时间未超过预设时间时,获取发生中断前最后一个对象写入的第一zg,确定所述第一zg的剩余空间可用时,将所述当前对象写入所述第一zg;
170.否则,重新从所述zg簇中选择一个未使用的zg进行对象写入。
171.在一种可能的实施方式中,数据写入模块指示所述zg中zone所在存储节点执行对象的对象分片的写入之后,还包括:
172.建立所述对象与当前周期分配的zg簇、以及选择的zg之间的双向索引关系;或者
173.记录对象写入选择的zg的时间,并按照zg中第一个对象写入的时间,对所述zg簇中的zg进行排序。
174.在一种可能的实施方式中,数据读取模块接收客户端发送的文件读取请求,所述文件读取请求包括待读取的源数据文件的文件标识及采集时间;
175.根据所述源数据文件的采集时间,查找所述采集时间对应的所有源数据文件的文件信息,在查到的源数据文件的文件信息中,根据文件标识查找待读取的源数据文件的文件信息;
176.根据查到的待读取源数据文件的文件信息,确定待读取的源数据文件所包括的对象、对象所属的zg簇,对象在所属zg簇中起始zg及在zg中的偏移、结束zg及在结束zg中的偏移和长度;
177.从对象所属的zg簇中,从根据对象在所属zg簇中起始zg及在zg中的偏移确定的起始位置开始读取,至读取根据结束zg及在结束zg中的偏移和长度确定结束位置结束。
178.在一种可能的实施方式中,zg簇删除模块根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇,包括:
179.根据zg簇的到期时间,确定过期的zg簇并删除,所述zg簇的到期时间为所述zg簇中最先写入对象的zg中第一个对象的第一写入时间,与所述源数据文件的生命周期及所述zg簇的复用周期求和得到的时间;
180.根据zg的到期时间,确定过期的zg并删除,所述zg的到期时间为所述zg中第一个对象的第二写入时间,与所述源数据文件的生命周期及所述zg的复用周期求和得到的时间。
181.在一种可能的实施方式中,zg簇预分配模块还包括如下至少一个步骤:
182.确定所述源数据文件的生命周期变更或所述源数据文件的对象的ec模式发生变更时,释放当前复位周期分配的zg簇内未使用的zg,并触发重新分配zg簇;
183.在当前服务周期结束前判定所分配的zg簇的空间不能满足存储需求时,触发到达下一个复用周期重新进行zg簇分配;
184.确定当前复用周期结束时所述zg簇中存在未使用的zg时,将所述未使用的zg从所述zg簇中释放。
185.在一种可能的实施方式中,zg簇预分配模块所述方法还包括:
186.检测出当前复用周期zg簇中存在出现异常zone的第二zg;
187.确定所述第二zg未使用时,重新选择新的zg替换所述第二zg;
188.确定所述第二zg已使用时,根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。
189.在一种可能的实施方式中,zg簇预分配模块响应于zg完整性检测指令,检测出所有所分配的zg簇中存在出现异常zone的第二zg;
190.根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。
191.基于相同的发明构思,本技术提供了一种对象存储数据存储空间管理方法设备,所述设备包括:
192.至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本技术实施例中对象存储数据存储空间管理方法中任何一项所述的方法。
193.下面参照图6来描述根据本技术的这种实施方式的电子设备130。图6显示的电子设备130仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
194.如图6所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
195.所述处理器131用于读取所述存储器132中的指令并执行,以使所述至少一个处理器能够执行上述实施例提供的对象存储数据存储空间管理方法。
196.总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
197.存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(rom)1323。
198.存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
199.电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入/输出(i/o)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
200.在一些可能的实施方式中,本技术提供的一种对象存储数据存储空间管理方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的一种象存储数据存储空间管理方法的步骤。
201.另外,本技术还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序所述计算机程序用于使计算机执行上述实施例中任何一项所述的方法。
202.这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
203.这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
204.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
205.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:
1.一种对象存储数据存储空间管理方法,其特征在于,所述方法包括:到达复用周期时,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,所述zg簇包括多个zg,所述zg中zone数量与所述源数据文件的对象的对象分片的数量n+m一致;响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,指示所述zg中zone所在存储节点执行对象的对象分片的写入;根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇。2.根据权利要求1所述的方法,其特征在于,从当前复用周期分配的zg簇中选择一个zg,包括:确定当前对象为复用周期内第一个对象时,将所述当前对象写入所述zg簇中其中一个zg;确定当前对象不为复用周期内第一个对象时,若上一个对象写入的zg剩余空间可用时,将当前对象写入上一个对象写入的zg,若上一个对象写入的zg剩余空间不可用,重新从所述zg簇中选择一个未使用的zg进行对象写入。3.根据权利要求2所述的方法,其特征在于,还包括:若上一个对象写入的zg剩余空间不可用,且所述zg簇中没有未使用的zg时,按照存储节点负载均衡的策略,从存储节点中重新选择n+m个未使用的zone组成一个zg进行对象分片的写入。4.根据权利要求1~3任一所述的方法,其特征在于,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,包括:根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;按照存储节点间负载均衡策略,从不同存储节点选择n+m个未使用的zone完成一个zg的分配,至完成n个zg的分配。5.根据权利要求1~3任一所述的方法,其特征在于,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,包括:根据存储节点的所有zone的信息,确定所有未使用的zone及所在的存储节点;根据预估的在复用周期内接收的源数据文件的数据量,确定待分配的zg的数量n;对于每个待分配zg,按照存储节点间负载均衡策略,确定对应的n+m个存储节点;响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,包括:响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,确定选择的zg对应的n+m个存储节点,按照存储节点内部负载均衡的策略,从所述n+m个存储节点分别选择一个未使用的zone。6.根据权利要求1所述的方法,其特征在于,响应于所述源数据文件的对象写入指令,还包括:确定当前对象为之前发生流中断后第一次写入的数据,确定中断时间未超过预设时间时,获取发生中断前最后一个对象写入的第一zg,确定所述第一zg的剩余空间可用时,将所
述当前对象写入所述第一zg;否则,重新从所述zg簇中选择一个未使用的zg进行对象写入。7.根据权利要求1所述的方法,其特征在于,指示所述zg中zone所在存储节点执行对象的对象分片的写入之后,还包括:建立所述对象与当前周期分配的zg簇、以及选择的zg之间的双向索引关系;或者记录对象写入选择的zg的时间,并按照zg中第一个对象写入的时间,对所述zg簇中的zg进行排序。8.根据权利要求1所述的方法,其特征在于,还包括:接收客户端发送的文件读取请求,所述文件读取请求包括待读取的源数据文件的文件标识及采集时间;根据所述源数据文件的采集时间,查找所述采集时间对应的所有源数据文件的文件信息,在查到的源数据文件的文件信息中,根据文件标识查找待读取的源数据文件的文件信息;根据查到的待读取源数据文件的文件信息,确定待读取的源数据文件所包括的对象、对象所属的zg簇,对象在所属zg簇中起始zg及在zg中的偏移、结束zg及在结束zg中的偏移和长度;从对象所属的zg簇中,从根据对象在所属zg簇中起始zg及在zg中的偏移确定的起始位置开始读取,至读取根据结束zg及在结束zg中的偏移和长度确定结束位置结束。9.根据权利要求1所述的方法,其特征在于,根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇,包括:根据zg簇的到期时间,确定过期的zg簇并删除,所述zg簇的到期时间为所述zg簇中最先写入对象的zg中第一个对象的第一写入时间,与所述源数据文件的生命周期及所述zg簇的复用周期求和得到的时间;根据zg的到期时间,确定过期的zg并删除,所述zg的到期时间为所述zg中第一个对象的第二写入时间,与所述源数据文件的生命周期及所述zg的复用周期求和得到的时间。10.根据权利要求1所述的方法,其特征在于,还包括如下至少一个步骤:确定所述源数据文件的生命周期变更或所述源数据文件的对象的ec模式发生变更时,释放当前复位周期分配的zg簇内未使用的zg,并触发重新分配zg簇;在当前服务周期结束前判定所分配的zg簇的空间不能满足存储需求时,触发到达下一个复用周期重新进行zg簇分配;确定当前复用周期结束时所述zg簇中存在未使用的zg时,将所述未使用的zg从所述zg簇中释放。11.根据权利要求1所述的方法,其特征在于,所述方法还包括:检测出当前复用周期zg簇中存在出现异常zone的第二zg;确定所述第二zg未使用时,重新选择新的zg替换所述第二z;确定所述第二zg已使用时,根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。12.根据权利要求1所述的方法,其特征在于,响应于zg完整性检测指令,检测出所有所分配的zg簇中存在出现异常zone的第二zg;
根据所述第二zg中未发生丢失数据的zone的数量,确定满足恢复条件时,对所述第二zg进行数据恢复。13.一种对象存储数据存储空间管理方法装置,其特征在于,所述装置包括:zg簇预分配模块,用于根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的zg簇,所述zg簇包括多个zg,所述zg中zone数量与所述源数据文件的对象的对象分片的数量n+m一致;数据写入模块,用于响应于所述源数据文件的对象写入指令,从当前复用周期分配的zg簇中选择一个zg,指示所述zg中zone所在存储节点执行对象的对象分片的写入;zg簇删除模块,用于根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一zg或zg簇。14.一种对象存储数据存储空间管理方法设备,其特征在于,所述设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-12中任何一项所述的方法。15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如权利要求1-12任何一项所述的方法。
技术总结
本申请公开了一种对象存储数据存储管理方法、装置及设备,当到达复用周期时,根据预估的在复用周期内接收的源数据文件的数据量,分配与所述数据量匹配的ZG簇;响应于所述源数据文件的对象写入指令,从当前复用周期分配的ZG簇中选择一个ZG,指示所述ZG中zone所在存储节点执行对象的对象分片的写入;根据所述源数据文件的生命周期,及所述源数据文件的对象分片的写入时间,删除过期的任一ZG或ZG簇。解决SMR硬盘只支持连续zone写入,整块zone删除特性带来的空间浪费、空间及时回收问题,提升了整个对象存储系统的空间利用率。对象存储系统的空间利用率。对象存储系统的空间利用率。
技术研发人员:罗心 江文龙 王志豪 周明伟
受保护的技术使用者:浙江大华技术股份有限公司
技术研发日:2021.11.29
技术公布日:2022/3/8