数据清理方法、装置及设备、存储介质与流程

文档序号:21455609发布日期:2020-07-10 17:50阅读:245来源:国知局
数据清理方法、装置及设备、存储介质与流程

本发明涉及数据存储技术领域,尤其涉及的是一种数据清理方法、装置及设备、存储介质。



背景技术:

随着网络存储技术的发展,越来越多的安防产品和安防项目中,也使用了nas设备作为安防数据的存储媒介。网络存储与云存储技术通常结合使用,比如,用户的文件数据存储在云存储系统中,而文件数据相关的元数据则是存储在集群nas(networkattachedstorage:网络附属存储)中,由集群nas负责数据的维护。安防行业的数据一般都有存储周期,超过存储周期的数据需要删除。

相关的数据清理方式中,无论是nas设备还是云存储设备,都需要nas设备中的应用层来控制实现数据清理,即需要在用户的指示下一个一个删除数据,保证文件数据和文件数据相关的元数据的生命周期的一致性。

但是,在一段时间内,数据量往往是巨大的,特别是卡口图片数据等。上述方式中,需要用户参与来将海量的数据一个一个删除,以维护这些海量数据的生命周期,删除效率较低,执行压力也较大。



技术实现要素:

有鉴于此,本发明提供一种数据清理方法、装置及设备、存储介质,提升数据清理效率。

本发明第一方面提供一种数据清理方法,应用于网络附属存储nas设备,所述nas设备存储有相连接的云存储设备中每一文件数据的文件元数据和目录元数据,所述文件元数据用于描述文件数据,所述目录元数据用于描述文件数据所属的目录;

该方法包括:

接收云存储设备发送的过期时间点;所述过期时间点是由所述云存储设备按照设定清理周期清理过期文件数据后发送的,所述过期时间点是指清理过期文件数据的时间点;

依据所述过期时间点清理本设备存储的过期的文件元数据,在完成清理本设备存储的过期的文件元数据之后,依据所述过期时间点清理本设备存储的过期的目录元数据。

根据本发明的一个实施例,

依据所述过期时间点清理本设备存储的过期的文件元数据,包括:

从本设备存储的每一文件元数据表中查找出满足以下条件的目标文件元数据:创建时间与所述过期时间点之间的时长超过设定存储周期;

在目标文件元数据的数量n大于设定数量m时,分批次从文件元数据表中删除目标文件元数据,每次删除的目标文件元数据的数量小于或等于m;

在目标文件元数据的数量n小于或等于设定数量m时,直接从文件元数据表中删除n个目标文件元数据。

根据本发明的一个实施例,

依据所述过期时间点清理本设备存储的过期的目录元数据,包括:

确定满足以下条件的主目录:创建时间与过期时间点之间的时长超过设定存储周期;

依据过期时间点确定清理条件,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据;所述指定顺序为从所述主目录下的第一目录到第二目录的顺序,所述第一目录为所述第二目录的子目录;

每查找到一目标目录元数据,从所述目录元数据表中删除该目标目录元数据。

根据本发明的一个实施例,

目录元数据至少包括:目录标识id;

按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据,包括:

依据目录元数据表中的目录元数据构建第一目录树,所述第一目录树的根节点表示主目录、叶子节点表示主目录下的所有目录,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一叶子节点上记录了目录的目录id和创建时间;

采用后序遍历算法遍历所述第一目录树的叶子节点;

每遍历到一个叶子节点,当该叶子节点中的创建时间与所述过期时间点之间的时长超过所述设定存储周期时,检查该叶子节点表示的目录是否为空目录,如果是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

根据本发明的一个实施例,

目录元数据至少包括:目录标识id;

按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据,包括:

依据目录元数据表中的目录元数据构建第二目录树,所述第二目录树的根节点表示主目录、叶子节点表示主目录下的所有第三目录,所述第三目录的创建时间与所述过期时间点之间的时长超过所述设定存储周期,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一节点上记录了目录的目录id;

采用后序遍历算法遍历所述第二目录树的叶子节点;

每遍历到一个叶子节点,检查该叶子节点表示的目录是否为空目录,若是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

根据本发明的一个实施例,

所述文件元数据至少包括:对应文件数据所在目录的目录id;

检查该叶子节点表示的目录是否为空目录,包括:

检查所述文件元数据表中是否存在该叶子节点中的目录id;

若不存在,检查所述目录元数据表中是否存在该叶子节点表示目录的子目录的目录id,若否,确定该叶子节点表示的目录为空目录。

