CN113342741B - 快照实现方法及装置、电子设备及计算机可读存储介质 - Google Patents
快照实现方法及装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113342741B CN113342741B CN202110867353.1A CN202110867353A CN113342741B CN 113342741 B CN113342741 B CN 113342741B CN 202110867353 A CN202110867353 A CN 202110867353A CN 113342741 B CN113342741 B CN 113342741B
- Authority
- CN
- China
- Prior art keywords
- snapshot
- entry
- node
- version number
- directory entry
- 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/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/13—File access structures, e.g. distributed indices
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至图2D为本公开一些实施例提供的一种文件***的元数据的条目内容示意图;
图3为本公开一些实施例提供的一种用于文件***的快照实现方法的流程示意图;
图4为图3中步骤S11的流程示意图;
图5为图3中步骤S13的流程示意图;
图6A至图6B为本公开一些实施例提供的一种文件***的元数据的示意图;
图7为本公开一些实施例提供的另一种用于文件***的快照实现方法的流程示意图;
图8为图7中步骤S15的流程示意图;
图9为图8中步骤S152的流程示意图;
图10为本公开一些实施例提供的快照实现方法中针对删除文件操作的元数据处理方式示意图;
图11为图8中步骤S153的流程示意图;
图12为本公开一些实施例提供的快照实现方法中针对删除文件操作和修改文件操作的元数据处理方式示意图;
图13为利用本公开实施例提供的快照实现方法进行快照访问的示意图;
图14为本公开一些实施例提供的一种用于文件***的快照实现装置的示意框图;
图15为本公开一些实施例提供的一种电子设备的示意框图;
图16为本公开一些实施例提供的另一种电子设备的示意框图;以及
图17为本公开一些实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
快照通常用于文件***,由于文件***具有复杂的元数据、数据等信息,这导致快照实现较为复杂。例如,在生成快照时,无法实现快照之间的级联关系,即本目录做了快照,一般会使得子目录无法再做快照,这对快照的实现造成了限制,导致使用不便。
本公开至少一个实施例提供一种用于文件***的快照实现方法及装置、电子设备及计算机可读存储介质。该方法将快照逻辑进行抽象描述,使得快照之间不再进行逻辑关系约束,从而简化快照复杂度,简化元数据相关逻辑,易于在文件***中实现。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
本公开至少一个实施例提供一种用于文件***的快照实现方法。该文件***的元数据包括多个目录项条目和多个节点条目。多个目录项条目包括至少一个原生目录项条目和至少一个快照目录项条目。原生目录项条目记载文件***当前的组织信息,原生目录项条目包括第一编辑版本号。快照目录项条目记载文件***中当前不存在、在生成快照时存在的组织信息,快照目录项条目包括第一快照版本号。多个节点条目包括至少一个原生节点条目和至少一个快照节点条目。原生节点条目记载文件***当前的文件属性信息,原生节点条目包括第二编辑版本号。快照节点条目记载文件***中当前不存在、在生成快照时存在的文件属性信息,快照节点条目包括第二快照版本号。
该方法包括:基于目标版本号、原生目录项条目包含的第一编辑版本号、快照目录项条目包含的第一快照版本号,在多个目录项条目中选择至少一个目录项条目以作为目标目录项条目,目标版本号为需要访问的快照对应的版本号;确定与每个目标目录项条目对应的至少一个节点条目;基于目标版本号、原生节点条目包含的第二编辑版本号、快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中选择得到目标节点条目;基于目标目录项条目和目标节点条目得到需要访问的快照,需要访问的快照的元数据包括目标目录项条目和目标节点条目。
例如,文件***通常包括数据和元数据。元数据是用于描述数据的数据(dataabout 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次生成快照操作为例,***版本号为(1)~(4)中的任意一个,若该快照节点条目是在版本(3)创建的,那么,该快照节点条目的第二快照版本号为(0, 3]。也即是,该快照节点条目对应的对象(可以是文件或文件夹的属性信息)在第1次至第3次生成快照时都存在。
需要说明的是,第一快照版本号和第二快照版本号都是指相应的快照条目对应于哪些版本的快照,这里,“第一”和“第二”仅是为了区分不同类型快照条目中的版本号,并不表示任何格式、顺序、数量、重要性。类似地,第一编辑版本号和第二编辑版本号都是指创建相应条目时的***版本号,这里,“第一”和“第二”仅是为了区分不同类型原生条目中的版本号,并不表示任何格式、顺序、数量、重要性。
需要说明的是,本公开的实施例中,第一快照版本号和第二快照版本号均以数值区间的形式记载。当该数值区间的起点数等于终点数时,则该数值区间表示一个单独的数值,该数值等于起点数,也等于终点数。因此,第一快照版本号和第二快照版本号可以为包含多个数值的区间,也可以仅为一个数值。
例如,文件***的元数据可以采用任意的方式存储,例如键值存储(Key-Value,KV)。在下文的说明中,结合图2A至图2D,以采用键值存储为例,对本公开实施例的各个条目的内容和格式进行说明,但这并不构成对本公开实施例的限制。图2A至图2D中的数据格式和数值均为示意性的,在实际应用中,对应于各项内容的数据格式和数值可以根据实际需求而定。
例如,原生目录项条目的存储格式为Key:/parent_inodeid/dname,Value:inodeid, v1。parent_inodeid表示父目录的索引节点编号,dname表示该条目对应的对象的名称,inodeid表示该对象的索引节点编号,v1表示第一编辑版本号。如图2A所示,该示例表示一个原生目录项条目的内容,parent_inodeid为D001,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:inodeid,Value:inodeid, v2。inodeid表示该条目对应的对象的索引节点编号,v2表示第二编辑版本号。如图2C所示,该示例表示一个原生节点条目的内容,inodeid为D001,v2为(3),除此之外,该条目中还存储有对象的属性信息(用inode表示)。需要说明的是,该存储格式仅为示意性的,用于表示原生节点条目中存储了哪些内容,而并不表示实际的数据结构的格式。
例如,快照节点条目的存储格式为Key:S/inodeid,Value:inode, k2。S为快照标识符,用于区分多个节点条目中的原生节点条目和快照节点条目。例如,快照节点条目包括快照标识符,而原生节点条目中不存在快照标识符,由此可以区分这两者。当然,快照标识符可以采用任意适用的符号或字符,而不限于上文中的S,这可以根据实际需求而定,本公开的实施例对此不作限制。inodeid表示该对象的索引节点编号,inode 表示对象的属性信息,k2表示第二快照版本号,k2为一个数值区间。如图2D所示,该示例表示一个快照节点条目的内容,inodeid为D004,k2这一数值区间的起点数为1,终点数为5,也即k2为1~5。由于该条目中存在快照标识符S,因此可以识别出该条目为快照节点条目。需要说明的是,该存储格式仅为示意性的,用于表示快照节点条目中存储了哪些内容,而并不表示实际的数据结构的格式。
需要说明的是,本公开的实施例中,采用快照标识符区分多个目录项条目中的原生目录项条目和快照目录项条目,并且采用快照标识符区分多个节点条目中的原生节点条目和快照节点条目,快照目录项条目和快照节点条目包括快照标识符,而原生目录项条目和原生节点条目中不存在快照标识符。当然,本公开的实施例不限于此,也可以采用其他方式对原生的条目和快照的条目进行区分,这可以根据实际需求而定。
需要说明的是,本公开的实施例中,多个目录项条目和多个节点条目可以均采用键值存储方式进行存储,但这并不构成对本公开实施例的限制。例如,原生目录项条目、快照目录项条目、原生节点条目、快照节点条目所采用的存储方式不限于键值存储方式,可以为任意适用的存储方式,当采用其他类型的存储方式时,上述各个条目的具体格式可以根据存储类型而调整,只需记载有相应的内容即可。图2A至图2D所示的格式仅为示意性的,各项内容是否存储在键字段或值字段,可以根据实际需求而调整,且各项内容的具体格式也可以根据实际需求而定,本公开的实施例对此不作限制。
图3为本公开一些实施例提供的一种用于文件***的快照实现方法的流程示意图。例如,该方法可以用于上文中结合图1、图2A-2D所描述的文件***。该文件***例如存储在分布式网络附加存储(Network Attached Storage,NAS)***或其他任意的需要实现快照的***中,本公开的实施例对此不作限制。例如,在一些实施例中,如图3所示,该方法包括如下操作。
步骤S11:基于目标版本号、原生目录项条目包含的第一编辑版本号、快照目录项条目包含的第一快照版本号,在多个目录项条目中选择至少一个目录项条目以作为目标目录项条目,目标版本号为需要访问的快照对应的版本号;
步骤S12:确定与每个目标目录项条目对应的至少一个节点条目;
步骤S13:基于目标版本号、原生节点条目包含的第二编辑版本号、快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中选择得到目标节点条目;
步骤S14:基于目标目录项条目和目标节点条目得到需要访问的快照,需要访问的快照的元数据包括目标目录项条目和目标节点条目。
例如,在步骤S11中,目标版本号为需要访问的快照对应的版本号。例如,在一些示例中,假设对文件***进行了4次生成快照操作,则***版本号可以为(1)~(4),那么目标版本号可以为(1)~(4)中的任意一个。根据目标版本号,并基于文件***中原生目录项条目包含的第一编辑版本号和快照目录项条目包含的第一快照版本号,在多个目录项条目中进行选择,从而得到至少一个目录项条目,以作为目标目录项条目。
图4为图3中步骤S11的流程示意图。如图4所示,在一些示例中,图3中的步骤S11可以进一步包括如下操作。
步骤S111:对于多个目录项条目中的原生目录项条目,选择第一编辑版本号小于目标版本号的原生目录项条目以作为目标目录项条目;
步骤S112:对于多个目录项条目中的快照目录项条目,选择第一快照版本号包含目标版本号的快照目录项条目以作为目标目录项条目。
例如,在步骤S111中,可以遍历所有目录项条目中的原生目录项条目,并选择第一编辑版本号小于目标版本号的原生目录项条目,选择得到的原生目录项条目作为目标目录项条目。例如,目标版本号为需要访问的快照对应的版本号,若某个原生目录项条目的第一编辑版本号小于目标版本号,则表示该原生目录项条目是在生成目标版本号对应的快照之前创建的,因此,目标版本号对应的快照应包含该原生目录项条目,该原生目录项条目被选择以作为目标目录项条目。例如,目标目录项条目用于访问该目标版本号对应的快照。
例如,在步骤S112中,可以遍历所有目录项条目中的快照目录项条目,并选择第一快照版本号包含目标版本号的快照目录项条目,选择得到的快照目录项条目作为目标目录项条目。例如,目标版本号为需要访问的快照对应的版本号,若某个快照目录项条目的第一快照版本号包含目标版本号,则表示该快照目录项条目在生成目标版本号对应的快照时是存在的,因此,目标版本号对应的快照应包含该快照目录项条目,该快照目录项条目被选择以作为目标目录项条目。例如,目标目录项条目用于访问该目标版本号对应的快照。
返回至图3,例如,在步骤S12中,由于多个目录项条目和多个节点条目中的每个包括节点标识(也即前述的索引节点编号inodeid),因此目标目录项条目的每个也包括节点标识。确定与每个目标目录项条目对应的至少一个节点条目可以包括:对于每个目标目录项条目,根据目标目录项条目中的节点标识,在多个节点条目中选择具有与该目标目录项条目相同的节点标识的节点条目,以作为与该目标目录项条目对应的至少一个节点条目。也即是,通过判断节点标识是否相同,可以确定出与每个目标目录项条目对应的至少一个节点条目。当某个节点条目的节点标识与目标目录项条目的节点标识相同时,则确定该节点条目对应于该目标目录项条目。需要说明的是,确定出的节点条目可以为一个或多个,可以包含原生节点条目和/或快照节点条目。
例如,在步骤S13中,根据目标版本号,并基于文件***中原生节点条目包含的第二编辑版本号和快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中进行选择,被选择的节点条目作为目标节点条目。
图5为图3中步骤S13的流程示意图。如图5所示,在一些示例中,图3中的步骤S13可以进一步包括如下操作。
步骤S131:对于与每个目标目录项条目对应的节点条目中的原生节点条目,选择第二编辑版本号小于目标版本号的原生节点条目以作为目标节点条目;
步骤S132:对于与每个目标目录项条目对应的节点条目中的快照节点条目,选择第二快照版本号包含目标版本号的快照节点条目以作为目标节点条目。
例如,在步骤S131中,可以遍历通过上述步骤S12得到的节点条目中的原生节点条目,并选择第二编辑版本号小于目标版本号的原生节点条目,选择得到的原生节点条目作为目标节点条目。例如,目标版本号为需要访问的快照对应的版本号,若某个原生节点条目的第二编辑版本号小于目标版本号,则表示该原生节点条目是在生成目标版本号对应的快照之前创建或修改的,因此,目标版本号对应的快照应包含该原生节点条目,该原生节点条目被选择以作为目标节点条目。例如,目标节点条目用于访问该目标版本号对应的快照。
例如,在步骤S132中,可以遍历通过上述步骤S12得到的节点条目中的快照节点条目,并选择第二快照版本号包含目标版本号的快照节点条目,选择得到的快照节点条目作为目标节点条目。例如,目标版本号为需要访问的快照对应的版本号,若某个快照节点条目的第二快照版本号包含目标版本号,则表示该快照节点条目在生成目标版本号对应的快照时是存在的,因此,目标版本号对应的快照应包含该快照节点条目,该快照节点条目被选择以作为目标节点条目。例如,目标节点条目用于访问该目标版本号对应的快照。
返回至图3,例如,在步骤S14中,基于目标目录项条目和目标节点条目得到需要访问的快照。例如,需要访问的快照的元数据包括目标目录项条目和目标节点条目,通过读取这些条目涵盖的信息,可以得到所需要访问的快照。
图6A至图6B为本公开一些实施例提供的一种文件***的元数据的示意图,图6A表示元数据中的目录项信息(例如组织信息),图6B表示元数据中的索引节点信息(例如文件属性信息)。下面结合图6A至图6B,对如何通过上述各个步骤来访问快照进行示例性说明。
例如,如图6A所示,该文件***包括文件/文件夹dir0、dir1、dir2、dir3、file1、file2、file3,这些文件/文件夹中的每个对应于一个目录项条目。例如,dir0、dir1、file1、dir3、file3分别对应于原生目录项条目,表示当前的文件***中包含这些文件/文件夹。dir2、file2对应于快照目录项条目,表示这些文件/文件夹不存在于当前的文件***中,而是存在于该文件***曾经的某些版本中,例如存在于某些快照版本中。例如,dir0、dir1、file1各自的原生目录项条目中的第一编辑版本号为(0),dir3、file3各自的原生目录项条目中的第一编辑版本号为(1)。dir2、file2各自的快照目录项条目中的第一快照版本号为(0, 3]。假设对该文件***做过1~4个版本的快照,对文件夹dir0做过的快照版本为1、3、4,对文件夹dir1做过的快照版本为2。
当需要访问当前的文件***时,只需要访问原生目录项条目,即可得到对应于当前文件***的目录信息,该操作与通常的访问当前的文件***的操作基本相同,因此可以兼容通常的访问方式。针对原生目录项条目的访问,由于其记载的信息与通常的文件***基本相同,因此访问方式不会发生变化。
当需要访问某个版本的快照时,假设需要访问第3版本的快照时,则需要按照一定规则进行判断和选择,例如根据步骤S111-S112的操作进行选择。例如,对于原生目录项条目,若其第一编辑版本号小于3,则应当选择。对于快照目录项条目,若其第一快照版本号包含3,则应当选择。由此,根据该规则,可以选择得到dir0、dir1、file1、dir3、file3,这些文件/文件夹对应的原生目录项条目的第一编辑版本号小于3,则说明这些文件/文件夹在生成第3版本的快照时是存在的;根据该规则,还可以选择得到dir2、file2,这些文件/文件夹对应的快照目录项条目的第一快照版本号包含3,则说明这些文件/文件夹在生成第3版本的快照时是存在的。
在得到如图6A所示的目录信息之后,也即是,确定了存在的文件/文件夹之后,采用下文描述的方式继续获取与目录信息对应的文件属性信息。
例如,如图6B所示,在该文件***中,假设文件file1在第3版本时做了修改,因此对于文件file1,存在两个节点条目,一个为原生节点条目,其第二编辑版本号为(3),另一个为快照节点条目(图中用file1’表示),其第二快照版本号为(0, 3]。文件file3在第4版本时做了修改,因此对于文件file3,存在两个节点条目,一个为原生节点条目,其第二编辑版本号为(4),另一个为快照节点条目(图中用file3’表示),其第二快照版本号为(1, 4]。文件夹dir3在第3版本时做了修改,因此对于文件夹dir3,存在两个节点条目,一个为原生节点条目,其第二编辑版本号为(3),另一个为快照节点条目(图中用dir3’表示),其第二快照版本号为(1, 3]。
当需要访问当前的文件***时,只需要访问原生节点条目,即可得到对应于当前文件***的文件属性信息,该操作与通常的访问当前的文件***的操作基本相同,因此可以兼容通常的访问方式。针对原生节点条目的访问,由于其记载的信息与通常的文件***基本相同,因此访问方式不会发生变化。
当需要访问某个版本的快照时,假设需要访问第3版本的快照时,则需要按照一定规则进行判断和选择,例如根据步骤S131-S132的操作进行选择。例如,对于原生节点条目,若其第二编辑版本号小于3,则应当选择。对于快照节点条目,若其第二快照版本号包含3,则应当选择。由此,根据该规则,可以选择得到dir0、dir1,这些文件/文件夹对应的原生节点条目的第二编辑版本号小于3,则说明这些文件/文件夹在生成第3版本的快照时是存在的;根据该规则,还可以选择得到dir2、file2、file1’、dir3’、file3’,这些文件/文件夹对应的快照节点条目的第二快照版本号包含3,则说明这些文件/文件夹在生成第3版本的快照时是存在的。
由此,通过上述操作,首先得到图6A所示的目录项条目,然后得到图6B所示的节点条目,从而可以得到所需要的目录信息与文件属性信息,进而可以生成所需要访问的快照。
图7为本公开一些实施例提供的另一种用于文件***的快照实现方法的流程示意图。例如,在一些示例中,如图7所示,除了包括步骤S11-S14,该实施例提供的方法还进一步包括步骤S15。该实施例中的步骤S11-S14与图3所示的方法中的步骤S11-S14基本相同,相关说明可参考前述内容,此处不再赘述。
步骤S15:处理多个目录项条目和多个节点条目。
例如,在步骤S15中,为了使目录项条目和节点条目中记载的信息能反映文件***的各个版本和当前状态,需要针对文件***的不同操作而对目录项条目和节点条目进行处理。
图8为图7中步骤S15的流程示意图。如图8所示,在一些示例中,图7中的步骤S15可以进一步包括如下操作。
步骤S151:对于新建文件操作,创建与新建的文件对应的原生目录项条目和原生节点条目,并将当前的***版本号作为原生目录项条目的第一编辑版本号和原生节点条目的第二编辑版本号;
步骤S152:对于删除文件操作,复制与待删除文件对应的原生目录项条目和原生节点条目,基于复制的内容创建与待删除文件对应的快照目录项条目和快照节点条目,并删除与待删除文件对应的原生目录项条目和原生节点条目;
步骤S153:对于修改文件操作,复制与待修改文件对应的原生节点条目,基于复制的内容创建与待修改文件对应的快照节点条目,并基于修改内容更新待修改文件对应的原生节点条目。
例如,在步骤S151中,当进行新建文件操作时(该操作可以新建文件,也可以新建文件夹),创建与新建的文件对应的原生目录项条目和原生节点条目,并将创建时当前的***版本号作为原生目录项条目的第一编辑版本号和原生节点条目的第二编辑版本号。由此,可以通过第一编辑版本号或第二编辑版本号记录对应的条目是在该文件***的哪个版本创建的。例如,新建的文件可以是指文件,也可以是指文件夹,本公开的实施例对此不作限制。
例如,在步骤S152中,当进行删除文件操作时(该操作可以删除文件,也可以删除文件夹),复制与待删除文件对应的原生目录项条目和原生节点条目,基于复制的内容创建与待删除文件对应的快照目录项条目和快照节点条目,然后,删除与待删除文件对应的原生目录项条目和原生节点条目。也即是,若直接删除与待删除文件对应的原生目录项条目和原生节点条目,则当需要访问快照时,无法获取到该待删除文件的信息,因此需要基于该待删除文件的信息创建快照目录项条目和快照节点条目,然后再执行删除操作,由此便于后续访问快照时可以获取到该待删除文件的信息。例如,待删除文件可以是指文件,也可以是指文件夹,本公开的实施例对此不作限制。
例如,文件***的元数据还包括全局快照计数。全局快照计数可以记录该文件***所做过的快照的数量,相应的数值可以作为该文件***的***版本号。例如,在每次执行创建快照的操作时,全局快照计数增加,例如递增1,以实现计数。
图9为图8中步骤S152的流程示意图。如图9所示,在一些示例中,图8中的步骤S152可以进一步包括如下操作。
步骤S1521:将原生目录项条目的第一编辑版本号与当前的全局快照计数组成的数值区间作为快照目录项条目的第一快照版本号,并将原生目录项条目中记载的组织信息作为快照目录项条目的组织信息;
步骤S1522:将原生节点条目的第二编辑版本号与当前的全局快照计数组成的数值区间作为快照节点条目的第二快照版本号,并将原生节点条目中记载的文件属性信息作为快照节点条目的文件属性信息。
例如,在步骤S1521中,由于该原生目录项条目从创建时至删除前一直存在,因此其对应的快照版本的数值大于第一编辑版本号,且小于等于当前的全局快照计数,由此,可以将第一编辑版本号与当前的全局快照计数组成的数值区间(例如为前开后闭区间)作为快照目录项条目的第一快照版本号。将原生目录项条目中记载的组织信息作为快照目录项条目的组织信息。由此,创建了相应的快照目录项条目。
例如,在步骤S1522中,由于该原生节点条目从创建时至删除前一直存在,因此其对应的快照版本的数值大于第二编辑版本号,且小于等于当前的全局快照计数,由此,可以将第二编辑版本号与当前的全局快照计数组成的数值区间(例如为前开后闭区间)作为快照节点条目的第二快照版本号。将原生节点条目中记载的文件属性信息作为快照节点条目的文件属性信息。由此,创建了相应的快照节点条目。
当执行完步骤S1521和S1522之后,可以将与待删除文件对应的原生目录项条目和原生节点条目删除。
图10为本公开一些实施例提供的快照实现方法中针对删除文件操作的元数据处理方式示意图。例如,在一些示例中,如图10所示,当需要删除dir2、file2时,需要先拷贝dir2和file2的原生目录项条目和原生节点条目,并基于拷贝的内容创建对应的快照目录项条目和快照节点条目,然后再删除dir2和file2的原生目录项条目和原生节点条目。例如,该过程可以称为生成快照数据库记录(COW)。
返回图8,例如,在步骤S153中,当进行修改文件操作时,复制与待修改文件对应的原生节点条目,然后基于复制的内容创建与待修改文件对应的快照节点条目,之后,基于修改内容更新待修改文件对应的原生节点条目。也即是,若直接修改与待修改文件对应的原生节点条目,则当需要访问快照时,无法获取到该待修改文件在修改之前的信息,因此需要基于该待修改文件的信息创建快照节点条目,然后再执行修改操作,由此便于后续访问快照时可以获取到该待修改文件在修改之前的信息。例如,待修改文件可以是指文件,也可以是指文件夹,本公开的实施例对此不作限制。需要说明的是,当进行修改文件操作时,无需对待修改文件对应的原生目录项条目进行修改,这是由于修改文件操作不会导致其目录项条目发生变化。
图11为图8中步骤S153的流程示意图。如图11所示,在一些示例中,图8中的步骤S153可以进一步包括如下操作。
步骤S1531:将与待修改文件对应的原生节点条目的第二编辑版本号与当前的全局快照计数组成的数值区间作为快照节点条目的第二快照版本号,并将与待修改文件对应的原生节点条目中记载的文件属性信息作为快照节点条目的文件属性信息;
步骤S1532:基于修改内容修改与待修改文件对应的原生节点条目,并将当前的***版本号作为原生节点条目的第二编辑版本号,以实现对原生节点条目的更新。
例如,在步骤S1531中,由于该原生节点条目从创建时至修改前一直存在,因此其对应的快照版本的数值大于第二编辑版本号,且小于等于当前的全局快照计数,由此,可以将第二编辑版本号与当前的全局快照计数组成的数值区间(例如为前开后闭区间)作为快照节点条目的第二快照版本号。将原生节点条目中记载的文件属性信息作为快照节点条目的文件属性信息。由此,创建了相应的快照节点条目。即使之后对待修改文件进行了修改,由于快照节点条目中已经记录了修改前的信息,因此可以用于后续的快照访问。
例如,在步骤S1532中,在创建了相应的快照节点条目之后,基于修改内容修改与待修改文件对应的原生节点条目,并将当前的***版本号作为原生节点条目的第二编辑版本号,以指示该原生节点条目是在哪个版本中修改过的,从而实现对原生节点条目的更新。
图12为本公开一些实施例提供的快照实现方法中针对删除文件操作和修改文件操作的元数据处理方式示意图。例如,如图12所示,在该示例中,需要删除dir2、file2并且修改dir3、file3。针对删除dir2、file2的操作方式与图10所示的示例类似,此处不再赘述。当需要修改dir3、file3时,需要先拷贝dir3、file3的原生节点条目,并基于拷贝的内容创建对应的快照节点条目,然后再对dir3和file3的原生节点条目进行修改以实现更新。此时,由于dir3和file3对应的目录项未做修改,因此dir3和file3的原生目录项条目无需修改。
图13为利用本公开实施例提供的快照实现方法进行快照访问的示意图。例如,在该示例中,如图13所示,左上角的表格为基于键值存储的元数据存储表,该表格的每一行表示一个目录项条目,带有快照标识符S的为快照目录项条目,没有快照标识符S的为原生目录项条目。例如,在图13左上角的表格中,第3行、第6行、第10行为快照目录项条目,其他行为原生目录项条目。表格的第一列为父目录的索引节点编号,表格的第二列为该条目对应的对象的名称,第一列和第二列均为存储在键字段的信息。表格的第三列为第一快照版本号的起点数或第一编辑版本号,当该条目为快照目录项条目时为第一快照版本号的起点数,也即快照起始版本,当该条目为原生目录项条目时为第一编辑版本号。表格的第四列为第一快照版本号的终点数。利用起点数和终点数,可以确定第一快照版本号的数值区间。表格的第五列为全局快照计数。表格的第六列为该条目对应的索引节点编号。关于图13左上角的表格中的具体数值不再一一列举说明,可参考上文中针对该表格的各行各列的解释说明。
例如,利用这些条目中的原生目录项条目,可以得到该文件***的当前文件的组织信息,也即当前文件的树状结构。例如,如图13所示,当前文件的树状结构包括文件夹fs0、dir1、dir1.2、dir2,并且还包括文件file1.a、file2.a、file0。利用这些条目中的原生目录项条目和快照节点条目,可以得到第1版本的快照(也即快照1)的组织信息,例如,快照1的组织信息包括文件夹dir1.1和文件file1.1.a。利用这些条目中的原生目录项条目和快照节点条目,还可以得到第2版本的快照(也即快照2)的组织信息,例如,快照2的组织信息包括文件夹dir1、dir1.1,并且还包括文件file1.1.a、file1.a。由此,可以实现对当前文件的访问以及对任意一个版本的快照的访问。
在本公开实施例提供的方法中,将快照逻辑进行抽象描述,将目录项信息(dentry)和索引节点信息(inode)进行分离,从而实现快照(snap)保护逻辑。通过记录快照配置信息以及版本信息,可以简化快照复杂度,方便在文件***中实现。快照元数据按照原有文件***元数据接口进行统一描述,简化了元数据相关逻辑,快照之间不再进行逻辑关系约束,使得快照数量不会对原生文件***造成影响,从而优化了快照逻辑。快照目录项条目和快照节点条目可以通过原生文件方式进行构造,以实现访问。与快照相关的元数据和非快照元数据可以统一存放,从而简化了文件***关于元数据存储的相关设计。
需要说明的是,本公开实施例提供的快照实现方法不限于上文中描述的步骤,还可以包括更多的步骤。各个步骤的执行顺序不受限制,虽然上文中以特定顺序描述了各个步骤,但这并不构成对本公开实施例的限制。
本公开至少一个实施例还提供一种用于文件***的快照实现装置,该快照实现装置将快照逻辑进行抽象描述,使得快照之间不再进行逻辑关系约束,从而简化快照复杂度,简化元数据相关逻辑,易于在文件***中实现。
图14为本公开一些实施例提供的一种用于文件***的快照实现装置的示意框图。如图14所示,快照实现装置100包括第一确定单元110、第二确定单元120、第三确定单元130和访问单元140。
例如,该快照实现装置100用于文件***,该文件***的元数据包括多个目录项条目和多个节点条目。多个目录项条目包括至少一个原生目录项条目和至少一个快照目录项条目。原生目录项条目记载文件***当前的组织信息,原生目录项条目包括第一编辑版本号。快照目录项条目记载文件***中当前不存在、在生成快照时存在的组织信息,快照目录项条目包括第一快照版本号。多个节点条目包括至少一个原生节点条目和至少一个快照节点条目。原生节点条目记载文件***当前的文件属性信息,原生节点条目包括第二编辑版本号。快照节点条目记载文件***中当前不存在、在生成快照时存在的文件属性信息,快照节点条目包括第二快照版本号。
例如,第一确定单元110配置为基于目标版本号、原生目录项条目包含的第一编辑版本号、快照目录项条目包含的第一快照版本号,在多个目录项条目中选择至少一个目录项条目以作为目标目录项条目。例如,目标版本号为需要访问的快照对应的版本号。例如,第一确定单元110可以执行如图3所示的快照实现方法的步骤S11。
例如,第二确定单元120配置为确定与每个目标目录项条目对应的至少一个节点条目。第二确定单元120可以执行如图3所示的快照实现方法的步骤S12。
例如,第三确定单元130配置为基于目标版本号、原生节点条目包含的第二编辑版本号、快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中选择得到目标节点条目。第三确定单元130可以执行如图3所示的快照实现方法的步骤S13。
例如,访问单元140配置为基于目标目录项条目和目标节点条目得到需要访问的快照。需要访问的快照的元数据包括目标目录项条目和目标节点条目。例如,访问单元140可以执行如图3所示的快照实现方法的步骤S14。
例如,第一确定单元110、第二确定单元120、第三确定单元130和访问单元140可以为硬件、软件、固件以及它们的任意可行的组合。例如,第一确定单元110、第二确定单元120、第三确定单元130和访问单元140可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于第一确定单元110、第二确定单元120、第三确定单元130和访问单元140的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,快照实现装置100的各个单元与前述的快照实现方法的各个步骤对应,关于该快照实现装置100的具体功能可以参考上文中快照实现方法的相关描述,此处不再赘述。图14所示的快照实现装置100的组件和结构只是示例性的,而非限制性的,根据需要,该快照实现装置100还可以包括其他组件和结构。
本公开至少一个实施例还提供一种电子设备,该电子设备包括本公开任一实施例提供的用于文件***的快照实现装置。该电子设备将快照逻辑进行抽象描述,使得快照之间不再进行逻辑关系约束,从而简化快照复杂度,简化元数据相关逻辑,易于在文件***中实现。
图15为本公开一些实施例提供的一种电子设备的示意框图。如图15所示,电子设备200包括快照实现装置210,该快照实现装置210可以为图14所示的快照实现装置100。例如,该电子设备200可以为分布式NAS***或其他任意的需要实现快照的***,本公开的实施例对此不作限制。关于该电子设备200的相关说明可参考上文中关于快照实现装置100的描述,此处不再赘述。
本公开至少一个实施例还提供一种电子设备,该电子设备包括处理器和存储器,一个或多个计算机程序模块被存储在该存储器中并被配置为由该处理器执行,一个或多个计算机程序模块包括用于实现本公开任一实施例提供的用于文件***的快照实现方法。该电子设备将快照逻辑进行抽象描述,使得快照之间不再进行逻辑关系约束,从而简化快照复杂度,简化元数据相关逻辑,易于在文件***中实现。
图16为本公开一些实施例提供的另一种电子设备的示意框图。如图16所示,该电子设备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的具体功能和技术效果可以参考上文中关于用于文件***的快照实现方法的描述,此处不再赘述。
本公开至少一个实施例还提供一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当该非暂时性计算机可读指令由计算机执行时用于实现本公开任一实施例提供的用于文件***的快照实现方法。利用该计算机可读存储介质,可以将快照逻辑进行抽象描述,使得快照之间不再进行逻辑关系约束,从而简化快照复杂度,简化元数据相关逻辑,易于在文件***中实现。
图17为本公开一些实施例提供的一种计算机可读存储介质的示意图。如图17所示,计算机可读存储介质400用于存储非暂时性计算机可读指令410。例如,当非暂时性计算机可读指令410由计算机执行时用于执行根据上文所述的用于文件***的快照实现方法中的一个或多个步骤。
例如,该计算机可读存储介质400可以应用于上述电子设备中。例如,计算机可读存储介质400可以为图16所示的电子设备300中的存储器320。例如,关于计算机可读存储介质400的相关说明可以参考图16所示的电子设备300中的存储器320的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种用于文件***的快照实现方法,其特征在于,所述文件***的元数据包括多个目录项条目和多个节点条目,
所述多个目录项条目包括至少一个原生目录项条目和至少一个快照目录项条目,所述原生目录项条目记载所述文件***当前的组织信息,所述原生目录项条目包括第一编辑版本号,所述快照目录项条目记载所述文件***中当前不存在、在生成快照时存在的组织信息,所述快照目录项条目包括第一快照版本号,
所述多个节点条目包括至少一个原生节点条目和至少一个快照节点条目,所述原生节点条目记载所述文件***当前的文件属性信息,所述原生节点条目包括第二编辑版本号,所述快照节点条目记载所述文件***中当前不存在、在生成快照时存在的文件属性信息,所述快照节点条目包括第二快照版本号,
所述方法包括:
基于目标版本号、所述原生目录项条目包含的第一编辑版本号、所述快照目录项条目包含的第一快照版本号,在所述多个目录项条目中选择至少一个目录项条目以作为目标目录项条目,其中,所述目标版本号为需要访问的快照对应的版本号;
确定与每个目标目录项条目对应的至少一个节点条目;
基于所述目标版本号、所述原生节点条目包含的第二编辑版本号、所述快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中选择得到目标节点条目;
基于所述目标目录项条目和所述目标节点条目得到所述需要访问的快照,其中,所述需要访问的快照的元数据包括所述目标目录项条目和所述目标节点条目。
2.根据权利要求1所述的方法,其特征在于,基于所述目标版本号、所述原生目录项条目包含的第一编辑版本号、所述快照目录项条目包含的第一快照版本号,在所述多个目录项条目中选择至少一个目录项条目以作为所述目标目录项条目,包括:
对于所述多个目录项条目中的原生目录项条目,选择第一编辑版本号小于所述目标版本号的原生目录项条目以作为所述目标目录项条目;
对于所述多个目录项条目中的快照目录项条目,选择第一快照版本号包含所述目标版本号的快照目录项条目以作为所述目标目录项条目。
3.根据权利要求1所述的方法,其特征在于,所述多个目录项条目和所述多个节点条目中的每个包括节点标识;
确定与每个目标目录项条目对应的至少一个节点条目,包括:
对于每个目标目录项条目,根据所述目标目录项条目中的节点标识,在所述多个节点条目中选择具有与所述目标目录项条目相同的节点标识的节点条目,以作为与所述目标目录项条目对应的至少一个节点条目。
4.根据权利要求1所述的方法,其特征在于,基于所述目标版本号、所述原生节点条目包含的第二编辑版本号、所述快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中选择得到所述目标节点条目,包括:
对于与每个目标目录项条目对应的节点条目中的原生节点条目,选择第二编辑版本号小于所述目标版本号的原生节点条目以作为所述目标节点条目;
对于与每个目标目录项条目对应的节点条目中的快照节点条目,选择第二快照版本号包含所述目标版本号的快照节点条目以作为所述目标节点条目。
5.根据权利要求2或4所述的方法,其特征在于,所述第一快照版本号和所述第二快照版本号均以数值区间的形式记载,所述数值区间包括起点数和终点数,所述起点数小于或等于所述终点数。
6.根据权利要求5所述的方法,其特征在于,所述数值区间为半开半闭区间,所述起点数不属于所述数值区间,所述终点数属于所述数值区间。
7.根据权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
处理所述多个目录项条目和所述多个节点条目。
8.根据权利要求7所述的方法,其特征在于,处理所述多个目录项条目和所述多个节点条目,包括:
对于新建文件操作,创建与新建的文件对应的原生目录项条目和原生节点条目,并将当前的***版本号作为所述原生目录项条目的第一编辑版本号和所述原生节点条目的第二编辑版本号;
对于删除文件操作,复制与待删除文件对应的原生目录项条目和原生节点条目,基于复制的内容创建与所述待删除文件对应的快照目录项条目和快照节点条目,并删除与所述待删除文件对应的原生目录项条目和原生节点条目;
对于修改文件操作,复制与待修改文件对应的原生节点条目,基于复制的内容创建与所述待修改文件对应的快照节点条目,并基于修改内容更新所述待修改文件对应的原生节点条目。
9.根据权利要求8所述的方法,其特征在于,所述文件***的元数据还包括全局快照计数,在每次执行创建快照的操作时所述全局快照计数增加以实现计数。
10.根据权利要求9所述的方法,其特征在于,对于所述删除文件操作,复制与所述待删除文件对应的原生目录项条目和原生节点条目,基于复制的内容创建与所述待删除文件对应的快照目录项条目和快照节点条目,包括:
将所述原生目录项条目的第一编辑版本号与当前的全局快照计数组成的数值区间作为所述快照目录项条目的第一快照版本号,并将所述原生目录项条目中记载的组织信息作为所述快照目录项条目的组织信息;
将所述原生节点条目的第二编辑版本号与当前的全局快照计数组成的数值区间作为所述快照节点条目的第二快照版本号,并将所述原生节点条目中记载的文件属性信息作为所述快照节点条目的文件属性信息。
11.根据权利要求9所述的方法,其特征在于,对于所述修改文件操作,复制与所述待修改文件对应的原生节点条目,基于复制的内容创建与所述待修改文件对应的快照节点条目,并基于所述修改内容更新所述待修改文件对应的原生节点条目,包括:
将与所述待修改文件对应的原生节点条目的第二编辑版本号与当前的全局快照计数组成的数值区间作为所述快照节点条目的第二快照版本号,并将与所述待修改文件对应的原生节点条目中记载的文件属性信息作为所述快照节点条目的文件属性信息;
基于所述修改内容修改与所述待修改文件对应的原生节点条目,并将所述当前的***版本号作为所述原生节点条目的第二编辑版本号,以实现对所述原生节点条目的更新。
12.根据权利要求1-4任一所述的方法,其特征在于,所述多个目录项条目和所述多个节点条目均采用键值存储方式进行存储。
13.根据权利要求1-4任一所述的方法,其特征在于,对于所述多个目录项条目,采用快照标识符区分所述多个目录项条目中的原生目录项条目和快照目录项条目,所述快照目录项条目包括所述快照标识符,所述原生目录项条目中不存在所述快照标识符;
对于所述多个节点条目,采用所述快照标识符区分所述多个节点条目中的原生节点条目和快照节点条目,所述快照节点条目包括所述快照标识符,所述原生节点条目中不存在所述快照标识符。
14.一种用于文件***的快照实现装置,其特征在于,所述文件***的元数据包括多个目录项条目和多个节点条目,
所述多个目录项条目包括至少一个原生目录项条目和至少一个快照目录项条目,所述原生目录项条目记载所述文件***当前的组织信息,所述原生目录项条目包括第一编辑版本号,所述快照目录项条目记载所述文件***中当前不存在、在生成快照时存在的组织信息,所述快照目录项条目包括第一快照版本号,
所述多个节点条目包括至少一个原生节点条目和至少一个快照节点条目,所述原生节点条目记载所述文件***当前的文件属性信息,所述原生节点条目包括第二编辑版本号,所述快照节点条目记载所述文件***中当前不存在、在生成快照时存在的文件属性信息,所述快照节点条目包括第二快照版本号,
所述装置包括:
第一确定单元,配置为基于目标版本号、所述原生目录项条目包含的第一编辑版本号、所述快照目录项条目包含的第一快照版本号,在所述多个目录项条目中选择至少一个目录项条目以作为目标目录项条目,其中,所述目标版本号为需要访问的快照对应的版本号;
第二确定单元,配置为确定与每个目标目录项条目对应的至少一个节点条目;
第三确定单元,配置为基于所述目标版本号、所述原生节点条目包含的第二编辑版本号、所述快照节点条目包含的第二快照版本号,在与每个目标目录项条目对应的至少一个节点条目中选择得到目标节点条目;
访问单元,配置为基于所述目标目录项条目和所述目标节点条目得到所述需要访问的快照,其中,所述需要访问的快照的元数据包括所述目标目录项条目和所述目标节点条目。
15.一种电子设备,其特征在于,所述电子设备包括如权利要求14所述的用于文件***的快照实现装置。
16.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现权利要求1-13任一所述的用于文件***的快照实现方法。
17.一种计算机可读存储介质,其特征在于,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时用于实现权利要求1-13任一所述的用于文件***的快照实现方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110867353.1A CN113342741B (zh) | 2021-07-30 | 2021-07-30 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
PCT/CN2022/105946 WO2023005688A1 (zh) | 2021-07-30 | 2022-07-15 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110867353.1A CN113342741B (zh) | 2021-07-30 | 2021-07-30 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342741A CN113342741A (zh) | 2021-09-03 |
CN113342741B true CN113342741B (zh) | 2021-10-12 |
Family
ID=77480472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110867353.1A Active CN113342741B (zh) | 2021-07-30 | 2021-07-30 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113342741B (zh) |
WO (1) | WO2023005688A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342741B (zh) * | 2021-07-30 | 2021-10-12 | 联想凌拓科技有限公司 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
CN115185891B (zh) * | 2022-09-14 | 2023-01-17 | 联想凌拓科技有限公司 | 文件***的数据管理方法及装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140536A (zh) * | 2007-05-21 | 2008-03-12 | 中兴通讯股份有限公司 | 一种支持级联快照的快照***及其快照处理方法 |
CN101162469A (zh) * | 2007-11-09 | 2008-04-16 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
CN102722536A (zh) * | 2012-05-22 | 2012-10-10 | 中兴通讯股份有限公司 | 基于分布式文件***的快照实现方法及装置 |
CN103577329A (zh) * | 2013-10-18 | 2014-02-12 | 华为技术有限公司 | 一种快照管理方法和装置 |
CN104933133A (zh) * | 2015-06-12 | 2015-09-23 | 中国科学院计算技术研究所 | 分布式文件***中的元数据快照存储和访问方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4439960B2 (ja) * | 2004-03-22 | 2010-03-24 | 株式会社日立製作所 | ストレージ装置 |
US9886349B2 (en) * | 2015-09-21 | 2018-02-06 | International Business Machines Corporation | Point-in-time copy on write for golden image |
US11119978B2 (en) * | 2016-06-08 | 2021-09-14 | Red Hat Israel, Ltd. | Snapshot version control |
US11204892B2 (en) * | 2019-03-21 | 2021-12-21 | Microsoft Technology Licensing, Llc | Techniques for snapshotting scalable multitier storage structures |
CN113342741B (zh) * | 2021-07-30 | 2021-10-12 | 联想凌拓科技有限公司 | 快照实现方法及装置、电子设备及计算机可读存储介质 |
-
2021
- 2021-07-30 CN CN202110867353.1A patent/CN113342741B/zh active Active
-
2022
- 2022-07-15 WO PCT/CN2022/105946 patent/WO2023005688A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140536A (zh) * | 2007-05-21 | 2008-03-12 | 中兴通讯股份有限公司 | 一种支持级联快照的快照***及其快照处理方法 |
CN101162469A (zh) * | 2007-11-09 | 2008-04-16 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
CN102722536A (zh) * | 2012-05-22 | 2012-10-10 | 中兴通讯股份有限公司 | 基于分布式文件***的快照实现方法及装置 |
CN103577329A (zh) * | 2013-10-18 | 2014-02-12 | 华为技术有限公司 | 一种快照管理方法和装置 |
CN104933133A (zh) * | 2015-06-12 | 2015-09-23 | 中国科学院计算技术研究所 | 分布式文件***中的元数据快照存储和访问方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2023005688A1 (zh) | 2023-02-02 |
CN113342741A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104714755B (zh) | 一种快照管理方法及装置 | |
US10936547B2 (en) | Filesystem replication using a minimal filesystem metadata changelog | |
US8250033B1 (en) | Replication of a data set using differential snapshots | |
US9946716B2 (en) | Distributed file system snapshot | |
US7953704B2 (en) | Systems and methods for a snapshot of data | |
JP5247202B2 (ja) | バックアップ・データの一番上への実装用読込み/書込み、マルチ・バージョン管理ファイル・システム | |
US7882071B2 (en) | Systems and methods for a snapshot of data | |
JP6430499B2 (ja) | Posix互換なファイル・システム、ファイル・リストを生成する方法および記憶デバイス | |
US8131691B1 (en) | System and method for updating a search engine index based on which files are identified in a file change log | |
US10303363B2 (en) | System and method for data storage using log-structured merge trees | |
US8874517B2 (en) | Summarizing file system operations with a file system journal | |
EP2154617A1 (en) | Data management method | |
US20120084272A1 (en) | File system support for inert files | |
WO2023005688A1 (zh) | 快照实现方法及装置、电子设备及计算机可读存储介质 | |
US20120030439A1 (en) | Data Sharing for File Clones Using Reverse Ditto References | |
CN115185891B (zh) | 文件***的数据管理方法及装置、电子设备及存储介质 | |
US20090254585A1 (en) | Method for Associating Administrative Policies with User-Definable Groups of Files | |
US20070156778A1 (en) | File indexer | |
WO2021129151A1 (zh) | 文件备份方法、装置及终端设备 | |
CN112800019A (zh) | 基于Hadoop分布式文件***的数据备份方法及*** | |
CN113448946A (zh) | 数据迁移方法及装置、电子设备 | |
CN114356849B (zh) | 文件***的数据管理方法及装置、电子设备及存储介质 | |
WO2008021528A2 (en) | Systems and methods for a snapshot of data | |
AU2019245775B2 (en) | Multiprotocol data migration | |
US9430513B1 (en) | Methods and apparatus for archiving system having policy based directory rename recording |
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: 40061779 Country of ref document: HK |