一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于IPFS的空间回收方法与设备与流程

2022-05-18 08:47:46 来源:中国专利 TAG:

一种用于ipfs的空间回收方法与设备
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种用于ipfs的空间回收技术。


背景技术:

2.ipfs在磁盘空间不足、到达空间回收周期或运行ipfs repo gc命令时,磁盘空间回收任务就会启动。为避免在回收时受到增加或删除固定操作的影响,ipfs会在开始空间回收前,进行全局锁定,待回收完成后方可解除锁定,在这段全局锁定时间内,ipfs无法进行固定操作。如果ipfs存储数据的体量较小,空间回收耗时较短,全局锁定的影响不会很大。但是,当存储数据的体量较大时,空间回收所需时间会相当长,回收100tb数据就可能会耗时数小时;对于pb级别的数据量来说,回收时全局锁定的时间可能会长达几天。然而在实际应用场景中,企业级别的存储服务是不能接受如此长时间的全局锁定,无法进行固定操作势必会对存储业务产生影响。因此,需要一种无需全局锁定的ipfs空间回收方式,使得回收操作不会对存储服务造成影响。


技术实现要素:

3.本技术的目的是提供一种用于ipfs的空间回收方法与设备。
4.根据本技术的一个方面,提供了一种用于ipfs的空间回收的方法,其中,所述方法包括:
5.建立与ipfs中merkle dag节点一一对应的merkle tree节点,其中,所述merkle tree节点设置有节点类型属性及引用关系属性,并保存其对应的merkle dag节点的cid;
6.当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点;
7.基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收。
8.进一步地,其中,所述方法还包括:
9.根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree节点的节点类型属性和/或引用关系属性,其中,所述节点类型属性及引用关系属性具有初始默认值。
10.进一步地,所述数据操作包括直接固定及递归固定,其中,所述根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree的节点类型属性和/或引用关系属性包括:
11.若所述merkle dag节点的数据操作为直接固定,则将其对应的merkle tree节点的节点类型属性变更为直接固定属性;或者,
12.若所述merkle dag节点的数据操作为递归固定,则将其对应的merkle tree节点的节点类型属性变更为递归固定属性,并变更所述merkle tree节点所处的merkle tree的全部节点的引用关系属性。
13.进一步地,其中,所述变更所述merkle tree节点所处的merkle tree的全部节点的引用关系属性包括:
14.遍历所述merkle tree节点所处的merkle tree;
15.将遍历到的merkle tree节点的引用关系属性变更为该merkle tree节点的直系父节点信息。
16.进一步地,所述数据操作还包括解除直接固定,所述根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree节点的节点类型属性和/或引用关系属性包括:
17.将所述解除直接固定的merkle dag节点对应的merkle tree节点的节点类型属性变更为初始默认值。
18.进一步地,所述数据操作还包括解除递归固定,所述根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree节点的节点类型属性和/或引用关系属性包括:
19.将所述解除递归固定的merkle dag节点对应的merkle tree节点的节点类型属性变更为初始默认值;
20.遍历所述merkle tree节点其所处的merkle tree;
21.将遍历到的merkle tree节点的引用关系属性变更为初始默认值。
22.进一步地,所述当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点包括:
23.当接收到空间回收指令时,遍历所述merkle tree节点;
24.当遍历到的merkle tree节点的节点类型属性及引用关系属性均为初始默认值时,确定遍历到的merkle tree节点为可回收节点。
25.优选地,其中,所述merkle tree节点还设置有节点id属性,所述当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点包括:
26.当接收到空间回收指令时,遍历merkle tree节点,并记录遍历到的merkle tree节点的节点id属性;
27.当数据操作对应的merkle tree节点的节点类型属性和/或引用关系属性变更完成之后,根据记录的所述节点id属性继续遍历merkle tree节点。
28.优选地,所述基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收之前还包括:
29.累积记录所述可回收节点对应的merkle dag节点的数据块大小,以统计本次回收的空间大小。
30.根据本技术的另一方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述方法的操作。
31.根据本技术的再一方面,还提供了一种ipfs的空间回收设备,其中,该设备包括:
32.一个或多个处理器;以及
33.存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行上述方法的操作。
34.与现有技术相比,本技术通过建立与ipfs中merkle dag节点一一对应的merkle tree节点,其中,所述merkle tree节点设置有节点类型属性及引用关系属性,并保存其对应的merkle dag节点的cid;当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点;基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收。通过此方式,将ipfs的存储服务与空间回收服务分离,使得空间回收独立于存储任务地实现,从而,不需在空间回收时对ipfs进行全局锁定,同时,空间回收任务也不会限制ipfs对数据的固定操作。
附图说明
35.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
36.图1示出根据本技术一个方面的一种用于ipfs的空间回收的方法流程图;
37.图2示出根据本技术一个优选实施例的一种用于ipfs的空间回收的方法流程图。
38.附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
39.下面结合附图对本发明作进一步详细描述。
40.在本技术一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
41.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
42.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
43.为更进一步阐述本技术所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本技术的技术方案,进行清楚和完整的描述。
44.图1示出本技术一个方面提供的一种用于的方法,其中,该方法包括:
45.s11建立与ipfs中merkle dag节点一一对应的merkle tree节点,其中,所述merkle tree节点设置有节点类型属性及引用关系属性,并保存其对应的merkle dag节点的cid;
46.s12当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点;
47.s13基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收。
48.在该实施例中,在所述步骤s11中,建立与ipfs中merkle dag节点一一对应的merkle tree节点,其中,所述merkle tree节点设置有节点类型属性及引用关系属性,并保存其对应的merkle dag节点的cid。
49.ipfs以merkle dag的形式进行数据存储,根据文件的大小将该文件分割为多个数据块,将这些数据块以树状结构排列,并以cid作为树状结构中每个节点的唯一标识符。空间回收服务对数据存储服务进行监听,从而完整的映射出数据存储服务创建的merkle dag结构,但不保存实际的数据,而是保存其对应的数据存储服务的merkle dag节点的索引关系,及merkle dag节点的子节点的cid。在此,完整映射数据存储服务的merkle dag的过程可以通过消息队列来构建。例如:当数据存储服务将一个文件分为2个数据块,从而将该文件组织为具有1个根节点和2个叶节点的merkle dag时,将这三个节点的索引关系写入消息队列中,即消息队列中保存有三条代表各个节点的消息,代表根节点的消息内容为该根节点的cid以及两个子节点的cid,代表叶节点的消息内容分别为两个叶节点的cid。当消息队列存在消息时,空间回收任务就对该消息队列进行消费,建立相应的merkle tree结构(由于空间回收服务建立的树形结构与merkle dag存在区别,因此,将其概括为merkle tree结构以与数据存储服务建立的merkle dag结构进行区分),将该消息中节点本身的cid保存在merkle tree节点中,并根据消息中的子节点cid建立该merkle tree的连接关系。通过该方式,建立起与数据存储服务对应的merkle tree结构,该merkle tree结构与原merkle dag结构在连接关系上一致,仅在存储的具体内容上不同。应明确,添加merkle tree节点的过程对应的是ipfs的添加数据操作,只有ipfs添加新的merkle dag节点时,空间回收服务才会相应地添加对应的merkle tree节点。该方式建立了ipfs数据存储服务的映射,在映射出的merkle tree结构中进行空间回收服务,通过该方式将ipfs的存储服务与空间回收服务分离,使得空间回收独立于存储任务地实现,从而,不需在空间回收时对ipfs进行全局锁定,同时,空间回收任务也不会限制ipfs对数据的固定操作。
50.进一步地,根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree节点的节点类型属性和/或引用关系属性,其中,所述节点类型属性及引用关系属性具有初始默认值。
51.在此,空间回收服务对数据存储服务的监听包括但不限于ipfs的直接固定操作和递归固定操作(经固定操作及直接固定操作的节点在空间回收时不会被回收),对应地,消息队列中代表固定操作或递归固定的消息记录数据操作的类型、操作对象的cid。应明确,固定操作及递归固定操作的操作对象仅为已经存储在ipfs中的merkle dag节点,因此,空间回收服务消费消息队列中代表固定操作或递归固定操作的消息,仅会对已建立的merkle tree节点进行属性修改。消息队列中代表固定操作或递归固定操作的消息保存操作类型及操作对象的cid,空间回收服务通过消费此类消息对merkle tree节点的节点类型属性和/或引用关系属性进行修改,其中,节点类型属性的初始默认值代表该merkle tree节点为普通节点,引用关系属性的初始默认值仅代表该merkle tree节点的子节点信息,该子节点信息可以为子节点的cid,节点类型属性及引用关系属性均为初始默认值说明该节点为未经固定操作的普通节点,可在空间回收的过程中被回收。
52.进一步地,所述数据操作包括直接固定及递归固定,其中,所述根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree的节点类型属性和/或引用关系属性包括:
53.若所述merkle dag节点的数据操作为直接固定,则将其对应的merkle tree节点的节点类型属性变更为直接固定属性;或者,
54.若所述merkle dag节点的数据操作为递归固定,则将其对应的merkle tree节点的节点类型属性变更为递归固定属性,并变更所述merkle tree节点所处的merkle tree的全部节点的引用关系属性。
55.在此,当数据操作为直接固定时,消息队列中该操作的消息内容包括该操作对象的cid及操作类型为直接固定,当空间回收任务对该消息进行消费时,根据操作对象的cid在映射的merkle tree结构中索引该merkle tree节点,并将该节点的节点类型属性修改为直接固定属性;当数据操作为递归固定时,由于递归固定是将ipfs数据存储服务中该操作对象所在的整个merkle dag固定,因此当空间回收任务对该消息进行消费时,除了要根据操作对象的cid在映射的merkle tree结构中索引该merkle tree节点,并将该节点的节点类型属性修改为递归固定属性外,还要修改该merkle tree节点所处的merkle tree的全部节点的引用关系属性。
56.进一步地,所述变更所述merkle tree节点所处的merkle tree的全部节点的引用关系属性包括:
57.遍历所述merkle tree节点所处的merkle tree;将遍历到的merkle tree节点的引用关系属性变更为该merkle tree节点的直系父节点信息。
58.在此,在进行递归固定的修改引用关系属性时,首先根据消息队列中的操作对象的cid在映射的merkle tree结构中索引该merkle tree节点,再遍历该merkle tree节点所处的merkle tree,再遍历的过程中记录当前遍历到的节点中保存的cid信息,当遍历到该节点的子节点时,将保存的cid信息添加到子节点的引用关系属性中。通过该操作,映射的merkle tree建立其了有向循环的回路,因此,不同于ipfs数据存储服务的merkle dag结构,经过递归固定后的空间回收服务实际上建立的为有向有环图结构。
59.进一步地,所述数据操作还包括解除直接固定,所述根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree节点的节点类型属性和/或引用关系属性包括:
60.将所述解除直接固定的merkle dag节点对应的merkle tree节点的节点类型属性变更为初始默认值。
61.在此,空间回收服务监听的数据操作除了直接固定及递归固定外,还包括解除直接固定,与直接固定相对应,消息队列中代表解除直接固定的消息也保存操作类型及操作对象的cid,空间回收服务消费该消息,通过操作对象的cid在映射的merkle tree中索引到该操作对象对应的merkle tree节点,并根据解除直接固定的操作类型将节点类型属性恢复为初始默认值,通过该方式,将直接固定的节点恢复为可被回收的普通节点。
62.进一步地,所述数据操作还包括解除递归固定,所述根据ipfs中对merkle dag节点进行的数据操作,变更其对应的merkle tree节点的节点类型属性和/或引用关系属性包括:
63.将所述解除递归固定的merkle dag节点对应的merkle tree节点的节点类型属性变更为初始默认值;遍历所述merkle tree节点其所处的merkle tree;将遍历到的merkle tree节点的引用关系属性变更为初始默认值。
64.在此,空间回收服务监听的数据操作除了直接固定、递归固定及解除直接固定外,还包括解除递归固定,与递归固定相对应,消息队列中代表解除递归固定的消息也保存操作类型及操作对象的cid,空间回收服务消费该消息,通过操作对象的cid在映射的merkle tree中索引到该操作对象对应的merkle tree节点,并根据解除递归固定的操作类型将节点类型属性恢复为初始默认值,并遍历该merkle tree节点其所处的merkle tree,将遍历到的merkle tree节点的引用关系属性恢复为初始默认值。通过该方式,将递归固定的全部节点均恢复为可被回收的普通节点。
65.在该实施例中,在所述步骤s12中,当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点。
66.进一步地,所述当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点包括:
67.当接收到空间回收指令时,遍历所述merkle tree节点;当遍历到的merkle tree节点的节点类型属性及引用关系属性均为初始默认值时,确定遍历到的merkle tree节点为可回收节点。
68.在此,当空间回收服务接收到空间回收指令时,遍历建立的全部merkle tree结构,进行全局的空间回收,当遍历到的节点的节点类型属性及引用关系属性均为初始默认值时,确定遍历到的merkle tree节点为可回收节点。
69.优选地,所述merkle tree节点还设置有节点id属性,所述当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点包括:
70.当接收到空间回收指令时,遍历merkle tree节点,并记录遍历到的merkle tree节点的节点id属性;当数据操作对应的merkle tree节点的节点类型属性和/或引用关系属性变更完成之后,根据记录的所述节点id属性继续遍历merkle tree节点。
71.在此,为映射出的每一个merkle tree节点设置一个节点id属性,该节点id属性为该节点的cid。进而,当进行空间回收任务时,可通过记录遍历到的merkle tree节点的节点id属性,记录当前的遍历位置。通过此方式,当在遍历过程中消息队列中进入了新的数据操作消息时,可先消费该消息,为该消息的操作对象对应的merkle tree节点变更节点类型属性和/或引用关系属性,当该操作进行完毕后,再根据记录的节点id属性继续此前的空间回收的遍历过程。该方式实现了空间回收的可中断、可恢复。
72.在另一种实施例中,空间回收指令中包含ipfs的merkle dag节点的cid,因此,可根据该merkle dag节点的cid索引其对应的merkle tree节点,并从该merkle tree节点开始,进行空间回收任务的遍历过程。通过此方式,可对空间回收任务指定回收起始位置,实现了可定向的空间回收。
73.在该实施例中,在所述步骤s13中,基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收。
74.在此,由于映射的merkle tree节点中保存了其对应的merkle dag节点的cid,因
此,当确定了可回收节点后,通过该可回收节点中保存的cid确定其对应的ipfs数据存储服务中的merkle dag节点,进而对该merkle dag节点进行空间回收。
75.在一个优选实施例中,参见图2所示,其中,图2中的步骤s21、s22及s24与图1实施例中的步骤s11、s12及s13相同或基本相同,故在此不再赘述,仅以引用的方式包含于此。其中,所述步骤s23包括:累积记录所述可回收节点对应的merkle dag节点的数据块大小,以统计本次回收的空间大小。
76.在此,在确定可回收节点后,对可回收节点对应的ipfs数据存储服务的merkle dag节点的数据块大小进行统计,通过该方式可对本次空间回收的总回收空间进行统计。
77.与现有技术相比,本技术通过建立与ipfs中merkle dag节点一一对应的merkle tree节点,其中,所述merkle tree节点设置有节点类型属性及引用关系属性,并保存其对应的merkle dag节点的cid;当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点;基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收。通过此方式,将ipfs的存储服务与空间回收服务分离,使得空间回收独立于存储任务地实现,从而,不需在空间回收时对ipfs进行全局锁定,同时,空间回收任务也不会限制ipfs对数据的固定操作。
78.此外,本技术实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
79.本技术实施例还提供了一种用于ipfs的空间回收设备,其中,该设备包括:
80.一个或多个处理器;以及
81.存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行前述方法的操作。
82.例如,计算机可读指令在被执行时使所述一个或多个处理器:建立与ipfs中merkle dag节点一一对应的merkle tree节点,其中,所述merkle tree节点设置有节点类型属性及引用关系属性,并保存其对应的merkle dag节点的cid;
83.当接收到空间回收指令时,遍历所述merkle tree节点,以基于所述节点类型属性及引用关系属性确定可回收节点;
84.基于所述可回收节点中保存的cid确定其对应的merkle dag节点,并在ipfs中对该merkle dag节点进行空间回收。
85.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献