本发明第二方面提供一种数据清理装置,应用于网络附属存储nas设备,所述nas设备存储有相连接的云存储设备中每一文件数据的文件元数据和目录元数据,所述文件元数据用于描述文件数据,所述目录元数据用于描述文件数据所属的目录;

该装置包括:

过期时间点接收模块,用于接收云存储设备发送的过期时间点;所述过期时间点是由所述云存储设备按照设定清理周期清理过期文件数据后发送的,所述过期时间点是指清理过期文件数据的时间点;

元数据清理模块,用于依据所述过期时间点清理本设备存储的过期的文件元数据,在完成清理本设备存储的过期的文件元数据之后,依据所述过期时间点清理本设备存储的过期的目录元数据。

根据本发明的一个实施例,

所述元数据清理模块依据所述过期时间点清理本设备存储的过期的文件元数据时,具体用于:

从本设备存储的每一文件元数据表中查找出满足以下条件的目标文件元数据:创建时间与所述过期时间点之间的时长超过设定存储周期;

在目标文件元数据的数量n大于设定数量m时,分批次从文件元数据表中删除目标文件元数据,每次删除的目标文件元数据的数量小于或等于m;

在目标文件元数据的数量n小于或等于设定数量m时,直接从文件元数据表中删除n个目标文件元数据。

根据本发明的一个实施例,

所述元数据清理模块依据所述过期时间点清理本设备存储的过期的目录元数据时,具体用于:

确定满足以下条件的主目录:创建时间与过期时间点之间的时长超过设定存储周期;

依据过期时间点确定清理条件,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据;所述指定顺序为从所述主目录下的第一目录到第二目录的顺序,所述第一目录为所述第二目录的子目录;

每查找到一目标目录元数据,从所述目录元数据表中删除该目标目录元数据。

根据本发明的一个实施例,

目录元数据至少包括:目录标识id;

所述元数据清理模块按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据时,具体用于:

依据目录元数据表中的目录元数据构建第一目录树,所述第一目录树的根节点表示主目录、叶子节点表示主目录下的所有目录,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一叶子节点上记录了目录的目录id和创建时间;

采用后序遍历算法遍历所述第一目录树的叶子节点;

每遍历到一个叶子节点,当该叶子节点中的创建时间与所述过期时间点之间的时长超过所述设定存储周期时,检查该叶子节点表示的目录是否为空目录,如果是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

根据本发明的一个实施例,

目录元数据至少包括:目录标识id;

所述元数据清理模块按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据时,具体用于:

依据目录元数据表中的目录元数据构建第二目录树,所述第二目录树的根节点表示主目录、叶子节点表示主目录下的所有第三目录,所述第三目录的创建时间与所述过期时间点之间的时长超过所述设定存储周期,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一节点上记录了目录的目录id;

采用后序遍历算法遍历所述第二目录树的叶子节点;

每遍历到一个叶子节点,检查该叶子节点表示的目录是否为空目录,若是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

根据本发明的一个实施例,

所述文件元数据至少包括:对应文件数据所在目录的目录id;

所述元数据清理模块检查该叶子节点表示的目录是否为空目录时,具体用于:

检查所述文件元数据表中是否存在该叶子节点中的目录id;

若不存在,检查所述目录元数据表中是否存在该叶子节点表示目录的子目录的目录id,若否,确定该叶子节点表示的目录为空目录。

本发明第三方面提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例所述的数据清理方法。

本发明第四方面一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例所述的数据清理方法。

本发明实施例具有以下有益效果:

本发明实施例中,云存储设备可以按照设定清理周期定期清理过期文件数据,同时会将清理过期文件数据的过期时间点发送给nas设备,nas设备可以依据过期时间点对本设备存储的过期的文件元数据和目录元数据进行清理,保证文件数据和文件数据相关的元数据的生命周期的一致性。整个数据清理过程中,无需依赖于用户的一个个指示来删除,减轻了云存储设备的执行压力和nas设备的管理压力,大大提升了删除效率。

并且,nas设备先清理过期的文件元数据,再清理过期的目录元数据,可以保证在清理目录元数据时无需考虑目录下是否有过期文件数据,即目录元数据清理时无需再去考虑文件元数据是否要删除,简化了目录元数据的清理逻辑,可以高效清除目录存储设备中过期的元数据。

附图说明

图1是本发明一实施例的一种应用场景示意图;

图2是本发明一实施例的数据清理方法的流程示意图;

图3是本发明一实施例的数据清理装置的结构框图;

图4是本发明一实施例的一种交互示意图;

图5是本发明一实施例的多线程从各文件元数据表中删除目标文件元数据的示意图;

图6是本发明一实施例的第一目录树的示意图;

