CN115185891B - 文件***的数据管理方法及装置、电子设备及存储介质 - Google Patents
文件***的数据管理方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115185891B CN115185891B CN202211112469.5A CN202211112469A CN115185891B CN 115185891 B CN115185891 B CN 115185891B CN 202211112469 A CN202211112469 A CN 202211112469A CN 115185891 B CN115185891 B CN 115185891B
- Authority
- CN
- China
- Prior art keywords
- snapshot
- entry
- new
- difference
- version number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种文件***的数据管理方法及装置、电子设备及存储介质。该方法用于文件***,文件***的元数据包括多个目录项条目和多个节点条目,目录项条目包括原生目录项条目、快照目录项条目、新生目录项条目,节点条目包括原生节点条目、快照节点条目、新生节点条目。该方法包括:获取版本差异请求,版本差异请求用于获取第二比较版本号对应的快照与第一比较版本号对应的快照的差异元数据;根据差异类型,基于第一比较版本号和第二比较版本号,对新生目录项条目、新生节点条目、快照目录项条目、快照节点条目、原生目录项条目、原生节点条目中至少之一执行检索操作,并根据检索结果得到差异元数据。该数据管理方法可以提高获取差异元数据的性能和效率。
Description
技术领域
本公开的实施例涉及一种用于文件***的数据管理方法及装置、电子设备及存储介质。
背景技术
在存储领域中,随着数据体积的日益增长,数据备份的重要性逐渐凸显。对于存储***而言,存储数据并保证数据安全是其最基本的功能和要求。快照是一种数据备份方法,由于可以瞬间完成,实现数据的零窗口备份,因此快照成为众多数据备份技术中一种常用的、基础的数据备份技术。
快照是指关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照的主要作用是能够进行数据备份与恢复。当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复至某个可用的时间点的状态,由此可以满足企业对业务连续性和数据可靠性的要求。
发明内容
本公开至少一个实施例提供一种用于文件***的数据管理方法,其中,所述文件***的元数据包括多个目录项条目和多个节点条目;所述多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目,所述原生目录项条目记载所述文件***当前的组织信息,所述快照目录项条目记载所述文件***中当前不存在、在生成快照时存在的组织信息,所述新生目录项条目记载所述文件***中基于新建操作所生成的组织信息;所述多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目,所述原生节点条目记载所述文件***当前的文件属性信息,所述快照节点条目记载所述文件***中当前不存在、在生成快照时存在的文件属性信息,所述新生节点条目记载所述文件***中基于所述新建操作所生成的文件属性信息;所述方法包括:获取版本差异请求,其中,所述版本差异请求包括第一比较版本号和第二比较版本号,所述版本差异请求用于获取所述第二比较版本号对应的快照与所述第一比较版本号对应的快照的差异元数据;根据差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行检索操作,并根据检索结果得到所述差异元数据。
例如,在本公开一实施例提供的方法中,所述差异类型包括新建差异、删除差异和修改差异,所述新建差异是基于所述新建操作所产生的元数据差异,所述删除差异是基于删除操作所产生的元数据差异,所述修改差异是基于修改操作所产生的元数据差异。
例如,在本公开一实施例提供的方法中,所述新生目录项条目包括第一新生版本号,所述新生节点条目包括第二新生版本号;根据所述差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行所述检索操作,并根据所述检索结果得到所述差异元数据,包括:响应于所述差异类型为所述新建差异,对所述文件***所包含的所述新生目录项条目和所述新生节点条目进行检索,将位于目标版本范围内的第一新生版本号所对应的新生目录项条目以及位于所述目标版本范围内的第二新生版本号所对应的新生节点条目作为所述差异元数据;其中,所述目标版本范围是所述第一比较版本号和所述第二比较版本号之间的范围,所述目标版本范围的两个端点值分别为所述第一比较版本号和所述第二比较版本号。
例如,在本公开一实施例提供的方法中,所述快照目录项条目包括第一快照版本号,所述快照节点条目包括第二快照版本号;根据所述差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行所述检索操作,并根据所述检索结果得到所述差异元数据,包括:响应于所述差异类型为所述删除差异或所述修改差异,对所述文件***所包含的所述快照目录项条目进行检索,将位于目标版本范围内的第一快照版本号所对应的快照目录项条目作为所述差异元数据,其中,所述目标版本范围是所述第一比较版本号和所述第二比较版本号之间的范围,所述目标版本范围的两个端点值分别为所述第一比较版本号和所述第二比较版本号;对所述文件***所包含的所述快照节点条目进行检索,得到位于所述目标版本范围内的第二快照版本号所对应的快照节点条目;基于所得到的快照节点条目,查询所述文件***中是否存在对应的原生节点条目,并根据查询结果确定所述差异元数据。
例如,在本公开一实施例提供的方法中,基于所得到的快照节点条目,查询所述文件***中是否存在所述对应的原生节点条目,并根据所述查询结果确定所述差异元数据,包括:根据所得到的快照节点条目包含的索引节点编号,查询所述文件***中是否存在所述对应的原生节点条目,其中,所述对应的原生节点条目是指包含所述索引节点编号的原生节点条目;响应于所述文件***中存在所述对应的原生节点条目,获取所述对应的原生节点条目,并将所述对应的原生节点条目作为所述差异元数据;响应于所述文件***中不存在所述对应的原生节点条目,构建节点删除标识,并将所述节点删除标识作为所述差异元数据。
例如,在本公开一实施例提供的方法中,获取所述版本差异请求包括:通过用户命令行获取所述版本差异请求。
例如,在本公开一实施例提供的方法中,获取所述版本差异请求包括:通过应用程序接口以周期性的方式或非周期性的方式获取所述版本差异请求。
例如,本公开一实施例提供的方法还包括:响应于所述文件***被执行所述新建操作,创建与所述新建操作所针对的文件和/或文件夹对应的新生目录项条目和/或新生节点条目;其中,所述第一新生版本号和所述第二新生版本号表示所述新建操作所基于的快照版本。
例如,本公开一实施例提供的方法还包括:将所述差异元数据存储在差异数据库中。
例如,在本公开一实施例提供的方法中,所述差异数据库包括采用键值存储方式的数据库。
例如,本公开一实施例提供的方法还包括:响应于所述差异元数据已被存储在所述差异数据库中,返回针对所述版本差异请求的响应信息。
本公开至少一个实施例还提供一种用于文件***的数据管理装置,其中,所述文件***的元数据包括多个目录项条目和多个节点条目;所述多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目,所述原生目录项条目记载所述文件***当前的组织信息,所述快照目录项条目记载所述文件***中当前不存在、在生成快照时存在的组织信息,所述新生目录项条目记载所述文件***中基于新建操作所生成的组织信息;所述多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目,所述原生节点条目记载所述文件***当前的文件属性信息,所述快照节点条目记载所述文件***中当前不存在、在生成快照时存在的文件属性信息,所述新生节点条目记载所述文件***中基于所述新建操作所生成的文件属性信息;所述装置包括:获取单元,配置为获取版本差异请求,其中,所述版本差异请求包括第一比较版本号和第二比较版本号,所述版本差异请求用于获取所述第二比较版本号对应的快照与所述第一比较版本号对应的快照的差异元数据;处理单元,配置为根据差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行检索操作,并根据检索结果得到所述差异元数据。
本公开至少一个实施例还提供一种电子设备,包括本公开任一实施例提供的用于文件***的数据管理装置。
本公开至少一个实施例还提供一种电子设备,包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现本公开任一实施例提供的用于文件***的数据管理方法。
本公开至少一个实施例还提供一种存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时实现本公开任一实施例提供的用于文件***的数据管理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种文件***的目录项示意图;
图2A、图2B、图2C、图2D、图2E、图2F为本公开一些实施例提供的一种文件***的元数据的条目内容示意图;
图3为本公开一些实施例提供的一种用于文件***的数据管理方法的流程示意图;
图4为本公开一些实施例提供的一种用于文件***的数据管理方法的应用示意图;
图5为图3中步骤S20的一个示例的示意性流程图;
图6为图5中步骤S23的一个示例的示意性流程图;
图7为本公开一些实施例提供的一种用于文件***的数据管理方法的应用示意图;
图8为本公开一些实施例提供的一种用于文件***的数据管理方法的交互示意图;
图9为本公开一些实施例提供的一种用于文件***的数据管理装置的示意框图;
图10为本公开一些实施例提供的一种电子设备的示意框图;
图11为本公开一些实施例提供的另一种电子设备的示意框图;
图12为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在存储行业中,随着数据体积的日益增长,数据备份、远程复制等企业特性的重要性逐渐凸显。这些特性中获取元数据的数据差异通常要基于版本差异(snapdiff)实现。在文件***的远程复制、备份、快照回滚等一系列功能的实现中,可以基于snapdiff的方式来获取两个一致性时间点间的文件***元数据和数据差异。由于文件***中有复杂的元数据、数据等信息,导致快照(snap)和snapdiff的实现均较为复杂。如果使用全量同步的方法,即定期将主文件***的数据通过拷贝的方法同步到从节点,会造成同步时间长、无效同步多、主从集群性能损耗大等问题。如果snapdiff获取差量数据的方案不完整,也会周期性造成部分数据重复同步。
本公开至少一个实施例提供一种用于文件***的数据管理方法、用于文件***的数据管理装置、电子设备及存储介质。该数据管理方法可以快速定位差异元数据,可以避免元数据的全局遍历,提高获取差异元数据的性能和效率。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
本公开至少一个实施例提供一种用于文件***的数据管理方法。该文件***的元数据包括多个目录项条目和多个节点条目。多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目。原生目录项条目记载文件***当前的组织信息,快照目录项条目记载文件***中当前不存在、在生成快照时存在的组织信息,新生目录项条目记载文件***中基于新建操作所生成的组织信息。多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目。原生节点条目记载文件***当前的文件属性信息,快照节点条目记载文件***中当前不存在、在生成快照时存在的文件属性信息,新生节点条目记载文件***中基于新建操作所生成的文件属性信息。该数据管理方法包括:获取版本差异请求,版本差异请求包括第一比较版本号和第二比较版本号,版本差异请求用于获取第二比较版本号对应的快照与第一比较版本号对应的快照的差异元数据;根据差异类型,基于第一比较版本号和第二比较版本号,对新生目录项条目、新生节点条目、快照目录项条目、快照节点条目、原生目录项条目、原生节点条目中至少之一执行检索操作,并根据检索结果得到差异元数据。
例如,文件***通常包括数据和元数据。元数据是用于描述数据的数据(dataabout data,或称为meta data),主要描述数据属性的信息,用来支持例如指示存储位置、历史数据、资源查找、文件记录等功能。文件***的元数据例如包括目录项(dentry)和索引节点(inode)。目录项用于描述文件***中文件(或文件夹)的组织形式,索引节点为文件(或文件夹)的属性信息。在文件***中,每个文件都对应一个索引节点,以作为该文件的唯一编号,文件***通过索引节点编号(inodeid)来访问索引节点的信息。
例如,元数据中的目录项记录了文件名、上级目录等信息,将所有的目录项以父目录/子目录的方式连接起来,即可形成反映文件***组织信息的树状结构。例如,在一些示例中,如图1所示,利用该文件***的目录项,可以得到反映该文件***组织信息的树状结构,然后,利用文件(或文件夹)dir1、dir2、dir3、file1、file2的索引节点编号获取对应的索引节点的信息,从而可以读取到该文件***的完整信息。例如,在该示例中,dir1、dir2、dir3表示文件夹,file1、file2表示文件。
例如,本公开实施例提供的文件***的元数据包括多个目录项条目和多个节点条目。例如,目录项条目为前述的目录项(dentry),节点条目为前述的索引节点(inode)。
多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目,也即是,多个目录项条目划分为原生目录项条目、快照目录项条目、新生目录项条目这三类。
原生目录项条目记载该文件***当前的组织信息,原生目录项条目包括第一编辑版本号。例如,第一编辑版本号是指创建该原生目录项条目时的***版本号。***版本号例如根据生成快照的次数确定,也即是,若对文件***进行了4次生成快照操作,那么,该文件***具有4个版本,相应地,***版本号可以为(1)~(4)中的任意一个。
快照目录项条目记载该文件***中当前不存在、在生成快照时存在的组织信息,快照目录项条目包括第一快照版本号。例如,第一快照版本号是指该快照目录项条目对应于哪些版本的快照。例如,第一快照版本号可以采用数值区间的形式记载,该数值区间包括起点数和终点数,起点数小于或等于终点数。例如,该数值区间为半开半闭区间,起点数不属于该数值区间,终点数属于该数值区间。起点数为快照起始版本,终点数为快照截止版本。例如,第一快照版本号的数值区间可以包括多个子区间,每个子区间也为独立的数值区间,各个子区间之间可以彼此衔接,也可以彼此间隔,由此可以表示多样化的版本号。
例如,还是以对文件***进行了4次生成快照操作为例,***版本号为(1)~(4)中的任意一个,若该快照目录项条目是在版本(3)创建的,那么,该快照目录项条目的第一快照版本号为(0, 3]。也即是,该快照目录项条目对应的对象(可以是文件或文件夹)在第1次至第3次生成快照时都存在。例如,在该示例中,第一快照版本号以数值区间(0, 3]表示,0为起点数,3为终点数,也即是,快照起始版本为0,快照截止版本为3。
新生目录项条目记载该文件***中基于新建操作所生成的组织信息,新生目录项条目包括第一新生版本号。例如,在执行新建操作时,可以在对相应的原生目录项条目进行修改和更新的同时,创建对应的新生目录项条目,从而表示相应的文件/文件夹是新建产生的。例如,第一新生版本号表示新建操作所基于的快照版本,也即,表示创建该新生目录项条目时的***版本号。假设对文件***进行了4次生成快照操作,那么,该文件***具有4个版本,***版本号可以为(1)~(4)中的任意一个,若该新生目录项条目是在版本(3)时创建的,那么第一新生版本号为(3)。
多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目,也即是,多个节点条目划分为原生节点条目、快照节点条目、新生节点条目这三类。
原生节点条目记载该文件***当前的文件属性信息,原生节点条目包括第二编辑版本号。例如,第二编辑版本号是指创建或修改该原生节点条目时的***版本号,该***版本号的含义如上文所述,此处不再赘述。
快照节点条目记载该文件***中当前不存在、在生成快照时存在的文件属性信息,快照节点条目包括第二快照版本号。例如,第二快照版本号是指该快照节点条目对应于哪些版本的快照。例如,第二快照版本号可以采用数值区间的形式记载,该数值区间包括起点数和终点数,起点数小于或等于终点数。例如,该数值区间为半开半闭区间,起点数不属于该数值区间,终点数属于该数值区间。起点数为快照起始版本,终点数为快照截止版本。例如,第二快照版本号的数值区间可以包括多个子区间,每个子区间也为独立的数值区间,各个子区间之间可以彼此衔接,也可以彼此间隔,由此可以表示多样化的版本号。
例如,还是以对文件***进行了4次生成快照操作为例,***版本号为(1)~(4)中的任意一个,若该快照节点条目是在版本(3)创建的,那么,该快照节点条目的第二快照版本号为(0, 3]。也即是,该快照节点条目对应的对象(可以是文件或文件夹的属性信息)在第1次至第3次生成快照时都存在。
新生节点条目记载该文件***中基于新建操作所生成的文件属性信息,新生节点条目包括第二新生版本号。例如,在执行新建操作时,可以在对相应的原生节点条目进行修改和更新的同时,创建对应的新生节点条目,从而表示相应的文件/文件夹是新建产生的。例如,第二新生版本号表示新建操作所基于的快照版本,也即,表示创建该新生节点条目时的***版本号。假设对文件***进行了4次生成快照操作,那么,该文件***具有4个版本,***版本号可以为(1)~(4)中的任意一个,若该新生节点条目是在版本(3)时创建的,那么第二新生版本号为(3)。
需要说明的是,第一快照版本号和第二快照版本号都是指相应的快照条目对应于哪些版本的快照,这里,“第一”和“第二”仅是为了区分不同类型快照条目中的版本号,并不表示任何格式、顺序、数量、重要性。类似地,第一编辑版本号和第二编辑版本号都是指创建相应的原生条目时的***版本号,这里,“第一”和“第二”仅是为了区分不同类型原生条目中的版本号,并不表示任何格式、顺序、数量、重要性。类似地,第一新生版本号和第二新生版本号都是表示新建操作所基于的快照版本,这里,“第一”和“第二”仅是为了区分不同类型新生条目中的版本号,并不表示任何格式、顺序、数量、重要性。
需要说明的是,本公开的实施例中,第一快照版本号和第二快照版本号均以数值区间的形式记载。当该数值区间的起点数等于终点数时,则该数值区间表示一个单独的数值,该数值等于起点数,也等于终点数。因此,第一快照版本号和第二快照版本号可以为包含多个数值的区间,也可以仅为一个数值。
例如,文件***的元数据可以采用任意的方式存储,例如键值存储(Key-Value,KV)。在下文的说明中,结合图2A、图2B、图2C、图2D、图2E、图2F,以采用键值存储为例,对本公开实施例的各个条目的内容和格式进行说明,但这并不构成对本公开实施例的限制。图2A、图2B、图2C、图2D、图2E、图2F中的数据格式和数值均为示意性的,在实际应用中,对应于各项内容的数据格式和数值可以根据实际需求而定。
例如,原生目录项条目的存储格式为Key:/parent_inodeid/dname,Value:inodeid, v1。parent_inodeid表示父目录的索引节点编号,dname表示该条目对应的对象的名称,inodeid表示该对象的索引节点编号,v1表示第一编辑版本号。如图2A所示,该示例表示一个原生目录项条目的内容,parent_inodeid为D0001,dname为dir1.1,inodeid为0xD003,v1为(2)。需要说明的是,该存储格式仅为示意性的,用于表示原生目录项条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,快照目录项条目的存储格式为Key:S/parent_inodeid/dname,Value:inodeid, k1。S为快照标识符,用于区分多个目录项条目中的快照目录项条目。例如,快照目录项条目包括快照标识符,而原生目录项条目和新生目录项条目中不存在快照标识符,由此可以将快照目录项条目与原生目录项条目、新生目录项条目进行区分。当然,快照标识符可以采用任意适用的符号或字符,而不限于上文中的S,这可以根据实际需求而定,本公开的实施例对此不作限制。parent_inodeid表示父目录的索引节点编号,dname表示该条目对应的对象的名称,inodeid表示该对象的索引节点编号,k1表示第一快照版本号,k1为一个数值区间。如图2B所示,该示例表示一个快照目录项条目的内容,parent_inodeid为A000,dname为dir1,inodeid为0xD001,k1这一数值区间的起点数为1,终点数为2,也即k1为1~2。由于该条目中存在快照标识符S,因此可以识别出该条目为快照目录项条目。需要说明的是,该存储格式仅为示意性的,用于表示快照目录项条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,新生目录项条目的存储格式为Key:R/birthid/parent_inodeid/dname,Value:dentry_val。R为新生标识符,用于区分多个目录项条目中的新生目录项条目。例如,新生目录项条目包括新生标识符,而原生目录项条目和快照目录项条目中不存在新生标识符,由此可以将新生目录项条目与原生目录项条目、快照目录项条目进行区分。当然,新生标识符可以采用任意适用的符号或字符,而不限于上文中的R,这可以根据实际需求而定,本公开的实施例对此不作限制。birthid表示该新建操作所基于的快照版本,parent_inodeid表示父目录的索引节点编号,dname表示该条目对应的对象的名称,dentry_val表示该对象的索引节点编号。如图2C所示,该示例表示一个新生目录项条目的内容,birthid为(3),parent_inodeid为D001,dname为dir1.1,dentry_val为0xD003。由于该条目中存在新生标识符R,因此可以识别出该条目为新生目录项条目。需要说明的是,该存储格式仅为示意性的,用于表示新生目录项条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,原生节点条目的存储格式为Key:inodeid,Value:inodeid, v2。inodeid表示该条目对应的对象的索引节点编号,v2表示第二编辑版本号。如图2D所示,该示例表示一个原生节点条目的内容,inodeid为D001,v2为(3),除此之外,该条目中还存储有对象的属性信息(用inode表示)。需要说明的是,该存储格式仅为示意性的,用于表示原生节点条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,快照节点条目的存储格式为Key:S/inodeid,Value:inode, k2。S为快照标识符,用于区分多个节点条目中的快照节点条目。例如,快照节点条目包括快照标识符,而原生节点条目和新生节点条目中不存在快照标识符,由此可以将快照节点条目与原生节点条目、新生节点条目进行区分。当然,快照标识符可以采用任意适用的符号或字符,而不限于上文中的S,这可以根据实际需求而定,本公开的实施例对此不作限制。inodeid表示该对象的索引节点编号,inode 表示对象的属性信息,k2表示第二快照版本号,k2为一个数值区间。如图2E所示,该示例表示一个快照节点条目的内容,inodeid为D004,k2这一数值区间的起点数为1,终点数为5,也即k2为1~5。由于该条目中存在快照标识符S,因此可以识别出该条目为快照节点条目。需要说明的是,该存储格式仅为示意性的,用于表示快照节点条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,新生节点条目的存储格式为Key:R/birthid/inodeid,Value:inode。R为新生标识符,用于区分多个节点条目中的新生节点条目。例如,新生节点条目包括新生标识符,而原生节点条目和快照节点条目中不存在新生标识符,由此可以将新生节点条目与原生节点条目、快照节点条目进行区分。当然,新生标识符可以采用任意适用的符号或字符,而不限于上文中的R,这可以根据实际需求而定,本公开的实施例对此不作限制。birthid表示该新建操作所基于的快照版本,inodeid表示该对象的索引节点编号,inode 表示对象的属性信息。如图2F所示,该示例表示一个新生节点条目的内容,birthid为(3),inodeid为D001,该条目中还存储有对象的属性信息(用inode表示)。由于该条目中存在新生标识符R,因此可以识别出该条目为新生节点条目。需要说明的是,该存储格式仅为示意性的,用于表示新生节点条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,在其他示例中,也可以用不同的新生标识符分别表示新生目录项条目和新生节点条目。例如,可以用“R_D”作为新生目录项条目的新生标识符,用“R_I”作为新生节点条目的新生标识符,从而无需核查数据格式,直接根据新生标识符区分出新生目录项条目和新生节点条目。当然,在本公开的实施例中,新生目录项条目和新生节点条目也可以采用相同的符号(例如上文描述的“R”)作为新生标识符,通过核查数据格式从而可以区分新生目录项条目和新生节点条目,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,采用快照标识符区分多个目录项条目中的快照目录项条目,采用快照标识符区分多个节点条目中的快照节点条目,快照目录项条目和快照节点条目包括快照标识符,而原生目录项条目、原生节点条目、新生目录项条目、新生节点条目中不存在快照标识符。采用新生标识符区分多个目录项条目中的新生目录项条目,采用新生标识符区分多个节点条目中的新生节点条目,新生目录项条目和新生节点条目包括新生标识符,而原生目录项条目、原生节点条目、快照目录项条目、快照节点条目中不存在新生标识符。当然,本公开的实施例不限于此,也可以采用其他方式对原生的条目、快照的条目、新生的条目进行区分,这可以根据实际需求而定。
需要说明的是,本公开的实施例中,多个目录项条目和多个节点条目可以均采用键值存储方式进行存储,但这并不构成对本公开实施例的限制。例如,原生目录项条目、快照目录项条目、新生目录项条目、原生节点条目、快照节点条目、新生节点条目所采用的存储方式不限于键值存储方式,可以为任意适用的存储方式,当采用其他类型的存储方式时,上述各个条目的具体格式可以根据存储类型而调整,只需记载有相应的内容即可。图2A、图2B、图2C、图2D、图2E、图2F所示的格式仅为示意性的,各项内容是否存储在键字段或值字段,可以根据实际需求而调整,且各项内容的具体格式也可以根据实际需求而定,本公开的实施例对此不作限制。
图3为本公开一些实施例提供的一种用于文件***的数据管理方法的流程示意图。例如,该方法可以用于上文中结合图1、图2A、图2B、图2C、图2D、图2E、图2F所描述的文件***。该文件***例如存储在分布式网络附加存储(Network Attached Storage,NAS)***或其他任意的需要实现快照的***中,本公开的实施例对此不作限制。例如,在一些实施例中,如图3所示,该数据管理方法包括如下操作。
步骤S10:获取版本差异请求,其中,版本差异请求包括第一比较版本号和第二比较版本号,版本差异请求用于获取第二比较版本号对应的快照与第一比较版本号对应的快照的差异元数据;
步骤S20:根据差异类型,基于第一比较版本号和第二比较版本号,对新生目录项条目、新生节点条目、快照目录项条目、快照节点条目、原生目录项条目、原生节点条目中至少之一执行检索操作,并根据检索结果得到差异元数据。
例如,在步骤S10中,版本差异请求包括第一比较版本号和第二比较版本号,版本差异请求是指用于获取第二比较版本号对应的快照与第一比较版本号对应的快照的差异元数据的请求,版本差异请求可以触发获取差异元数据。第一比较版本号和第二比较版本号都是快照的版本号,第一比较版本号不同于第二比较版本号,从而可以获取两个不同版本的快照的差异元数据。第一比较版本号和第二比较版本号用于指定要获取差异的两个快照版本。例如,在一些示例中,版本差异请求携带的第一比较版本号为2,第二比较版本号为5,则该版本差异请求会触发获取版本号为(5)的快照与版本号为(2)的快照的差异元数据,也即,触发获取第(5)版快照与第(2)版快照之间的差异元数据。例如,版本差异请求可以通过任意适用的通信协议传输,可以采用任意适用的应答机制、响应机制来实现,这可以根据实际需求而定,本公开的实施例对此不作限制。
例如,在一些示例中,步骤S10可以包括:通过用户命令行获取版本差异请求。也即是,可以通过用户命令行接收版本差异请求,从而便于用户在任意时刻发出需要获取差异元数据的请求。例如,在另一些示例中,步骤S10也可以包括:通过应用程序接口以周期性的方式或非周期性的方式获取版本差异请求。例如,可以通过内部定时任务直接调用应用程序接口(API),从而获取版本差异请求并且获取差异信息(例如差异元数据)。通过这种方式,可以实现更加智能化的功能。
例如,在步骤S20中,差异类型至少包括新建差异、删除差异和修改差异。新建差异是基于新建操作所产生的元数据差异,例如通过新建文件/文件夹所产生的元数据差异。文件***中的新建操作(例如创建动作)可以包括:创建(create),软符号链接(symlink),创建节点(mknod),创建目录(mkdir),重命名(rename),硬链接(link)等。删除差异是基于删除操作所产生的元数据差异,例如通过删除文件/文件夹所产生的元数据差异。修改差异是基于修改操作所产生的元数据差异,例如修改文件/文件夹所产生的元数据差异。需要说明的是,本公开的实施例中,差异类型不限于上文列举的新建差异、删除差异和修改差异,还可以包括其他类型的差异,本公开的实施例对此不作限制。
例如,在一些示例中,步骤S20可以包括:响应于差异类型为新建差异,对文件***所包含的新生目录项条目和新生节点条目进行检索,将位于目标版本范围内的第一新生版本号所对应的新生目录项条目以及位于目标版本范围内的第二新生版本号所对应的新生节点条目作为差异元数据。例如,目标版本范围是第一比较版本号和第二比较版本号之间的范围,目标版本范围的两个端点值分别为第一比较版本号和第二比较版本号。在差异类型为新建差异的情形,由于该文件***在执行新建操作时会产生对应的新生目录项条目和新生节点条目,因此可以直接在文件***所包含的新生目录项条目和新生节点条目中进行检索,将第一新生版本号位于目标版本范围内的新生目录项条目和第二新生版本号位于目标版本范围内的新生节点条目作为差异元数据。
例如,在一些示例中,假设第一比较版本号为(2),第二比较版本号为(5),则目标版本范围是[2, 5],也即,目标版本范围涵盖了版本(2)、(3)、(4)、(5)。例如,在差异类型为新建差异的情形,对所有新生目录项条目和新生节点条目进行检索,将第一新生版本号位于[2, 5]之内的新生目录项条目作为差异元数据,并且将第二新生版本号位于[2, 5]之内的新生节点条目也作为差异元数据。由此,可以获得由于新建操作所产生的差异元数据。
图4为本公开一些实施例提供的一种用于文件***的数据管理方法的应用示意图。在一些示例中,在文件***中,在执行新建操作时,将在文件***的数据库(例如用于存储各个目录项条目和节点条目)中添加新生目录项条目和新生节点条目。新生目录项条目的格式为Key:"R_D"/birthid/parent_inodeid/dname,Value:dentry_val。新生节点条目的格式为Key:"R_I"/birthid/inodeid,Value:inode。其中,R_D是新生目录项条目的新生标识符,第一新生版本号是birthid,新生目录项条目记载新建文件的名称、父目录等信息;R_I是新生节点条目的新生标识符,第二新生版本号是birthid,新生节点条目记载新建文件的索引节点信息(inode信息);新生目录项条目和新生节点条目中的birthid表示创建文件是在哪个快照版本的基础上发生的创建。其他字符的含义可以参考上文内容,此处不再赘述。例如,对于远程复制目录(将主集群中数据增量同步到从集群),在新建操作时,将在远程文件***的数据库中添加replicate key,replicate key是指用键值存储的方式添加新生目录项条目和新生节点条目。
如图4所示,当获取增量信息时,也即,需要获取由于新建而产生的差异元数据时,主节点元数据服务器(Meta Data Server,MDS)接收客户端传递的版本差异请求,根据版本差异请求中携带的第一比较版本号(例如用start_snapid表示)和第二比较版本号(例如用end_snapid表示)来对应于这里的birthid,以作为键(key)的匹配规则,构建键值数据库(kvdb)索引。例如,以“R_D/start_snapid”到“R_D/end_snapid”为前缀检索所有的key,构建dentry索引,即可定位新增条目信息,并将其存放于数据库中。以“R_I/start_snapid”到“R_I/end_snapid”为前缀检索所有的key,构建inode索引,即可定位新增的索引节点信息(inode信息),并将其存放于数据库中。由此,可以获取所有增量信息。
图5为图3中步骤S20的一个示例的示意性流程图。例如,在一些示例中,步骤S20可以进一步包括步骤S21-S23。
步骤S21:响应于差异类型为删除差异或修改差异,对文件***所包含的快照目录项条目进行检索,将位于目标版本范围内的第一快照版本号所对应的快照目录项条目作为差异元数据;
步骤S22:对文件***所包含的快照节点条目进行检索,得到位于目标版本范围内的第二快照版本号所对应的快照节点条目;
步骤S23:基于所得到的快照节点条目,查询文件***中是否存在对应的原生节点条目,并根据查询结果确定差异元数据。
例如,在差异类型为删除差异或修改差异的情形,由于该文件***在执行删除操作或修改操作时会首先执行快照cow(copy on write)操作,文件***将构建对应的快照目录项条目和快照节点条目并将构建的条目存放于数据库中,因此可以直接在文件***所包含的快照目录项条目和快照节点条目中进行检索,再根据后续操作得到差异元数据。
例如,在步骤S21中,目标版本范围是第一比较版本号和第二比较版本号之间的范围,目标版本范围的两个端点值分别为第一比较版本号和第二比较版本号。在一些示例中,假设第一比较版本号为(2),第二比较版本号为(5),则目标版本范围是[2, 5],也即,目标版本范围涵盖了版本(2)、(3)、(4)、(5)。在差异类型为删除差异或修改差异的情形,对文件***所包含的所有快照目录项条目进行检索,将位于目标版本范围内的第一快照版本号所对应的快照目录项条目作为差异元数据。仍然以目标版本范围是[2, 5]为例,当差异类型为删除差异或修改差异时,对所有快照目录项条目进行检索,将第一快照版本号位于[2,5]之内的快照目录项条目作为差异元数据。由此,可以获得由于删除操作或修改操作所产生的针对目录项的差异元数据。
例如,在步骤S22中,对文件***所包含的所有快照节点条目进行检索,得到位于目标版本范围内的第二快照版本号所对应的快照节点条目。仍然以目标版本范围是[2, 5]为例,对所有快照节点条目进行检索,得到第二快照版本号位于[2, 5]之内的快照节点条目。此时,检索得到的快照节点条目还不能直接作为差异元数据,还需要分情况处理。
例如,在步骤S23中,基于所得到的快照节点条目,查询文件***中是否存在对应的原生节点条目,并根据查询结果确定差异元数据。
图6为图5中步骤S23的一个示例的示意性流程图。例如,在一些示例中,上述步骤S23还可以包括步骤S231-S233。
步骤S231:根据所得到的快照节点条目包含的索引节点编号,查询文件***中是否存在对应的原生节点条目,其中,对应的原生节点条目是指包含该索引节点编号的原生节点条目;
步骤S232:响应于文件***中存在对应的原生节点条目,获取对应的原生节点条目,并将对应的原生节点条目作为差异元数据;
步骤S233:响应于文件***中不存在对应的原生节点条目,构建节点删除标识,并将节点删除标识作为差异元数据。
例如,在步骤S231中,对于在上一步骤中得到的快照节点条目,得到这些快照节点条目所包含的索引节点编号(inodeid),然后,根据这些索引节点编号,查询文件***中是否存在对应的原生节点条目,也即是,在所有的原生节点条目中查询是否存在具有相同索引节点编号的原生节点条目。例如,上述对应的原生节点条目是指包含该索引节点编号的原生节点条目。
例如,在步骤S232中,若文件***中存在对应的原生节点条目,则表示对应的文件/文件夹发生了修改,因此获取对应的原生节点条目,并将对应的原生节点条目作为差异元数据。此时,对应的原生节点条目中记载的信息即为修改后的最新的信息。
例如,在步骤S233中,若文件***中不存在对应的原生节点条目,则表示对应的文件/文件夹被删除,因此构建节点删除标识以表示该索引节点被删除,并将节点删除标识作为差异元数据。例如,节点删除标识可以采用任意的字符、格式等表示,例如可以采用键值存储的方式表示,客户端和元数据服务器可以在读取到节点删除标识时将其识别出来,并获知对应的文件/文件夹已被删除。这里,“将节点删除标识作为差异元数据”并非指将节点删除标识作为元数据中的目录项(dentry)或索引节点(inode),而是作为差异元数据中表示删除的标识,以便于客户端和元数据服务器获知对应的文件/文件夹已被删除。
图7为本公开一些实施例提供的一种用于文件***的数据管理方法的应用示意图。如图7所示,在一些示例中,在文件***中,在执行删除操作或修改操作时,主节点MDS首先执行快照cow(copy on write)操作,文件***将构建对应的快照目录项条目和快照节点条目并将构建的条目存放于数据库中。当接收到版本差异请求getsnapdiff req时,该请求中包含参数start_snapid(第一比较版本号)和end_snapid(第二比较版本号),该请求表示需要获取由于删除操作和修改操作产生的差异元数据,也即,需要获取差异元数据的删除信息和修改信息。可以根据传递的第一比较版本号和第二比较版本号构建键值数据库(kvdb)索引。例如,可以将“S/start_snapid”至“S/end_snapid”作为前缀,在数据库中所有的快照目录项条目和快照节点条目中进行检索。这里,S表示对快照类型的条目进行检索。通过检索,可以获取数据库中在需要比较的两个版本间由于cow操作产生的键值(key-value)信息,该信息表示文件/文件夹发生了修改或删除。构建dentry索引,将检索得到的快照目录项条目(dentry信息)作为差异元数据,将其存放于数据库中。构建inode索引,检索得到快照节点条目(inode信息)。对于检索得到的快照节点条目,还需要分情况处理。
例如,在所有原生节点条目中查找修改后的值(也即快照节点条目中的索引节点编号)。如果没有查到对应的原生节点条目(也即,不存在),则表示对应的文件/文件夹在需要比较的两个版本间被删除,因此可以构建表示文件/文件夹删除的节点删除标识(例如采用key 和value的方式表示),将其存放于保存差异元数据的数据库中。如果查询到对应的原生节点条目(也即,存在),则表示对应的文件/文件夹在需要比较的两个版本间被修改,因此可以获取对应的原生节点条目,该原生节点条目记载的信息是修改后的最新的信息,将对应的原生节点条目作为差异元数据存储在数据库中,例如,可以构建表示文件修改的键值(key和value的方式)存放于保存差异元数据的数据库中。
例如,在一些示例中,假设第一比较版本号是(2),第二比较版本号是(5),目标版本范围是[2, 5],当差异类型为删除差异或修改差异时,对所有快照目录项条目进行检索,将第一快照版本号位于[2, 5]之内的快照目录项条目作为差异元数据。并且,对所有快照节点条目进行检索,得到第二快照版本号位于[2, 5]之内的快照节点条目,此时,检索得到的快照节点条目还不能直接作为差异元数据,还需要分情况处理。对于得到的快照节点条目,基于索引节点编号,检索是否存在对应的原生节点条目。若存在对应的原生节点条目,则表示对应的文件/文件夹被修改,因此获取记载有最新信息的原生节点条目,以作为差异元数据。若不存在对应的原生节点条目,则表示对应的文件/文件夹被删除,因此构建节点删除标识,将节点删除标识存放在用于保存差异元数据的数据库中。
需要说明的是,本公开的实施例中,针对不同的差异类型,获取差异元数据的方式有所不同。差异类型是新建差异、删除差异、修改差异中的哪一种,可以根据第一比较版本号(start_snapid)对应的快照类型的条目中的信息来确定,例如,可以根据start_snapid对应的快照类型的条目中的信息确定这些快照信息是否发生了改变,若是,则确定差异类型为删除差异或修改差异。而对于新建差异,可以针对每次收到的版本差异请求中携带的第一比较版本号和第二比较版本号在所有的新生类型的条目中进行检索,若能检索到符合要求的新生目录项条目或新生节点条目,则表示该差异为新建差异。若无法检索到符合要求的新生目录项条目或新生节点条目,则表示该差异不是新建差异。需要说明的是,也可以采用其他方式来确定差异类型,例如基于版本差异请求中携带的类型信息来确定,或者也可以通过其他命令来传输差异类型,或者也可以采用默认的差异类型,这可以根据实际需求而定,本公开的实施例对此不作限制。
例如,在一些示例中,该数据管理方法还可以包括步骤S30:响应于文件***被执行新建操作,创建与新建操作所针对的文件和/或文件夹对应的新生目录项条目和/或新生节点条目。例如,第一新生版本号和第二新生版本号表示该新建操作所基于的快照版本。例如,在执行新建操作时,不仅对原生目录项条目和原生节点条目进行新增,还创建对应的新生目录项条目和新生节点条目,以表示相应的文件/文件夹是通过新建产生的。关于新生目录项条目和新生节点条目的说明可以参考上文内容,此处不再赘述。
例如,在一些示例中,该数据管理方法还可以包括步骤S40:将差异元数据存储在差异数据库中。例如,步骤S40可以在步骤S20之后执行。例如,差异数据库可以是采用键值存储方式的数据库,也可以是其他类型的数据库,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,可以使差异数据库的存储格式与各个目录项条目和节点条目的存储格式相同,从而使差异元数据的格式与差异数据库的格式一致,便于将获取的差异元数据直接进行存储,而无需对差异元数据进行格式上的转换。
例如,在一些示例中,该数据管理方法还可以包括步骤S50:响应于差异元数据已被存储在差异数据库中,返回针对版本差异请求的响应信息。例如,当差异元数据已被存储在差异数据库中,主节点MDS可以返回针对版本差异请求的响应信息,以通知客户端可以到差异数据库中获取所需要的差异元数据。
图8为本公开一些实施例提供的一种用于文件***的数据管理方法的交互示意图。如图8所示,客户端可以通过用户命令行、API接口等方式发出版本差异请求getsnapdiff req,该请求中包含参数start_snapid(第一比较版本号)和end_snapid(第二比较版本号),由start_snapid和end_snapid指定要获取差异的两个快照版本。主节点MDS收到版本差异请求后,根据start_snapid和end_snapid确定需要进行比较的两个版本,并且获取发生修改的元数据信息,将修改后的元数据内容通过键值存储的方式存储在数据库中。然后,主节点MDS返回针对版本差异请求的响应getsnapdiff respond,该响应包含差异元数据的获取状态(例如,已完成、未完成、发生错误等)。然后,客户端可以通过访问主集群,读取数据库中的差异信息。
需要说明的是,当用户通过命令行或者内部定时任务直接调用API的形式获取差异信息时,会将start_snapid、end_snapid分别发送给***中的多个MDS,每个MDS根据start_snapid对应的快照类型的条目上记录的快照信息确定该元数据是否发生修改,并通过end_snapid向原生文件***获取修改后的元数据,将修改后的元数据保存在差异数据库中。当所有差异获取完毕,所有MDS返回给请求的发送者后,可以获取并生成差异元数据。
本公开实施例提供的数据管理方法可以获取文件***基于新建、删除、修改等操作产生的元数据差异,这是一种全新的生成元数据快照差异的方案,通过设计简化的元数据格式和逻辑,实现了快速定位并准确获取某个时间段内文件***发生的增加、删除、修改的元数据信息并生成元数据差异,该数据管理方法根据文件***中记录的快照信息以及在文件***中增加新生目录项条目和新生节点条目来获取差异信息,可以提高存储***在远程复制、备份、快照回滚等功能特性上的可用性和性能表现,能够快速定位差异元数据,可以避免元数据的全局遍历,提高获取差异元数据的性能和效率,实现了通过完整流程方法来快速获取和生成差异元数据。该数据管理方法可以应用于分布式网络附加存储(NetworkAttached Storage,NAS)***,可以实现获取文件***增量数据部分,可以提升增量同步的性能。
需要说明的是,本公开实施例提供的数据管理方法不限于上文中描述的步骤,还可以包括更多的步骤。各个步骤的执行顺序不受限制,虽然上文中以特定顺序描述了各个步骤,但这并不构成对本公开实施例的限制。
本公开至少一个实施例还提供一种用于文件***的数据管理装置。该数据管理装置可以快速定位差异元数据,可以避免元数据的全局遍历,提高获取差异元数据的性能和效率。
图9为本公开一些实施例提供的一种用于文件***的数据管理装置的示意框图。如图9所示,该数据管理装置100包括获取单元110和处理单元120。
例如,该数据管理装置100用于文件***,该文件***的元数据包括多个目录项条目和多个节点条目。多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目。原生目录项条目记载文件***当前的组织信息,快照目录项条目记载文件***中当前不存在、在生成快照时存在的组织信息,新生目录项条目记载文件***中基于新建操作所生成的组织信息。多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目。原生节点条目记载文件***当前的文件属性信息,快照节点条目记载文件***中当前不存在、在生成快照时存在的文件属性信息,新生节点条目记载文件***中基于新建操作所生成的文件属性信息。
例如,获取单元110配置为获取版本差异请求。版本差异请求包括第一比较版本号和第二比较版本号,版本差异请求用于获取第二比较版本号对应的快照与第一比较版本号对应的快照的差异元数据。例如,获取单元110可以执行如图3所示的数据管理方法的步骤S10。
例如,处理单元120配置为根据差异类型,基于第一比较版本号和第二比较版本号,对新生目录项条目、新生节点条目、快照目录项条目、快照节点条目、原生目录项条目、原生节点条目中至少之一执行检索操作,并根据检索结果得到差异元数据。例如,处理单元120可以执行如图3所示的数据管理方法的步骤S20。
例如,获取单元110和处理单元120可以为硬件、软件、固件以及它们的任意可行的组合。例如,获取单元110和处理单元120可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于获取单元110和处理单元120的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,数据管理装置100的各个单元与前述的数据管理方法的各个步骤对应,关于该数据管理装置100的具体功能可以参考上文中数据管理方法的相关描述,此处不再赘述。图9所示的数据管理装置100的组件和结构只是示例性的,而非限制性的,根据需要,该数据管理装置100还可以包括其他组件和结构。
本公开至少一个实施例还提供一种电子设备,该电子设备包括本公开任一实施例提供的用于文件***的数据管理装置。该电子设备可以快速定位差异元数据,可以避免元数据的全局遍历,提高获取差异元数据的性能和效率。
图10为本公开一些实施例提供的一种电子设备的示意框图。如图10所示,电子设备200包括数据管理装置210,该数据管理装置210可以为图9所示的数据管理装置100。例如,该电子设备200可以为分布式NAS***或其他任意的需要实现快照的数据管理的***,本公开的实施例对此不作限制。关于该电子设备200的相关说明可参考上文中关于数据管理装置100的描述,此处不再赘述。
本公开至少一个实施例还提供一种电子设备,该电子设备包括处理器和存储器,一个或多个计算机程序模块被存储在该存储器中并被配置为由该处理器执行,一个或多个计算机程序模块包括用于实现本公开任一实施例提供的用于文件***的数据管理方法。该电子设备可以快速定位差异元数据,可以避免元数据的全局遍历,提高获取差异元数据的性能和效率。
图11为本公开一些实施例提供的另一种电子设备的示意框图。如图11所示,该电子设备300包括处理器310和存储器320。存储器320用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器310用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器310运行时可以执行上文所述的用于文件***的数据管理方法中的一个或多个步骤。存储器320和处理器310可以通过总线***和/或其它形式的连接机构(未示出)互连。
例如,处理器310可以是中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器310可以为通用处理器或专用处理器,可以控制电子设备300中的其它组件以执行期望的功能。
例如,存储器320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器310可以运行一个或多个计算机程序模块,以实现电子设备300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备300的具体功能和技术效果可以参考上文中关于用于文件***的数据管理方法的描述,此处不再赘述。
本公开至少一个实施例还提供一种存储介质,该存储介质存储有非暂时性计算机可读指令,当该非暂时性计算机可读指令由计算机执行时实现本公开任一实施例提供的用于文件***的数据管理方法。利用该存储介质,可以快速定位差异元数据,可以避免元数据的全局遍历,提高获取差异元数据的性能和效率。
图12为本公开一些实施例提供的一种存储介质的示意图。如图12所示,存储介质400存储有非暂时性计算机可读指令410。例如,当非暂时性计算机可读指令410由计算机执行时可以执行根据上文所述的用于文件***的数据管理方法中的一个或多个步骤。
例如,该存储介质400可以应用于上述电子设备中。例如,存储介质400可以为图11所示的电子设备300中的存储器320。例如,关于存储介质400的相关说明可以参考图11所示的电子设备300中的存储器320的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种用于文件***的数据管理方法,其特征在于,所述文件***的元数据包括多个目录项条目和多个节点条目;
所述多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目,所述原生目录项条目记载所述文件***当前的组织信息,所述快照目录项条目记载所述文件***中当前不存在、在生成快照时存在的组织信息,所述新生目录项条目记载所述文件***中基于新建操作所生成的组织信息;
所述原生目录项条目包括第一编辑版本号,所述第一编辑版本号是指创建所述原生目录项条目时的***版本号;
所述快照目录项条目包括第一快照版本号,所述第一快照版本号是指所述快照目录项条目对应的快照的版本;
所述新生目录项条目包括第一新生版本号,所述第一新生版本号表示所述新建操作所基于的快照版本;
所述多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目,所述原生节点条目记载所述文件***当前的文件属性信息,所述快照节点条目记载所述文件***中当前不存在、在生成快照时存在的文件属性信息,所述新生节点条目记载所述文件***中基于所述新建操作所生成的文件属性信息;
所述原生节点条目包括第二编辑版本号,所述第二编辑版本号是指创建或修改所述原生节点条目时的***版本号;
所述快照节点条目包括第二快照版本号,所述第二快照版本号是指所述快照节点条目对应的快照的版本;
所述新生节点条目包括第二新生版本号,所述第二新生版本号表示所述新建操作所基于的快照版本;
所述方法包括:
获取版本差异请求,其中,所述版本差异请求包括第一比较版本号和第二比较版本号,所述版本差异请求用于获取所述第二比较版本号对应的快照与所述第一比较版本号对应的快照的差异元数据;
根据差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行检索操作,并根据检索结果得到所述差异元数据。
2.根据权利要求1所述的方法,其特征在于,所述差异类型包括新建差异、删除差异和修改差异,
所述新建差异是基于所述新建操作所产生的元数据差异,
所述删除差异是基于删除操作所产生的元数据差异,
所述修改差异是基于修改操作所产生的元数据差异。
3.根据权利要求2所述的方法,其特征在于,根据所述差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行所述检索操作,并根据所述检索结果得到所述差异元数据,包括:
响应于所述差异类型为所述新建差异,对所述文件***所包含的所述新生目录项条目和所述新生节点条目进行检索,将位于目标版本范围内的第一新生版本号所对应的新生目录项条目以及位于所述目标版本范围内的第二新生版本号所对应的新生节点条目作为所述差异元数据;
其中,所述目标版本范围是所述第一比较版本号和所述第二比较版本号之间的范围,所述目标版本范围的两个端点值分别为所述第一比较版本号和所述第二比较版本号。
4.根据权利要求2所述的方法,其特征在于,根据所述差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行所述检索操作,并根据所述检索结果得到所述差异元数据,包括:
响应于所述差异类型为所述删除差异或所述修改差异,对所述文件***所包含的所述快照目录项条目进行检索,将位于目标版本范围内的第一快照版本号所对应的快照目录项条目作为所述差异元数据,其中,所述目标版本范围是所述第一比较版本号和所述第二比较版本号之间的范围,所述目标版本范围的两个端点值分别为所述第一比较版本号和所述第二比较版本号;
对所述文件***所包含的所述快照节点条目进行检索,得到位于所述目标版本范围内的第二快照版本号所对应的快照节点条目;
基于所得到的快照节点条目,查询所述文件***中是否存在对应的原生节点条目,并根据查询结果确定所述差异元数据。
5.根据权利要求4所述的方法,其特征在于,基于所得到的快照节点条目,查询所述文件***中是否存在所述对应的原生节点条目,并根据所述查询结果确定所述差异元数据,包括:
根据所得到的快照节点条目包含的索引节点编号,查询所述文件***中是否存在所述对应的原生节点条目,其中,所述对应的原生节点条目是指包含所述索引节点编号的原生节点条目;
响应于所述文件***中存在所述对应的原生节点条目,获取所述对应的原生节点条目,并将所述对应的原生节点条目作为所述差异元数据;
响应于所述文件***中不存在所述对应的原生节点条目,构建节点删除标识,并将所述节点删除标识作为所述差异元数据。
6.根据权利要求1所述的方法,其特征在于,获取所述版本差异请求包括:
通过用户命令行获取所述版本差异请求。
7.根据权利要求1所述的方法,其特征在于,获取所述版本差异请求包括:
通过应用程序接口以周期性的方式或非周期性的方式获取所述版本差异请求。
8.根据权利要求3所述的方法,其特征在于,还包括:
响应于所述文件***被执行所述新建操作,创建与所述新建操作所针对的文件和/或文件夹对应的新生目录项条目和/或新生节点条目。
9.根据权利要求1-8任一项所述的方法,其特征在于,还包括:
将所述差异元数据存储在差异数据库中。
10.根据权利要求9所述的方法,其特征在于,所述差异数据库包括采用键值存储方式的数据库。
11.根据权利要求9所述的方法,其特征在于,还包括:
响应于所述差异元数据已被存储在所述差异数据库中,返回针对所述版本差异请求的响应信息。
12.一种用于文件***的数据管理装置,其特征在于,所述文件***的元数据包括多个目录项条目和多个节点条目;
所述多个目录项条目包括至少一个原生目录项条目、至少一个快照目录项条目、至少一个新生目录项条目,所述原生目录项条目记载所述文件***当前的组织信息,所述快照目录项条目记载所述文件***中当前不存在、在生成快照时存在的组织信息,所述新生目录项条目记载所述文件***中基于新建操作所生成的组织信息;
所述原生目录项条目包括第一编辑版本号,所述第一编辑版本号是指创建所述原生目录项条目时的***版本号;
所述快照目录项条目包括第一快照版本号,所述第一快照版本号是指所述快照目录项条目对应的快照的版本;
所述新生目录项条目包括第一新生版本号,所述第一新生版本号表示所述新建操作所基于的快照版本;
所述多个节点条目包括至少一个原生节点条目、至少一个快照节点条目、至少一个新生节点条目,所述原生节点条目记载所述文件***当前的文件属性信息,所述快照节点条目记载所述文件***中当前不存在、在生成快照时存在的文件属性信息,所述新生节点条目记载所述文件***中基于所述新建操作所生成的文件属性信息;
所述原生节点条目包括第二编辑版本号,所述第二编辑版本号是指创建或修改所述原生节点条目时的***版本号;
所述快照节点条目包括第二快照版本号,所述第二快照版本号是指所述快照节点条目对应的快照的版本;
所述新生节点条目包括第二新生版本号,所述第二新生版本号表示所述新建操作所基于的快照版本;
所述装置包括:
获取单元,配置为获取版本差异请求,其中,所述版本差异请求包括第一比较版本号和第二比较版本号,所述版本差异请求用于获取所述第二比较版本号对应的快照与所述第一比较版本号对应的快照的差异元数据;
处理单元,配置为根据差异类型,基于所述第一比较版本号和所述第二比较版本号,对所述新生目录项条目、所述新生节点条目、所述快照目录项条目、所述快照节点条目、所述原生目录项条目、所述原生节点条目中至少之一执行检索操作,并根据检索结果得到所述差异元数据。
13.一种电子设备,其特征在于,包括如权利要求12所述的用于文件***的数据管理装置。
14.一种电子设备,其特征在于,包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现权利要求1-11任一所述的用于文件***的数据管理方法。
15.一种存储介质,其特征在于,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时实现权利要求1-11任一项所述的用于文件***的数据管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211112469.5A CN115185891B (zh) | 2022-09-14 | 2022-09-14 | 文件***的数据管理方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211112469.5A CN115185891B (zh) | 2022-09-14 | 2022-09-14 | 文件***的数据管理方法及装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115185891A CN115185891A (zh) | 2022-10-14 |
CN115185891B true CN115185891B (zh) | 2023-01-17 |
Family
ID=83524832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211112469.5A Active CN115185891B (zh) | 2022-09-14 | 2022-09-14 | 文件***的数据管理方法及装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185891B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115657969B (zh) * | 2022-12-23 | 2023-03-10 | 苏州浪潮智能科技有限公司 | 一种获取文件***差异数据的方法、装置、设备及介质 |
CN116401220A (zh) * | 2023-06-01 | 2023-07-07 | 联想凌拓科技有限公司 | 文件***的数据恢复方法、装置、设备及介质 |
CN116708420B (zh) * | 2023-07-28 | 2023-11-03 | 联想凌拓科技有限公司 | 用于数据传输的方法、装置、设备及介质 |
CN117435558B (zh) * | 2023-12-20 | 2024-03-29 | 杭州硕磐智能科技有限公司 | 一种元数据管理方法、计算设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473277A (zh) * | 2013-08-27 | 2013-12-25 | 华为技术有限公司 | 文件***的快照方法和装置 |
CN107180092A (zh) * | 2017-05-15 | 2017-09-19 | 中国科学院上海微***与信息技术研究所 | 一种文件***的控制方法、装置及终端 |
CN110018989A (zh) * | 2017-11-13 | 2019-07-16 | 华为技术有限公司 | 一种快照比对的方法和装置 |
CN110109840A (zh) * | 2019-05-10 | 2019-08-09 | 重庆八戒电子商务有限公司 | 基于版本号比较的代码审计方法、审计装置及介质 |
CN113342741A (zh) * | 2021-07-30 | 2021-09-03 | 联想凌拓科技有限公司 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9824095B1 (en) * | 2010-05-03 | 2017-11-21 | Panzura, Inc. | Using overlay metadata in a cloud controller to generate incremental snapshots for a distributed filesystem |
WO2021170228A1 (en) * | 2020-02-26 | 2021-09-02 | Huawei Technologies Co., Ltd. | A device and a method for indexing snapshots of multiple file systems |
US11537555B2 (en) * | 2020-12-15 | 2022-12-27 | EMC IP Holding Company LLC | Managing network shares utilizing filesystem snapshots comprising metadata characterizing network shares |
CN114385587A (zh) * | 2021-12-17 | 2022-04-22 | 中国船舶重工集团公司第七0九研究所 | 一种面向关系型数据库版本快照的构建方法及查询方法 |
-
2022
- 2022-09-14 CN CN202211112469.5A patent/CN115185891B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473277A (zh) * | 2013-08-27 | 2013-12-25 | 华为技术有限公司 | 文件***的快照方法和装置 |
CN107180092A (zh) * | 2017-05-15 | 2017-09-19 | 中国科学院上海微***与信息技术研究所 | 一种文件***的控制方法、装置及终端 |
CN110018989A (zh) * | 2017-11-13 | 2019-07-16 | 华为技术有限公司 | 一种快照比对的方法和装置 |
CN110109840A (zh) * | 2019-05-10 | 2019-08-09 | 重庆八戒电子商务有限公司 | 基于版本号比较的代码审计方法、审计装置及介质 |
CN113342741A (zh) * | 2021-07-30 | 2021-09-03 | 联想凌拓科技有限公司 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115185891A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115185891B (zh) | 文件***的数据管理方法及装置、电子设备及存储介质 | |
US10558617B2 (en) | File system backup using change journal | |
CN104714755B (zh) | 一种快照管理方法及装置 | |
US8131691B1 (en) | System and method for updating a search engine index based on which files are identified in a file change log | |
US9946716B2 (en) | Distributed file system snapshot | |
US7228299B1 (en) | System and method for performing file lookups based on tags | |
US9026512B2 (en) | Data object search and retrieval | |
US8965941B2 (en) | File list generation method, system, and program, and file list generation device | |
CN106484820B (zh) | 一种重命名方法、访问方法及装置 | |
CN103595797B (zh) | 一种分布式存储***中的缓存方法 | |
JP2005078612A (ja) | ファイル共有システム及びファイル共有装置間のファイル移行方法 | |
JP2007299063A (ja) | 情報処理装置、情報処理方法 | |
CN109284273B (zh) | 一种采用后缀数组索引的海量小文件查询方法及*** | |
US20130275541A1 (en) | Reparse point replication | |
CN113342741B (zh) | 快照实现方法及装置、电子设备及计算机可读存储介质 | |
CN112800019A (zh) | 基于Hadoop分布式文件***的数据备份方法及*** | |
CN110245037B (zh) | 一种基于日志的Hive用户操作行为还原方法 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN114595286A (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
WO2023178899A1 (zh) | 文件***的数据管理方法及装置、电子设备及存储介质 | |
US20230334014A1 (en) | Implementing graph search with in-structure metadata of a graph-organized file system | |
CN115328859A (zh) | 一种元数据访问方法、装置、设备及介质 | |
US11954066B2 (en) | Coalescing storage log entries | |
CN113127549B (zh) | 增量数据的同步方法、装置、计算机设备和存储介质 | |
CN117331981A (zh) | 数据流动感知方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40078330 Country of ref document: HK |