图7是本发明一实施例的缓存队列的示意图;

图8是本发明一实施例的电子设备的结构框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本发明范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本发明实施例中,nas设备可以是一个由若干nas节点组成的集群。参看图1,nas设备可以包括若干nas节点,这些节点可以协同来提供存储等相关服务。nas设备处于客户端和云存储设备之间,一方面,nas设备的底层连接云存储设备,nas设备与云存储设备构成了一个分布式文件系统,nas设备中的所有目录元数据用于构成云存储设备中所有文件数据的文件系统目录,文件系统目录可以用来维护nas设备中的文件元数据,另一个方面,nas设备的应用层连接客户端,为客户端用户提供nas存储服务,nas设备与客户端之间可以采用cifs或nfs协议进行通信。

nas简单说就是连接在网络上、具备资料存储功能的装置,也称为“网络存储器”。云存储设备可以是由多台存储服务器虚拟出的一个系统。

安防行业的数据一般存储周期为3个月左右,数据存储周期到了以后,需要进行清理,以便释放出有效的空间来写入新的数据。清理数据包含两个部分:一方面,需要清理后端云存储设备中的文件数据,释放出实际的存储空间;另一方面,需要清理nas设备中与这些文件数据相关的元数据,避免用户还可以检索到失效的文件数据。

相关的数据清理方式中,结合图1来说,用户在客户端输入某条过期文件数据的删除指示,nas设备收到删除指示后,按照删除指示从nas设备中删除该条过期文件数据的元数据,并控制云存储设备删除该条过期文件数据。安防行业周期内的文件数据量往往是巨大的,每一条数据都要通过用户指示来删除,nas设备的应用层的管理(包含删除和控制等操作)压力大,而且在云存储设备中会产生大量的删除操作,对云存储设备造成较大的执行压力,无法发挥云存储设备的批量处理特性,整体来说,数据清理效率很低。

为了解决上述清理效率低的问题,可利用云存储设备自身的批量处理性能删除云存储设备上的过期文件数据,但是如何清理nas设备中的元数据是个较困难的问题,本发明实施例中可以解决该技术问题。

下面对本发明实施例的数据清理方法进行更具体的描述,但不应以此为限。

在一个实施例中,参看图2,数据清理方法应用于网络附属存储nas设备,所述nas设备存储有相连接的云存储设备中每一文件数据的文件元数据和目录元数据,所述文件元数据用于描述文件数据,所述目录元数据用于描述文件数据所属的目录;该方法包括:

s100:接收云存储设备发送的过期时间点;所述过期时间点是由所述云存储设备按照设定清理周期清理过期文件数据后发送的,所述过期时间点是指清理过期文件数据的时间点;

s200:依据所述过期时间点清理本设备存储的过期的文件元数据,在完成清理本设备存储的过期的文件元数据之后,依据所述过期时间点清理本设备存储的过期的目录元数据。

如前所述,nas设备可以是由多个nas节点组成的集群。集群作为一个整体进行数据清理时,可以由一个主控nas节点来负责数据清理任务的调度,由所有nas节点来协同完成数据清理工作,具体不限于此。

步骤s100中,接收云存储设备发送的过期时间点;所述过期时间点是由所述云存储设备按照设定清理周期清理过期文件数据后发送的,所述过期时间点是指清理过期文件数据的时间点。

设定清理周期可以是用户设置的,云存储设备可以按照设定清理周期定期清理过期文件数据。设定清理周期的具体数值可以根据需要进行设置。比如,可以将设定清理周期可以为一天,如此,云存储设备可以每天删除一次过期文件数据。

云存储设备中可以启动计时器,每当计时的时长达到设定清理周期时,触发一次清理过期文件数据的操作,并重新开始计时。如此,云存储设备可以每过一个设定清理周期便清理一次过期文件数据。

云存储设备每次删除过期文件数据的时间(即过期时间点)是不一样的,所以,每次删除的过期文件数据不同。过期文件数据是从存入云存储设备的时间与所述过期时间点之间的时长超过设定存储周期的文件数据。

比如,2019-7-17删除的过期文件数据是2019-7-17过期的,即文件数据从存入云存储设备的时间与2019-7-17之间的时长超过设定存储周期,过期时间点为2019-7-17;而2019-7-18删除的过期文件数据是2019-7-18过期的,即文件数据从存入云存储设备的时间与2019-7-18之间的时长超过设定存储周期,过期时间点为2019-7-18。

设定存储周期同样可以由用户设置,具体数值可以根据需要进行设置。比如,在安防领域中,设定存储周期可以为3个月左右,比如,2019-7-17清理的过期文件数据是2019-4-17之前存入云存储设备中的文件数据。

云存储设备对过期文件数据的清理方式,比如可以是,利用云存储设备自身的批量特性,批量删除过期文件数据。由于云存储设备可以批量删除过期文件数据,无需按照指示一个一个删除,减轻了云存储设备的执行压力,提升了云存储设备的数据清理效率。

云存储设备每次完成所有过期文件数据的删除操作时,都会将过期时间点发送给nas设备。比如,在2019-7-17删除过期文件数据时,将过期时间点2019-7-17发送给nas设备;在2019-7-18删除过期文件数据时,将过期时间点2019-7-18发送给nas设备。

步骤s200中,依据所述过期时间点清理本设备存储的过期的文件元数据,在完成清理本设备存储的过期的文件元数据之后,依据所述过期时间点清理本设备存储的过期的目录元数据。

nas设备中可以设置有周期清理模块,可以调用周期清理模块来实现上述步骤s200。

文件元数据用于描述文件数据。目录元数据用于描述文件数据所在目录。通常来说,在云存储设备中存储文件数据时,会在nas设备中创建该文件数据的文件元数据,与此同时,会在nas设备中创建相应的目录元数据,形成文件数据所在的目录。目录可以是逻辑目录,指示了文件数据所在位置。

文件数据过期时,相应的文件元数据和目录元数据也会过期。所以,在云存储设备中清理掉过期文件数据后,nas设备中也应对过期的文件元数据和目录元数据进行清理。

nas设备基于过期时间点可以从本设备中找出过期的文件元数据和目录元数据进行清理,这些元数据是与过期文件数据相关的数据。

但是,在目录下存在子文件时,该目录的目录元数据是不可以被删除的。为此,本实施例中,在清理流程上是先清理文件元数据,然后再清理目录元数据。

具体来说,由于目录元数据的清理是在完成清理文件元数据的操作后进行的,需要被清理的文件元数据已先被清理掉,所以,在清理目录元数据的时候,不需要考虑目录下的子文件是否过期,因为剩下的文件都是不过期,假使一个目录存在子文件,那么该目录的目录元数据肯定是不能被删除的。

如此,整个清理过程中,清理目录元数据的逻辑便可以得到简化,从而较大简化整个清理过程的复杂度。

本发明实施例中,云存储设备可以按照设定清理周期定期清理过期文件数据,同时会将清理过期文件数据的过期时间点发送给nas设备,nas设备可以依据过期时间点对本设备存储的过期的文件元数据和目录元数据进行清理,保证文件数据和文件数据相关的元数据的生命周期的一致性。整个数据清理过程中,无需依赖于用户的一个个指示来删除,减轻了云存储设备的执行压力和nas设备的管理压力,大大提升了删除效率。

并且,nas设备先清理过期的文件元数据,再清理过期的目录元数据,可以保证在清理目录元数据时无需考虑目录下是否有过期文件数据,即目录元数据清理时无需再去考虑文件元数据是否要删除,简化了目录元数据的清理逻辑,可以高效清除目录存储设备中过期的元数据。

在一个实施例中,上述方法流程可由数据清理装置100执行,如图3所示,数据清理装置100可以包含2个模块:过期时间点接收模块101和元数据清理模块102。过期时间点接收模块101用于执行上述步骤s100,元数据清理模块102用于执行上述步骤s200。

结合图4来说本发明实施例的一种交互情况。用户可以在客户端上设置设定清理周期,客户端将该设定清理周期下发给nas设备;nas设备再将该设定清理周期下发给云存储设备。云存储设备收到设定清理周期后,每过一个设定清理周期都会清理一次过期文件数据,并将清理过期文件数据的过期时间点通知给nas设备;nas设备接收到过期时间点后,会依据过期时间点清理过期的文件元数据和目录元数据,保证nas设备中的元数据与云存储设备中的文件数据的生命周期的一致性。

在一个实施例中,步骤s200中,依据所述过期时间点清理本设备存储的过期的文件元数据,包括以下步骤:

s201:从本设备存储的每一文件元数据表中查找出满足以下条件的目标文件元数据:创建时间与所述过期时间点之间的时长超过设定存储周期;

s202:在目标文件元数据的数量n大于设定数量m时,分批次从文件元数据表中删除目标文件元数据,每次删除的目标文件元数据的数量小于或等于m;

s203:在目标文件元数据的数量n小于或等于设定数量m时,直接从文件元数据表中删除n个目标文件元数据。

文件元数据记录在nas设备存储的至少一个文件元数据表中。所有文件元数据表可以存储在一个完整数据库(未被分成多个分库)中。当然,文件元数据表可以分在不同的分库中保存,不同分库位于nas设备的不同节点中,对于每一个分库都可执行上述步骤s201-s203。

步骤s201中,从本设备存储的每一文件元数据表中查找出满足以下条件的目标文件元数据:创建时间与所述过期时间点之间的时长超过设定存储周期。

文件元数据可以至少包括文件标识id和创建时间,文件id可以唯一标识文件数据,创建时间即创建文件元数据的时间。在查找目标文件元数据时,可以从每一文件元数据表中查找出所有目标文件id,所述目标文件id所在表项中的创建时间与过期时间点之间的时长超过设定存储周期;将文件元数据表中包含目标文件id的文件元数据确定为目标文件元数据。当然,上述查找方式仅是一种举例,实际还可以以其他信息作为参考或者结合其他信息来查找。

本实施例中,主要用到了文件元数据的文件id和文件元数据创建时间,文件元数据还可以包括:文件名(不同文件数据可能有重名,所以引入了文件id来标识文件数据)、文件数据的大小、读写权限、文件数据所在目录的目录标识id等。上述仅是文件元数据的举例,并不作为限制。

步骤s202中,在目标文件元数据的数量n大于设定数量m时,分批次从文件元数据表中删除目标文件元数据,每次删除的目标文件元数据的数量小于或等于m。

比如,设定数量m为10k条,而目标文件元数据的数量n为100k条,那么需要分批次从文件元数据表中删除目标文件元数据,每次删除的目标文件元数据比如可以为10k条,当然也可以小于10k条。

步骤s203中,在目标文件元数据的数量n小于或等于设定数量m时,直接从文件元数据表中删除n个目标文件元数据。

比如,设定数量m为10k条,而目标文件元数据的数量n为9k条,那么可以直接从文件元数据表中删除9k个目标文件元数据。

由于集群nas系统是采用关系型数据库分库分表存储文件元数据的,因而,本实施例中,当收到过期时间点后,周期清理模块可以针对每个分库启动一个清理线程,进行过期文件元数据扫描,检查出过期文件的id,然后再批量地删除这些过期文件元数据。

如图5所示,nas设备的数据库被分成三个分库db_1、db_2、db_3,每个分库上可以有至少一个文件元数据表,这三个分库db_1、db_2、db_3可以分布在不同的nas节点上,周期清理模块分别对db_1、db_2、db_3启动清理线程,每一个清理线程执行的流程如下:对分库中的文件元数据表进行扫描并查找出所有目标文件元数据;在找出的目标文件元数据的数量大于10k时,分批地从所述文件元数据表中删除所述目标文件元数据,比如每次从文件元数据表中删除10k条目标文件元数据,在找出的目标文件元数据的数量小于等于10k时,从文件元数据表中删除所有目标文件元数据。

本实施例中,在从文件元数据表中查找出所有目标文件元数据之后,在目标文件元数据的数量大于设定数量时,可以分批次地从所述文件元数据表中删除目标文件元数据,批量删除相比于找出一条删除一条而言,操作效率更高;而且,分批次删除可以避免对数据库造成太大压力,比如,有100k条数据需要删除,一次性删除100k可能会导致数据库处理不过来而瘫痪,而分批次删除则可以避免这种情况的出现。

在一个实施例中,步骤s200中,依据所述过期时间点清理本设备存储的过期的目录元数据,包括:

s211:确定满足以下条件的主目录:创建时间与过期时间点之间的时长超过设定存储周期;

s212:依据过期时间点确定清理条件,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据;所述指定顺序为从所述主目录下的第一目录到第二目录的顺序,所述第一目录为所述第二目录的子目录;

s213:每查找到一目标目录元数据,从所述目录元数据表中删除该目标目录元数据。

目录元数据记录在nas设备存储的目录元数据表中。每一个目录具有对应的目录元数据,目录元数据可以用来描述相应目录。

在以下两种情况下,某个目录的目录元数据还不能被删除:第一,该目录还没有过期;第二,该目录下存在还未过期的子文件(包括文件数据、文件元数据)或子目录。由于过期的文件元数据已经全部被删除了,即在清理过期的目录元数据时,目录中不会存在过期的文件元数据,所以,但凡一个目录下存在子文件,该目录就不可以被删除。

步骤s211中,确定满足以下条件的主目录:创建时间与过期时间点之间的时长超过设定存储周期。

一个目录的创建时间必然是早于该目录的子目录的创建时间。所以,本实施例中,先检查主目录是否过期,如果主目录都还未过期,那么主目录下的所有目录都不可能过期,就无需再继续执行;如果主目录过期,那么还需要进一步从主目录下找出需要删除的目录。

主目录的创建时间与过期时间点之间的时长超过设定存储周期,说明该主目录已经过期。

目录元数据可以包括目录标识id和创建时间,该创建时间即目录元数据的创建时间。一般来说,目录的创建时间与该目录的目录元数据的创建时间是相同的,所以目录元数据中的创建时间可以作为目录的创建时间。

因而,在检查主目录是否满足创建时间与过期时间点之间的时长超过设定存储周期的条件时,可以检查主目录的目录元数据中的创建时间与过期时间点之间的时长是否超过设定存储周期,如果是,那么该主目录满足该条件。

可以理解,目录元数据除了目录标d和创建时间,还可以包括其他信息,比如:读写权限、父目录的目录id等。

步骤s212中,依据过期时间点确定清理条件,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据;所述指定顺序为从所述主目录下的第一目录到第二目录的顺序,所述第一目录为所述第二目录的子目录。

步骤s213中,每查找到一目标目录元数据,从所述目录元数据表中删除该目标目录元数据。

一个目录的目录元数据可以被删除的前提,一方面是该目录下不能有子文件,由于过期文件数据和过期的文件元数据都已经被删除了,所以这个方面在删除过期的目录元数据时可以不考虑;另一方面,该目录不能有子目录,也就是不能有子目录的目录元数据。

所以,本实施例中,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据,并且每查找到一目标目录元数据,就从目录元数据表中删除该目标目录元数据。一个目录的目录元数据被删除,那么,该目录也就不存在了,即该目录为随目录元数据被删除而被删除。

指定顺序为从所述主目录下的第一目录到第二目录的顺序,所述第一目录为所述第二目录的子目录。换言之,按照先子目录后父目录的顺序进行目录元数据的清理,先清理子目录的目录元数据,然后再清理父目录的目录元数据,可以避免在清理父目录的时候还需要检查子目录是否过期。

指定顺序具体来说,可以从主目录下不存在子目录的目录s1开始查找,然后查找该目录s1的父目录s2,再查找该父目录s2的父目录s3,逐级往目录结构的顶层查找,直至主目录为止。

由于是按照指定顺序清理查找并清理目标目录元数据的,满足清理条件的子目录先被删除了,所以在检查该子目录的父目录是否满足清理条件时,只需要检查该父目录是否存在子目录、及该父目录是否过期即可,避免在清理父目录的时候还需要检查子目录是否过期。

在一个实施例中,目录元数据至少包括:目录标识id;

步骤s212中,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据,包括以下步骤:

s2121:依据目录元数据表中的目录元数据构建第一目录树,所述第一目录树的根节点表示主目录、叶子节点表示主目录下的所有目录,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一叶子节点上记录了目录的目录id和创建时间;

s2122:采用后序遍历算法遍历所述第一目录树的叶子节点;

s2123:每遍历到一个叶子节点,当该叶子节点中的创建时间与所述过期时间点之间的时长超过所述设定存储周期时,检查该叶子节点表示的目录是否为空目录,如果是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

步骤s2121中,依据目录元数据表中的目录元数据构建第一目录树。

第一目录树上的根节点表示主目录,所有叶子节点表示主目录下的所有目录(包括主目录的子目录、该子目录的子目录等等),每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录。第一目录树可以用来表示以主目录为最顶层目录的目录结构。

每一叶子节点上记录了目录的目录id和创建时间,当然,还可以记录叶子节点所表示目录的其他信息,比如名称等,具体内容不限。

构建第一目录树的方式比如包括:建立根节点,将主目录的信息记录至根节点中;查找出主目录的子目录(目录元数据表中包含主目录的目录id的目录元数据对应的目录),根据找出的子目录数量建立根节点下相应数量的第一级叶子节点,将找出的各子目录的目录id和创建时间记录至各第一级叶子节点中;再查找出第一级叶子节点表示目录的子目录(目录元数据表中包含第一级叶子节点中的目录id的目录元数据对应的目录),根据找出的子目录数量建立第一级叶子节点下相应数量的第二级叶子节点,将本次找出的各子目录的目录id和创建时间记录至各第二级叶子节点中;如此递归,直至建立各个分支下表示最后一级子目录(最后一级目录为不存在子目录的目录)的叶子节点为止,构建出第一目录树。

第一目录树可以如图6所示,根节点为a1,第一级叶子节点包括b1、b2、b3,第二级叶子节点包括c1、c2、c3,第三级叶子节点包括d1、d2、d3,其中,b1、b2、b3表示的目录是a1表示目录的子目录,c1、c2、c3表示的目录是b2表示目录的子目录,d1、d2、d3表示的目录是c3表示目录的子目录。当然,图6中示出的第一目录树仅是示例性的,实际目录结构可能更复杂,所以第一目录树也可能有更多的分支及叶子层级。

步骤s2122中,采用后序遍历算法遍历所述第一目录树的叶子节点。

后序遍历(lrd)是二叉树遍历的一种,也叫做后根遍历、后序周游,可记做左右根。在二叉树中,先左后右再根,即首先遍历左子树,然后遍历右子树,最后访问根结点。

继续参看图6,采用后序遍历算法遍历所述第一目录树的叶子节点,遍历的顺序依次为b1、c1、c2、d1、d2、d3、c3、b2、b1,该顺序即为先子目录后父目录的顺序。当然,在构建第一目录树时,同一级的叶子节点的左右顺序是可以调换的,如此遍历顺序也会相应进行调整,比如遍历的顺序依次为b3、d3、d2、d1、c3、c2、c1、b2、b1。

步骤s2123中,每遍历到一个叶子节点,当该叶子节点中的创建时间与所述过期时间点之间的时长超过所述设定存储周期时,检查该叶子节点表示的目录是否为空目录,如果是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

每遍历到一个叶子节点,便检查包含该叶子节点中目录id的目录元数据是否为满足清理条件的目标目录元数据。

若遍历到的叶子节点中的创建时间与过期时间点之间的时长超过设定存储周期,说明该叶子节点表示的目录已经过期,需要检查该目录是否为空目录,即该目录下是否存在子文件或子目录,如果是,那么包含该叶子节点中目录id的目录元数据为满足清理条件的目标目录元数据。

如果遍历到的叶子节点中的创建时间与过期时间点之间的时长未超过设定存储周期,或者,遍历到的叶子节点表示的目录不是空目录,那么包含该叶子节点中目录id的目录元数据不是满足清理条件的目标目录元数据,不应被删除。

可选的,如图7所示,可以将叶子节点按照被遍历到的顺序入队到缓存队列中。在步骤s2123中,可以将缓存队列中的叶子节点一一出队,当出队的叶子节点中的创建时间与所述过期时间点之间的时长超过所述设定存储周期时,检查该叶子节点表示的目录是否为空目录,如果是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。由于队列的特性是先入先出,所以叶子节点从缓存队列中出队的顺序和被遍历的顺序是相同的,也是先子目录后父目录的顺序,所以两者执行的结果是相同的。

在一个实施例中,目录元数据至少包括:目录标识id;

步骤s212中,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据,包括:

s2124:依据目录元数据表中的目录元数据构建第二目录树,所述第二目录树的根节点表示主目录、叶子节点表示主目录下的所有第三目录,所述第三目录的创建时间与所述过期时间点之间的时长超过所述设定存储周期,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一节点上记录了目录的目录id;

s2125:采用后序遍历算法遍历所述第二目录树的叶子节点;

s2126:每遍历到一个叶子节点,检查该叶子节点表示的目录是否为空目录,若是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

本实施例中的第二目录树与前述实施例中的第一目录树不同之处在于,第二目录树上的叶子节点表示的目录都是过期的目录,即目录的创建时间与过期时间点之间的时长超过了设定存储周期。

因此,在步骤s2126中,不需要再检查遍历到的该叶子节点中的创建时间与所述过期时间点之间的时长是否超过所述设定存储周期,而是直接检查该叶子节点表示的目录是否为空目录,若是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

本实施例的其他内容可以参看前述实施例中的内容,相同或相似之处在此不再赘述。

在一个实施例中,所述文件元数据至少包括:对应文件数据所在目录的目录id;

步骤s2123或步骤s2126中,检查该叶子节点表示的目录是否为空目录,包括:

检查所述文件元数据表中是否存在该叶子节点中的目录id;

若不存在,检查所述目录元数据表中是否存在该叶子节点表示目录的子目录的目录id,若否,确定该叶子节点表示的目录为空目录。

如果文件元数据表中存在该叶子节点中的目录id,说明有文件元数据处于该叶子节点表示的目录下,即该叶子节点表示的目录下存在子文件,该目录不能被删除。

如果文件元数据表中不存在该叶子节点中的目录id,那么说明该叶子节点表示的目录下不存在子文件,继续检查所述文件元数据表中是否存在该叶子节点中的目录id,如果是,那么该叶子节点表示的目录下还存在子目录,该目录不能被删除,如果否,那么该叶子节点表示的目录下不存在子目录,该目录既不存在子目录也不存在子文件,所以该目录为空目录。

本实施例中,检查该叶子节点表示的目录是否为空目录的方式只是举例,当然还可以包括其他方式,只要能够检查出一个目录是否为空目录即可。如果一个目录中除了子目录和子文件,还可能存在其他信息,那么检查是否为空目录时,还可以引入与该其他信息相关的判断条件,具体不作为限制。

本发明还提供一种数据清理装置,在一个实施例中,该数据清理装置应用于网络附属存储nas设备,所述nas设备存储有相连接的云存储设备中每一文件数据的文件元数据和目录元数据,所述文件元数据用于描述文件数据,所述目录元数据用于描述文件数据所属的目录。

参看图3,该数据清理装置100可以包括:

过期时间点接收模块101,用于接收云存储设备发送的过期时间点;所述过期时间点是由所述云存储设备按照设定清理周期清理过期文件数据后发送的,所述过期时间点是指清理过期文件数据的时间点;

元数据清理模块102,用于依据所述过期时间点清理本设备存储的过期的文件元数据,在完成清理本设备存储的过期的文件元数据之后,依据所述过期时间点清理本设备存储的过期的目录元数据。

在一个实施例中,

所述元数据清理模块依据所述过期时间点清理本设备存储的过期的文件元数据时,具体用于:

从本设备存储的每一文件元数据表中查找出满足以下条件的目标文件元数据:创建时间与所述过期时间点之间的时长超过设定存储周期;

在目标文件元数据的数量n大于设定数量m时,分批次从文件元数据表中删除目标文件元数据,每次删除的目标文件元数据的数量小于或等于m;

在目标文件元数据的数量n小于或等于设定数量m时,直接从文件元数据表中删除n个目标文件元数据。

在一个实施例中,

所述元数据清理模块依据所述过期时间点清理本设备存储的过期的目录元数据时,具体用于:

确定满足以下条件的主目录:创建时间与过期时间点之间的时长超过设定存储周期;

依据过期时间点确定清理条件,按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据;所述指定顺序为从所述主目录下的第一目录到第二目录的顺序,所述第一目录为所述第二目录的子目录;

每查找到一目标目录元数据,从所述目录元数据表中删除该目标目录元数据。

在一个实施例中,

目录元数据至少包括:目录标识id;

所述元数据清理模块按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据时,具体用于:

依据目录元数据表中的目录元数据构建第一目录树,所述第一目录树的根节点表示主目录、叶子节点表示主目录下的所有目录,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一叶子节点上记录了目录的目录id和创建时间;

采用后序遍历算法遍历所述第一目录树的叶子节点;

每遍历到一个叶子节点,当该叶子节点中的创建时间与所述过期时间点之间的时长超过所述设定存储周期时,检查该叶子节点表示的目录是否为空目录,如果是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

在一个实施例中,

目录元数据至少包括:目录标识id;

所述元数据清理模块按照指定顺序从本设备存储的目录元数据表中查找满足清理条件的目标目录元数据时,具体用于:

依据目录元数据表中的目录元数据构建第二目录树,所述第二目录树的根节点表示主目录、叶子节点表示主目录下的所有第三目录,所述第三目录的创建时间与所述过期时间点之间的时长超过所述设定存储周期,每一叶子节点表示的目录为该叶子节点的父节点表示目录的子目录,每一节点上记录了目录的目录id;

采用后序遍历算法遍历所述第二目录树的叶子节点;

每遍历到一个叶子节点,检查该叶子节点表示的目录是否为空目录,若是,将包含该叶子节点中目录id的目录元数据确定为所述目标目录元数据。

在一个实施例中,

所述文件元数据至少包括:对应文件数据所在目录的目录id;

所述元数据清理模块检查该叶子节点表示的目录是否为空目录时,具体用于:

检查所述文件元数据表中是否存在该叶子节点中的目录id;

若不存在,检查所述目录元数据表中是否存在该叶子节点表示目录的子目录的目录id,若否,确定该叶子节点表示的目录为空目录。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元。

本发明还提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的数据清理方法。

本发明数据清理装置的实施例可以应用在电子设备上。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,图8是本发明根据一示例性实施例示出的数据清理装置100所在电子设备的一种硬件结构图,除了图8所示的处理器510、内存530、接口520、以及非易失性存储器540之外,实施例中装置100所在的电子设备通常根据该电子采集设备的实际功能,还可以包括其他硬件,对此不再赘述。

本发明还提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中任意一项所述的数据清理方法。

本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。机器可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。机器可读存储介质的例子包括但不限于:相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1