CN114356849B - 文件系统的数据管理方法及装置、电子设备及存储介质 - Google Patents
文件系统的数据管理方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114356849B CN114356849B CN202210274271.0A CN202210274271A CN114356849B CN 114356849 B CN114356849 B CN 114356849B CN 202210274271 A CN202210274271 A CN 202210274271A CN 114356849 B CN114356849 B CN 114356849B
- Authority
- CN
- China
- Prior art keywords
- data
- bitmap
- snapshot
- item
- bits
- 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
-
- 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
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为一种文件系统的文件结构示意图;
图2为本公开一些实施例提供的一种文件系统中的位图的示意图;
图3为本公开一些实施例提供的一种用于文件系统的数据管理方法的流程示意图;
图4为图3中步骤S10的示例性流程图;
图5为图3中步骤S20的示例性流程图;
图6为图5中步骤S21的示例性流程图;
图7为图5中步骤S22的示例性流程图;
图8为本公开一些实施例提供的另一种用于文件系统的数据管理方法的流程示意图;
图9为本公开一些实施例提供的另一种用于文件系统的数据管理方法的流程示意图;
图10为图9中步骤S80的示例性流程图;
图11A为本公开一些实施例提供的数据管理方法所采用的数据结构示意图之一;
图11B为本公开一些实施例提供的数据管理方法所采用的数据结构示意图之二;
图12A为本公开一些实施例提供的数据管理方法中的读操作的示意图;
图12B为本公开一些实施例提供的数据管理方法中的写操作的示意图;
图13为本公开一些实施例提供的一种用于文件系统的数据管理装置的示意框图;
图14为本公开一些实施例提供的一种电子设备的示意框图;
图15为本公开一些实施例提供的另一种电子设备的示意框图;
图16为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
快照通常用于文件系统,由于文件系统具有复杂的元数据、数据等信息,这导致快照实现较为复杂。例如,在生成快照时,无法实现快照之间的级联关系,即本目录做了快照,一般会使得子目录无法再做快照,这对快照的实现造成了限制,导致使用不便。并且,快照的数据部分对对象存储设备(Object Storage Device,OSD)的依赖性强,使得针对OSD的优化、重构、新特性开发受到限制,也不便于维护快照功能。
本公开至少一个实施例提供一种用于文件系统的数据管理方法及数据管理装置、电子设备及存储介质。该数据管理方法将快照的数据部分从对象存储设备(OSD)中独立出来,减少了文件系统快照对对象存储设备的依赖,便于管理维护快照整体功能,便于开发者对对象存储设备进行更改。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
本公开至少一个实施例提供一种用于文件系统的数据管理方法。该文件系统包括文件数据,文件数据被划分为多个数据片。文件系统还包括源文件项和快照项。源文件项包括第一位图和第二位图,快照项包括第三位图。第一位图的多个比特位与多个数据片一一对应,第一位图用于记录多个数据片的写入状态。第二位图的多个比特位与多个数据片一一对应,第二位图用于记录多个数据片的快照生成状态。第三位图的多个比特位与多个数据片一一对应,第三位图用于记录多个数据片的迁移状态。该方法包括:响应于接收到数据写请求,根据第一位图和第二位图判断是否进行数据迁移;响应于确定进行数据迁移,执行数据迁移操作并更新第一位图、第二位图、第三位图中对应的比特位。
例如,文件系统通常包括数据和元数据。元数据是用于描述数据的数据(dataabout data),主要描述数据属性的信息,用来支持例如指示存储位置、历史数据、资源查找、文件记录等功能。文件系统的元数据例如包括目录项(dentry)和索引节点(inode)。目录项用于描述文件系统中文件(或文件夹)的组织形式,索引节点为文件(或文件夹)的属性信息。在文件系统中,每个文件都对应一个索引节点,以作为该文件的唯一编号,文件系统通过索引节点编号(inodeid)来访问索引节点的信息。
数据(或称为数据部分)是每个文件的具体内容,利用元数据可以得到数据部分的属性信息,从而确定数据部分的存储位置(或存储地址),由此可以对数据部分进行读写操作。例如,在一些示例中,如图1所示,利用该文件系统的目录项,可以得到反映该文件系统组织信息的树状结构,然后,利用文件(或文件夹)dir1、dir2、dir3、file1、file2的索引节点编号获取对应的索引节点的信息,从而可以读取到每个文件(或文件夹)的具体内容,也即对应的数据部分。例如,在该示例中,dir1、dir2、dir3表示文件夹,file1、file2表示文件。
例如,在本公开的实施例中,文件系统包括文件数据,文件数据即为前述的数据部分。例如,文件数据是指该文件系统中除了元数据以外的数据。例如,文件数据被划分为多个数据片。每个数据片的大小例如为512K。当然,本公开的实施例不限于此,每个数据片的大小也可以为256K、1M、2M或其他任意的大小,这可以根据实际需求而定,例如根据文件系统的特性而定。
在本公开的实施例中,文件系统还包括源文件项和快照项。源文件项是指针对文件系统本身的文件或文件夹的数据对象,而快照项是指针对文件系统的快照的数据对象。例如,不同的快照项针对不同版本的快照。
在本公开的实施例中,例如,源文件项包括第一位图和第二位图,快照项包括第三位图。这里,第一位图、第二位图、第三位图均是指bitmap,“第一”、“第二”、“第三”用于区分不同的bitmap。每个位图包括多个比特位(bit),位图的大小(bitmap size)例如为4k,也可以为其他任意适用的大小,本公开的实施例对此不作限制。例如,在一些示例中,位图的每个比特位(bit)对应大小为512K的数据片,因此位图的每字节对应一个4M的数据块(block),4k的位图(bitmap size=4k)可以对应16G的文件数据,每当文件写入内容超过16G后,位图会再动态申请4k大小。例如,第一位图、第二位图、第三位图的大小可以相同或不同。
第一位图的多个比特位与多个数据片一一对应,第一位图用于记录多个数据片的写入状态。例如,第一位图的每个比特位对应于一个数据片,不同的比特位对应于不同的数据片。对于第一位图的每个比特位,该比特位为有效值时表示对应的数据片已被写入,该比特位为无效值时表示对应的数据片未被写入。例如,可以用“1”表示有效值,用“0”表示无效值。
第二位图的多个比特位与多个数据片一一对应,第二位图用于记录多个数据片的快照生成状态。例如,第二位图的每个比特位对应于一个数据片,不同的比特位对应于不同的数据片。对于第二位图的每个比特位,该比特位为有效值时表示对应的数据片已打过快照,该比特位为无效值时表示对应的数据片还未打过快照。例如,可以用“1”表示有效值,用“0”表示无效值。
第三位图的多个比特位与多个数据片一一对应,第三位图用于记录多个数据片的迁移状态。例如,第三位图的每个比特位对应于一个数据片,不同的比特位对应于不同的数据片。对于第三位图的每个比特位,该比特位为有效值时表示对应的数据片已做过数据迁移,该比特位为无效值时表示对应的数据片未做过数据迁移。例如,可以用“1”表示有效值,用“0”表示无效值。例如,数据迁移可以指写时拷贝(copy-on-write,COW),当进行COW操作时,相应的数据片会被拷贝至新的存储位置以作为快照的数据部分。
图2为本公开一些实施例提供的一种文件系统中的位图的示意图。在一些示例中,如图2所示,位图包括多个比特位,图2中每个方框表示位图中的一个比特位,每个比特位对应于一个数据片。例如,该比特位有可能是1,也有可能是0,从而表示不同的含义。例如,第一位图、第二位图、第三位图都可以采用类似的bitmap结构,只不过不同的位图中比特位的含义有所不同。
图3为本公开一些实施例提供的一种用于文件系统的数据管理方法的流程示意图。如图3所示,在一些实施例中,该数据管理方法包括如下操作。
步骤S10:响应于接收到数据写请求,根据第一位图和第二位图判断是否进行数据迁移;
步骤S20:响应于确定进行数据迁移,执行数据迁移操作并更新第一位图、第二位图、第三位图中对应的比特位。
例如,在步骤S10中,数据写请求可以触发针对源文件项的数据写操作,从而对文件系统本身的文件或文件夹进行修改。由于数据写操作会更改数据内容,因此如果相应的文件或文件夹已经打过快照,那么需要进行数据迁移(例如COW)。因此,接收到数据写请求后,需要根据第一位图和第二位图判断是否进行数据迁移。例如,快照项集合为数据仓库,只有对源文件项的重复写会将数据COW到最后一个快照项的对应位置,而其他在先版本的快照项的数据不会再变化。
图4为图3中步骤S10的示例性流程图。在一些示例中,如图4所示,上述步骤S10包括如下操作。
步骤S11:根据数据写请求确定所要操作的数据片;
步骤S12:读取第一位图中与该数据片对应的比特位,并且读取第二位图中与该数据片对应的比特位;
步骤S13:响应于第一位图中与该数据片对应的比特位为有效值且第二位图中与该数据片对应的比特位为有效值,确定进行数据迁移。
步骤S14:响应于第一位图中与该数据片对应的比特位为无效值或者第二位图中与该数据片对应的比特位为无效值,确定不进行数据迁移。
例如,在步骤S11中,数据写请求会携带信息以表示该写请求是针对哪个或哪些数据片进行写操作,因此,可以解析数据写请求携带的信息而确定所要操作的数据片。
例如,在步骤S12中,由于已经确定了需要操作的数据片,根据数据片与第一位图、第二位图的对应关系,可以确定出第一位图中对应于该数据片的比特位,并且确定出第二位图中对应于该数据片的比特位,由此,分别读取第一位图和第二位图中与该数据片对应的比特位。
例如,在步骤S13中,若第一位图中与该数据片对应的比特位为有效值(例如为1)且第二位图中与该数据片对应的比特位为有效值(例如为1),则确定需要进行数据迁移。例如,第一位图中与该数据片对应的比特位为有效值表示该数据片已被写入,因此存在文件数据。第二位图中与该数据片对应的比特位为有效值表示该数据片已生成过快照,因此,在进行写操作之前需要进行数据迁移(例如COW),从而在执行写操作之后仍然能够根据快照获取原来的文件数据。
例如,在步骤S14中,若第一位图中与该数据片对应的比特位为无效值(例如为0)或者第二位图中与该数据片对应的比特位为无效值(例如为0),则确定不进行数据迁移。例如,第一位图中与该数据片对应的比特位为无效值表示该数据片没有被写入,因此当然不需要做数据迁移。第二位图中与该数据片对应的比特位为无效值表示该数据片没有打过快照,因此即使要对该数据片进行写操作,也无需进行数据迁移。
返回至图3,例如,在步骤S20中,若确定进行数据迁移,则执行数据迁移操作并更新第一位图、第二位图、第三位图中对应的比特位。
图5为图3中步骤S20的示例性流程图。在一些示例中,如图5所示,上述步骤S20包括如下操作。
步骤S21:读取数据迁移操作对应的数据片,将读取的数据片构造为快照类型的数据对象并进行存储;
步骤S22:将第一位图中对应的比特位更新为有效值,将第二位图中对应的比特位更新为无效值,将第三位图中对应的比特位更新为有效值。
例如,在步骤S21中,数据迁移操作可以与通常的COW类似,也即是,将对应的数据片复制到新的存储位置,并使相应版本的快照可以定位到该新的存储位置,从而便于对原存储位置中的该数据片进行写操作。需要注意的是,在本公开的实施例中,将数据片存储到新的存储位置时,需要将其构造为快照类型的数据对象。在本公开的实施例中,将快照的数据部分进行逻辑抽象,从而可以按照文件系统数据接口进行统一实现。文件系统中的数据部分可以分为对应于源文件项的数据部分和对应于快照项的数据部分,这些都是数据对象,将其分别称为文件类型的数据对象和快照类型的数据对象。例如,可以由对象名称进行区分,例如,对于快照类型的数据对象,可以在对象的标识符(oid)中添加snap字段。
图6为图5中步骤S21的示例性流程图。在一些示例中,如图6所示,上述步骤S21包括如下操作。
步骤S211:获取文件路径的最新快照版本号;
步骤S212:读取数据迁移操作对应的数据片,将读取的数据片作为数据对象进行存储;
步骤S213:将最新快照版本号以及表示快照类型的标识信息增加到数据对象的信息域中;
步骤S214:将对应于最新快照版本号的快照项与数据对象关联。
例如,在步骤S211中,首先获取文件路径的最新快照版本号。例如,文件路径是指针对所要操作的数据片的路径,文件路径的最新快照版本号记录了所要操作的数据片的最新的快照版本。例如,在一些示例中,该最新快照版本号可以为3,则表示该数据片的最新的快照版本是第3版快照;在另一些示例中,该最新快照版本号可以为5,则表示该数据片的最新的快照版本是第5版快照。上述针对最新快照版本号的说明只是示例性的,而非限制性的,这并不构成对本公开实施例的限制。
例如,在步骤S212中,读取数据迁移操作对应的数据片,将读取的数据片作为数据对象进行存储。例如,可以将读取的数据片构造为快照类型的数据对象,关于快照类型的数据对象的详细说明可以参考前文描述,此处不再赘述。
例如,在步骤S213中,将最新快照版本号以及表示快照类型的标识信息增加到数据对象的信息域中。例如,数据对象的信息域中可以记录描述该数据对象的信息,因此可以将最新快照版本号记录在信息域中,并且将表示快照类型的标识信息(例如snap字段)也记录到信息域中。由此,读取该快照类型的数据对象时,可以获知该数据对象是快照项的数据部分,并且获知该数据对象所对应的快照版本。
例如,在步骤S214中,将对应于最新快照版本号的快照项与数据对象关联。例如,可以采用适当的寻址方式在该数据对象与对应的快照项之间建立联系,从而可以根据对应的快照项定位到该数据对象的存储位置,以便于读取该数据对象。例如,与该数据对象对应的快照项是对应于最新快照版本号的快照项。例如,在一些示例中,假设最新快照版本号为5,则该数据对象与第5版的快照项建立关联,由此,可以根据第5版的快照项定位到该数据对象的存储位置,从而读取该数据对象。
返回至图5,例如,在步骤S22中,将第一位图中对应的比特位更新为有效值,将第二位图中对应的比特位更新为无效值,将第三位图中对应的比特位更新为有效值。
图7为图5中步骤S22的示例性流程图。在一些示例中,如图7所示,上述步骤S22包括如下操作。
步骤S221:将源文件项的第一位图中对应的比特位更新为有效值,将源文件项的第二位图中对应的比特位更新为无效值;
步骤S222:获取文件路径的最新快照版本号;
步骤S223:将最新快照版本号对应的快照项的第三位图中对应的比特位更新为有效值。
例如,在步骤S221中,将源文件项的第一位图中对应的比特位更新为有效值(例如更新为1),由此表示该比特位对应的数据片被写入。由于该比特位对应的数据片在进行写操作之前已经做了数据迁移,进行写操作之后的数据片还未打过快照,因此,将源文件项的第二位图中对应的比特位更新为无效值(例如更新为0),由此表示该比特位对应的数据片还没有打过快照。
例如,在步骤S222中,获取文件路径的最新快照版本号。关于文件路径的最新快照版本号,可以参考前文内容,此处不再赘述。
例如,在步骤S223中,将最新快照版本号对应的快照项的第三位图中对应的比特位更新为有效值,由此表示对应的数据片在最新快照版本号对应的快照项中做了数据迁移。例如,在一些示例中,假设最新快照版本号为5,则将第5版的快照项的第三位图中与该数据片对应的比特位更新为有效值,由此表示该数据片在第5版的快照项中做了数据迁移。
由此,根据图3至图7所描述的步骤,在接收到数据写请求时,可以根据第一位图和第二位图判断是否做数据迁移,如果进行数据迁移,则在迁移之后更新第一位图、第二位图、第三位图对应的比特位。通过这种方式,可以将快照的数据部分从对象存储设备中独立出来,可以独立管理和维护。
图8为本公开一些实施例提供的另一种用于文件系统的数据管理方法的流程示意图。在一些实施例中,如图8所示,在前述步骤S10和步骤S20的基础上,该数据管理方法还可以进一步包括步骤S30-S70。关于步骤S10-S20,可以参考上文内容,此处不再赘述。
步骤S30:响应于接收到数据写请求,判断数据写请求是否为初次写请求;
步骤S40:响应于数据写请求为初次写请求,将第一位图的内容同步到第二位图,并将第三位图的全部比特位置为无效值;
步骤S50:响应于数据写请求为初次写请求,将第一位图的内容同步到第四位图;
步骤S60:在执行数据迁移操作并更新第一位图、第二位图、第三位图中对应的比特位之后,对源文件项执行写操作;
步骤S70:在根据第一位图和第二位图判断是否进行数据迁移之后,响应于确定不进行数据迁移,对源文件项执行写操作。
例如,在步骤S30中,在接收到数据写请求后,需要判断数据写请求是否为初次写请求。例如,在本公开的实施例中,由于全局的快照版本号与文件路径的快照版本号不会同步更新,全局的快照版本号可能会延后于文件路径的快照版本号,第二位图和第三位图在初次写操作之前可能不存在,因此,在初次写操作时需要拷贝得到第二位图和第三位图。由此,需要判断数据写请求是否为初次写请求,该初次写请求例如为first cover write。
例如,可以通过判断全局的快照版本号与文件路径的快照版本号是否相同来确定数据写请求是否为初次写请求。若全局的快照版本号与文件路径的快照版本号不同,则表示该数据写请求为初次写请求;若全局的快照版本号与文件路径的快照版本号相同,则表示该数据写请求不是初次写请求。
例如,在步骤S40中,若数据写请求为初次写请求,则将第一位图的内容同步到第二位图,并将第三位图的全部比特位设置为无效值。例如,可以复制第一位图的内容,以作为第二位图,也即是,使第二位图与第一位图相同。例如,将第三位图的全部比特位设置为无效值,由此表示并未做任何数据迁移。
例如,在一些示例中,快照项除了包括第三位图外,还包括第四位图,第四位图的多个比特位与多个数据片一一对应,第四位图用于记录创建该快照项时对应的源文件项的写入状态。第三位图和第四位图可以用于对快照项进行读、写时的拷贝及删除操作。
例如,在步骤S50中,若数据写请求为初次写请求,则将第一位图的内容同步到第四位图。例如,可以复制第一位图的内容,以作为第四位图,也即是,使第四位图与第一位图相同。例如,在触发COW的情形下,第四位图不发生变化,仅记录创建该快照项时源文件的写入情况。
例如,在步骤S60中,在执行数据迁移操作并更新第一位图、第二位图、第三位图中对应的比特位之后(也即执行步骤S20之后),对源文件项执行写操作。例如,该写操作为数据写请求所触发的,该写操作可以对源文件项的数据部分进行修改。由于在执行步骤S60的操作之前,已经判断了是否需要进行数据迁移并且在执行数据迁移操作的情况下更新了各个位图,因此,此时可以对数据片进行写操作,不会影响已经执行了数据迁移操作的数据部分。
例如,在步骤S70中,在根据第一位图和第二位图判断是否进行数据迁移之后(也即执行步骤S10之后),若确定不进行数据迁移,则对源文件项的数据部分执行写操作。由于无需进行数据迁移,则可以直接对源文件项的数据部分进行写操作。
通过这种方式,可以实现数据写操作,并且可以根据需要进行数据迁移,维护快照的数据部分,将快照的数据部分从对象存储设备中独立出来。
图9为本公开一些实施例提供的另一种用于文件系统的数据管理方法的流程示意图。如图9所示,在一些实施例中,该数据管理方法还可以包括如下操作。
步骤S80:响应于接收到快照读请求,根据各个版本的快照项的第三位图确定数据位置并读取数据;
步骤S91:响应于接收到克隆写请求,基于与克隆项关联的快照项确定数据位置并将需要的数据复制到克隆项对应的存储位置,并执行写操作;
步骤S92:响应于接收到克隆读请求,基于与克隆项关联的快照项确定数据位置并读取所需要的数据。
例如,在步骤S80中,在接收到快照读请求后,根据各个版本的快照项的第三位图确定数据位置并读取数据。
图10为图9中步骤S80的示例性流程图。在一些示例中,如图10所示,上述步骤S80包括如下操作。
步骤S81:根据快照读请求确定当前快照项,其中,当前快照项是需要读取的版本的快照项;
步骤S82:获取当前快照项的第三位图中对应的比特位;
步骤S83:响应于当前快照项的第三位图中对应的比特位为有效值,根据当前快照项确定数据位置并读取数据;
步骤S84:响应于当前快照项的第三位图中对应的比特位为无效值,依次获取更大版本号的快照项的第三位图中对应的比特位,直到获取的比特位为有效值,根据有效值对应的版本的快照项确定数据位置并读取数据;
步骤S85:响应于全部版本的快照项的第三位图中对应的比特位均为无效值,根据源文件项确定数据位置并读取数据。
例如,在步骤S81中,在接收到快照读请求时,需要确定当前快照项。例如,快照读请求可以触发针对快照项的数据读操作,从而读取快照项的数据部分。例如,当前快照项是需要读取的版本的快照项。例如,在一些示例中,假设该文件系统存在5个版本的快照项,在接收到快照读请求时,需要确定该快照读请求是要读取这5个版本中的哪个版本的快照项。例如,快照读请求会携带版本信息,从而获知所要读取的快照项的版本号。
例如,在步骤S82中,在确定了当前快照项之后,获取当前快照项的第三位图中对应的比特位。例如,第三位图记录了各个对应的数据片的迁移状态。通过获取当前快照项的第三位图中对应的比特位,可以获知对应的数据片是否进行了数据迁移。例如,若第三位图中对应的比特位为有效值,则表示对应的数据片进行了数据迁移;若第三位图中对应的比特位为无效值,则表示对应的数据片没有做数据迁移。
例如,在步骤S83中,若当前快照项的第三位图中对应的比特位为有效值,则根据当前快照项确定数据位置并读取数据。例如,第三位图中对应的比特位为有效值,表示对应的数据片进行了数据迁移,因此可以根据当前快照项定位数据位置并读取数据。
例如,在步骤S84中,若当前快照项的第三位图中对应的比特位为无效值,则依次获取更大版本号的快照项的第三位图中对应的比特位,直到获取的比特位为有效值,根据有效值对应的版本的快照项确定数据位置并读取数据。例如,当前快照项的第三位图中对应的比特位为无效值,表示对应的数据片没有做数据迁移,因此当前快照项没有对应的数据部分,无法根据当前快照项定位数据位置。因此,需要获取更大版本号的快照项的第三位图中对应的比特位,若获取的比特位为无效值,则继续获取更大版本号的快照项的第三位图中对应的比特位,直到获取的比特位为有效值。
例如,在一些示例中,假设当前快照项为第5版本的快照项,其第三位图中对应的比特位为无效值,则继续获取第6版本的快照项,若其第三位图中对应的比特位仍然为无效值,则继续获取第7版本的快照项,以此类推。假设第7版本的快照项的第三位图中对应的比特位为有效值,则表示第7版本的快照项针对该数据片做了数据迁移,可以根据第7版本的快照项确定数据位置并读取数据。
例如,在步骤S85中,若全部版本的快照项的第三位图中对应的比特位均为无效值,则根据源文件项确定数据位置并读取数据。例如,全部版本的快照项的第三位图中对应的比特位均为无效值,表示所有版本的快照项均没有做数据迁移,因此只能根据源文件项来定位数据位置并读取数据。
由此,通过上述操作,可以接收快照读请求,并完成相应的快照项的数据部分的读操作。需要说明的是,任何读请求所触发的读操作都会直接找到数据位置,不会触发数据迁移。
例如,在一些示例中,文件系统还包括克隆项,克隆项是快照项的拷贝。例如,快照项无法进行写操作,而克隆项可以进行写操作,克隆项是对应的快照项的可编辑版本。
返回至图9,在步骤S91中,若接收到克隆写请求,则基于与克隆项关联的快照项确定数据位置并将需要的数据复制到克隆项对应的存储位置,并执行写操作。例如,克隆写请求可以触发针对克隆项的数据写操作,从而对克隆项的数据部分进行更改。例如,克隆项对应于某一快照项,生成该克隆项时将对应的快照项的内容作为该克隆项的内容。因此,需要基于与克隆项关联的快照项确定数据位置,然后,将需要的数据复制到克隆项对应的存储位置,接着执行写操作。
例如,在一些示例中,假设文件系统存在克隆项1,该克隆项1是对应于第1版快照项的克隆版本,也即是,克隆项1与第1版快照项关联。当需要对克隆项1进行写操作时,需要根据第1版快照项确定数据位置。例如,可以采用步骤S80的方式来确定第1版快照项对应的数据位置,此处不再赘述。之后,将数据复制到克隆项1对应的存储位置,接着执行针对克隆项1的写操作即可。
例如,在步骤S92中,若接收到克隆读请求,则基于与克隆项关联的快照项确定数据位置并读取所需要的数据。例如,克隆读请求可以触发针对克隆项的数据读操作,从而读取克隆项的数据部分。例如,在一些示例中,假设文件系统存在克隆项1,该克隆项1是对应于第1版快照项的克隆版本,也即是,克隆项1与第1版快照项关联。当需要对克隆项1进行读操作时,需要根据第1版快照项确定数据位置。例如,可以采用步骤S80的方式来确定第1版快照项对应的数据位置,此处不再赘述。之后,根据确定的数据位置读取数据即可。
图11A为本公开一些实施例提供的数据管理方法所采用的数据结构示意图之一,该数据结构例如为文件数据的结构。例如,Fh是任何文件打开状态的文件句柄,uint32_tlast_snap_id表示全局的最大的快照版本号,uint32_t max_peer_id表示文件路径的最大的快照版本号。uint32_t snap_id表示快照项的id,若是文件类型的数据对象,则uint32_tsnap_id全为0。uint32_t peer_id表示文件路径上的快照项的id,对于快照类型的数据对象,uint32_t snap_id为快照项的id,uint32_t peer_id为0。在该数据结构中,Bitmapbase_alloc表示第一位图,Bitmap base_peer表示第二位图。Bitmap last_snap_alloc表示最新版本的快照项的第三位图,Bitmap last_snap_peer表示最新版本的快照项的第四位图。例如,该数据结构中的Bitmap last_snap_alloc和Bitmap last_snap_peer是冗余信息,不仅仅存在于该数据结构中,也存储于文件系统的其他位置。
图11B为本公开一些实施例提供的数据管理方法所采用的数据结构示意图之二,该数据结构例如为元数据的结构。例如,uint32_t last_cow_snap_id表示上一次做数据迁移的快照项的id,uint32_t snap_id表示快照项的id,uint32_t peer_id表示文件路径上的快照项的id。元数据(例如inode)里不记录任何的位图信息(bitmap信息),每次操作临时记录在Fh中,然后持久化落盘,落盘的对象(例如oid)由元数据id(例如inodeid)、偏移量(例如offset)、位图(例如bitmap)组合而成。
通过采用上述数据结构,可以便于对数据进行管理。需要说明的是,本公开的实施例所采用的数据结构不限于图11A和图11B中所示的数据结构,也可以采用其他任意适用的数据结构,本公开的实施例对此不作限制。图11A和图11B所示的数据结构仅是示意性的,而非限制性的,实际采用的数据结构还可以包括更多或更少的字段、参数、函数等,这可以根据实际需求而定。
图12A为本公开一些实施例提供的数据管理方法中的读操作的示意图。下面结合图12A对针对快照项的读操作和针对克隆项的读操作进行简要说明。
例如,在该示例中,假设源文件项basefs中有三个数据片被写入,分别为w1、w2、w3。在写入w1之后,生成了第1版快照项(snapid:1),该快照项的第四位图中与w1对应的比特位为1。在写入w2之后,生成了第2版快照项(snapid:2),该快照项的第四位图中与w1、w2分别对应的比特位为1。在写入w3之后,生成了第3版快照项(snapid:3),该快照项的第四位图中与w1、w2、w3分别对应的比特位为1。在源文件项basefs的第二位图中,与w1、w2、w3分别对应的比特位为1,并且,由于打了3次快照,因此文件路径的最新快照版本号peerid为3。
当需要读取第2版快照项中的w2时,查看第2版快照项的Fh记录的第三位图last_snap_alloc对应的比特位,若last_snap_alloc中对应的比特位为1,则表示针对第2版快照项做过COW,因此读取第2版快照项的数据对象即可。若Fh记录的第三位图last_snap_alloc对应的比特位为0,则表示没有针对第2版快照项做COW,因此获取比当前snapid更大的快照项的第三位图中对应的比特位,也即,获取第3版快照项的第三位图中对应的比特位,若为1,则读取第3版快照项的数据对象。该数据对象(osd)由元数据id(inodeid)、偏移量(offset)、全局快照版本号(snapid)和文件路径快照版本号(peerid)组成,快照项的数据写入由写流程触发。若比当前snapid更大的各个快照项的第三位图中对应的比特位均为0,则读取源文件项basefs的数据对象。
需要说明的是,在接收到读请求时,需要首先判断是否为快照读请求。例如,可以判断元数据(inode)里的snap_id是否为TFS_NOSNAP,这里,TFS_NOSNAP为表示读取源文件项的标识信息。若是TFS_NOSNAP,则为源文件项的读请求,这无需额外操作,可以采用通常的文件系统中读取源文件项的流程。若不是TFS_NOSNAP,则为快照项的读请求,且snap_id的数值为所需要读取的快照项的版本号,这需要采用上文中描述的流程操作。
例如,如图12A所示,假设针对第2版快照项(snapid:2)生成了两个克隆项,分别为克隆项2-1(attachid:1)和克隆项2-2(attachid:2)。当需要读取克隆项2-1中的w2时,首先根据克隆项2-1确定出关联的快照项,也即确定出第2版快照项,然后,采用与读取第2版快照项相同的流程读取w2,由此完成针对克隆项2-1的读操作。
图12B为本公开一些实施例提供的数据管理方法中的写操作的示意图。下面结合图12B对针对源文件项的写操作和针对克隆项的写操作进行简要说明。
例如,在该示例中,仍然假设源文件项basefs中有三个数据片被写入,分别为w1、w2、w3。在写入w1之后,生成了第1版快照项(snapid:1),该快照项的第四位图中与w1对应的比特位为1。在写入w2之后,生成了第2版快照项(snapid:2),该快照项的第四位图中与w1、w2分别对应的比特位为1。在写入w3之后,生成了第3版快照项(snapid:3),该快照项的第四位图中与w1、w2、w3分别对应的比特位为1。
当需要在w2的数据片位置重新写入新的文件w2-1时,首先获取当前文件路径上最新快照版本号max_peer_id。如果max_peer_id发生变化,则表示该次写入为first coverwrite。因此,需要对快照的位图进行初始化。例如,进行初始化时,复制源文件项的第一位图,以作为源文件项的第二位图和快照项的第四位图,并且将快照项的第三位图全部比特位设置为0,也即是,base_peer=last_snap_peer=base_alloc,last_snap_alloc = 0。然后,由于max_peer_id > last_cow_snap_id,读取元数据(inode)的信息(例如用attr表示),更新对应的last_snap_id的cow的信息,并使last_cow_snap_id = max_peer_id。由此,在写新的文件w2-1之前,记录下要做数据迁移的快照版本以及相关信息。
接着,将Fh的peerid和当前文件路径上max_peer_id作对比,如果两者相等,则直接写源文件项中对应的数据片。如果Fh记录的源文件项的第一位图中对应的比特位为0,也即base_alloc= 0,或者第一位图与第二位图中对应的比特位不相等,也即base_alloc !=base_peer,则也直接写源文件项中对应的数据片。如果第一位图和第二位图中对应的比特位均为有效值,也即base_alloc等于base_peer且两者均为1,则需做数据迁移(COW)。此时,读取源文件项对应的数据,构造快照类型的数据对象的oid,由inodeid、offset、snapid和peerid组成。并且,构造要新写入的数据对象oid(也即w2-1的数据对象)。这两个数据对象的区别在于,w2-1的数据对象的snapid为0,而快照对象的oid的snapid是当前文件路径上最大的快照id的版本号。
由此,在写入新的文件w2-1之前,将原来的文件w2做了数据迁移,做数据迁移的快照项是第3版快照项。之后,可以继续生成第4版快照项(snapid:4),该快照项的第四位图中与w1、w2-1、w3分别对应的比特位为1。由于打了4次快照,因此文件路径的最新快照版本号peerid为4。
需要说明的是,在接收到写请求时,需要首先判断是否为数据写请求,数据写请求是指针对源文件项的写请求。例如可以根据snap_id进行判断,例如判断snap_id是否为TFS_NOSNAP。这里,TFS_NOSNAP为表示写源文件项的标识信息。若是TFS_NOSNAP,则为源文件项的写操作,是数据写请求。若不是TFS_NOSNAP,则为快照项的写操作,则提示不可写,并直接返回。
例如,如图12B所示,假设针对第2版快照项(snapid:2)生成了两个克隆项,分别为克隆项2-1(attachid:1)和克隆项2-2(attachid:2)。当需要针对克隆项2-1写w2-1时,首先根据克隆项2-1确定出关联的快照项,也即确定出第2版快照项,然后,采用与读取第2版快照项相同的流程读取w2,将w2复制到克隆项2-1对应的存储位置,然后在w2的基础上写w2-1。由此,完成针对克隆项2-1的写操作。
需要说明的是,图12A和图12B所示的读操作和写操作的流程仅为示例性的,而非限制性的。根据实际需求,可以根据各个位图的信息采用其他适用的流程来实现读操作和写操作,本公开的实施例对此不作限制。
在本公开的实施例中,通过引入位图(bitmap)对数据部分进行管理,将分布式网络附属存储(Network Attached Storage,NAS)文件系统的快照中的数据部分从对象存储设备(OSD)中独立出来,将快照的数据部分逻辑进行抽象描述,可以方便在文件系统中进行实现,无需使用指针来管理数据部分。例如,快照的数据部分按照文件系统数据接口进行统一实现,快照的数据部分和文件系统的数据部分由对象名称进行区分,例如在对象oid添加snap字段。通过上述方式,可以便于管理维护快照整体功能,提升系统性能,减少了文件系统快照对对象存储设备的依赖和性能压力,便于开发者对对象存储设备进行进一步优化、重构、新特性的开发。当然,本公开实施例提供的数据管理方法不限于应用在NAS文件系统中,也可以应用在任意架构的文件系统中,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,上述用于文件系统的数据管理方法还可以包括更多或更少的步骤,各个步骤的执行顺序不受限制,这可以根据实际需求而定。
本公开至少一个实施例还提供一种用于文件系统的数据管理装置。该数据管理装置将快照的数据部分从对象存储设备中独立出来,减少了文件系统快照对对象存储设备的依赖,便于管理维护快照整体功能,便于开发者对对象存储设备进行更改。
图13为本公开一些实施例提供的一种用于文件系统的数据管理装置的示意框图。如图13所示,在一些实施例中,该数据管理装置100包括判断单元110和处理单元120。
例如,文件系统包括文件数据,文件数据被划分为多个数据片。文件系统还包括源文件项和快照项,源文件项包括第一位图和第二位图,快照项包括第三位图。第一位图的多个比特位与多个数据片一一对应,第一位图用于记录多个数据片的写入状态。第二位图的多个比特位与多个数据片一一对应,第二位图用于记录多个数据片的快照生成状态。第三位图的多个比特位与多个数据片一一对应,第三位图用于记录多个数据片的迁移状态。
判断单元110配置为响应于接收到数据写请求,根据第一位图和第二位图判断是否进行数据迁移。例如,判断单元110可以执行如图3所示的数据管理方法的步骤S10。
处理单元120配置为响应于确定进行数据迁移,执行数据迁移操作并更新第一位图、第二位图、第三位图中对应的比特位。例如,处理单元120可以执行如图3所示的数据管理方法的步骤S20。
例如,判断单元110和处理单元120可以为硬件、软件、固件以及它们的任意可行的组合。例如,判断单元110和处理单元120可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于判断单元110和处理单元120的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,数据管理装置100的各个单元与前述的数据管理方法的各个步骤对应,关于该数据管理装置100的具体功能可以参考上文中数据管理方法的相关描述,此处不再赘述。图13所示的数据管理装置100的组件和结构只是示例性的,而非限制性的,根据需要,该数据管理装置100还可以包括其他组件和结构。
本公开至少一个实施例还提供一种电子设备,该电子设备包括本公开任一实施例提供的用于文件系统的数据管理装置。该电子设备将快照的数据部分从对象存储设备中独立出来,减少了文件系统快照对对象存储设备的依赖,便于管理维护快照整体功能,便于开发者对对象存储设备进行更改。
图14为本公开一些实施例提供的一种电子设备的示意框图。如图14所示,电子设备200包括数据管理装置210,该数据管理装置210可以为图13所示的数据管理装置100。例如,该电子设备200可以为分布式NAS系统或其他任意的需要实现快照的系统,本公开的实施例对此不作限制。关于该电子设备200的相关说明可参考上文中关于数据管理装置100的描述,此处不再赘述。
本公开至少一个实施例还提供一种电子设备,该电子设备包括处理器和存储器,一个或多个计算机程序模块被存储在该存储器中并被配置为由该处理器执行,一个或多个计算机程序模块包括用于实现本公开任一实施例提供的用于文件系统的数据管理方法。该电子设备将快照的数据部分从对象存储设备中独立出来,减少了文件系统快照对对象存储设备的依赖,便于管理维护快照整体功能,便于开发者对对象存储设备进行更改。
图15为本公开一些实施例提供的另一种电子设备的示意框图。如图15所示,该电子设备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的具体功能和技术效果可以参考上文中关于数据管理方法的描述,此处不再赘述。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当该非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的用于文件系统的数据管理方法。利用该存储介质,可以将快照的数据部分从对象存储设备中独立出来,减少了文件系统快照对对象存储设备的依赖,便于管理维护快照整体功能,便于开发者对对象存储设备进行更改。
图16为本公开一些实施例提供的一种存储介质的示意图。如图16所示,存储介质400用于存储非暂时性计算机可读指令410。例如,当非暂时性计算机可读指令410由计算机执行时可以执行根据上文所述的用于文件系统的数据管理方法中的一个或多个步骤。
例如,该存储介质400可以应用于上述电子设备中。例如,存储介质400可以为图15所示的电子设备300中的存储器320。例如,关于存储介质400的相关说明可以参考图15所示的电子设备300中的存储器320的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种用于文件系统的数据管理方法,其中,所述文件系统包括文件数据,所述文件数据被划分为多个数据片;
所述文件系统还包括源文件项和快照项,所述源文件项包括第一位图和第二位图,所述快照项包括第三位图;
所述第一位图的多个比特位与所述多个数据片一一对应,所述第一位图用于记录所述多个数据片的写入状态;
所述第二位图的多个比特位与所述多个数据片一一对应,所述第二位图用于记录所述多个数据片的快照生成状态;
所述第三位图的多个比特位与所述多个数据片一一对应,所述第三位图用于记录所述多个数据片的迁移状态;
所述方法包括:
响应于接收到数据写请求,根据所述第一位图和所述第二位图判断是否进行数据迁移;
响应于确定进行数据迁移,执行数据迁移操作并更新所述第一位图、所述第二位图、所述第三位图中对应的比特位。
2.根据权利要求1所述的方法,其中,根据所述第一位图和所述第二位图判断是否进行数据迁移,包括:
根据所述数据写请求确定所要操作的数据片;
读取所述第一位图中与所述数据片对应的比特位,并且读取所述第二位图中与所述数据片对应的比特位;
响应于所述第一位图中与所述数据片对应的比特位为有效值且所述第二位图中与所述数据片对应的比特位为有效值,确定进行数据迁移。
3.根据权利要求2所述的方法,其中,根据所述第一位图和所述第二位图判断是否进行数据迁移,还包括:
响应于所述第一位图中与所述数据片对应的比特位为无效值或者所述第二位图中与所述数据片对应的比特位为无效值,确定不进行数据迁移。
4.根据权利要求1所述的方法,其中,执行所述数据迁移操作并更新所述第一位图、所述第二位图、所述第三位图中对应的比特位,包括:
读取所述数据迁移操作对应的数据片,将读取的数据片构造为快照类型的数据对象并进行存储;
将所述第一位图中对应的比特位更新为有效值,将所述第二位图中对应的比特位更新为无效值,将所述第三位图中对应的比特位更新为有效值。
5.根据权利要求4所述的方法,其中,读取所述数据迁移操作对应的数据片,将读取的数据片构造为所述快照类型的数据对象并进行存储,包括:
获取文件路径的最新快照版本号;
读取所述数据迁移操作对应的数据片,将读取的数据片作为数据对象进行存储;
将所述最新快照版本号以及表示所述快照类型的标识信息增加到所述数据对象的信息域中;
将对应于所述最新快照版本号的快照项与所述数据对象关联。
6.根据权利要求4所述的方法,其中,将所述第一位图中对应的比特位更新为有效值,将所述第二位图中对应的比特位更新为无效值,将所述第三位图中对应的比特位更新为有效值,包括:
将所述源文件项的所述第一位图中对应的比特位更新为有效值,将所述源文件项的所述第二位图中对应的比特位更新为无效值;
获取文件路径的最新快照版本号;
将所述最新快照版本号对应的快照项的所述第三位图中对应的比特位更新为有效值。
7.根据权利要求1所述的方法,还包括:
响应于接收到所述数据写请求,判断所述数据写请求是否为初次写请求;
响应于所述数据写请求为所述初次写请求,将所述第一位图的内容同步到所述第二位图,并将所述第三位图的全部比特位置为无效值。
8.根据权利要求7所述的方法,其中,所述快照项还包括第四位图,所述第四位图的多个比特位与所述多个数据片一一对应,所述第四位图用于记录创建所述快照项时对应的源文件项的写入状态;
所述方法还包括:
响应于所述数据写请求为所述初次写请求,将所述第一位图的内容同步到所述第四位图。
9.根据权利要求1所述的方法,还包括:
响应于接收到快照读请求,根据各个版本的快照项的第三位图确定数据位置并读取数据。
10.根据权利要求9所述的方法,其中,根据各个版本的快照项的第三位图确定数据位置并读取数据,包括:
根据所述快照读请求确定当前快照项,其中,所述当前快照项是需要读取的版本的快照项;
获取所述当前快照项的第三位图中对应的比特位;
响应于所述当前快照项的第三位图中对应的比特位为有效值,根据所述当前快照项确定数据位置并读取数据;
响应于所述当前快照项的第三位图中对应的比特位为无效值,依次获取更大版本号的快照项的第三位图中对应的比特位,直到获取的比特位为有效值,根据所述有效值对应的版本的快照项确定数据位置并读取数据;
响应于全部版本的快照项的第三位图中对应的比特位均为无效值,根据所述源文件项确定数据位置并读取数据。
11.根据权利要求1所述的方法,其中,所述文件系统还包括克隆项,所述克隆项是所述快照项的拷贝;
所述方法还包括:
响应于接收到克隆写请求,基于与所述克隆项关联的快照项确定数据位置并将需要的数据复制到所述克隆项对应的存储位置,并执行写操作。
12.根据权利要求1所述的方法,还包括:
响应于接收到克隆读请求,基于与所述克隆项关联的快照项确定数据位置并读取所需要的数据。
13.根据权利要求1所述的方法,其中,在执行所述数据迁移操作并更新所述第一位图、所述第二位图、所述第三位图中对应的比特位之后,所述方法还包括:
对所述源文件项执行写操作。
14.根据权利要求1所述的方法,其中,在根据所述第一位图和所述第二位图判断是否进行数据迁移之后,所述方法还包括:
响应于确定不进行数据迁移,对所述源文件项执行写操作。
15.一种用于文件系统的数据管理装置,其中,所述文件系统包括文件数据,所述文件数据被划分为多个数据片;
所述文件系统还包括源文件项和快照项,所述源文件项包括第一位图和第二位图,所述快照项包括第三位图;
所述第一位图的多个比特位与所述多个数据片一一对应,所述第一位图用于记录所述多个数据片的写入状态;
所述第二位图的多个比特位与所述多个数据片一一对应,所述第二位图用于记录所述多个数据片的快照生成状态;
所述第三位图的多个比特位与所述多个数据片一一对应,所述第三位图用于记录所述多个数据片的迁移状态;
所述装置包括:
判断单元,配置为响应于接收到数据写请求,根据所述第一位图和所述第二位图判断是否进行数据迁移;
处理单元,配置为响应于确定进行数据迁移,执行数据迁移操作并更新所述第一位图、所述第二位图、所述第三位图中对应的比特位。
16.一种电子设备,包括权利要求15所述的用于文件系统的数据管理装置。
17.一种电子设备,包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现权利要求1-14任一项所述的用于文件系统的数据管理方法。
18.一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求1-14任一项所述的用于文件系统的数据管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210274271.0A CN114356849B (zh) | 2022-03-21 | 2022-03-21 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
PCT/CN2022/107919 WO2023178899A1 (zh) | 2022-03-21 | 2022-07-26 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210274271.0A CN114356849B (zh) | 2022-03-21 | 2022-03-21 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356849A CN114356849A (zh) | 2022-04-15 |
CN114356849B true CN114356849B (zh) | 2022-05-17 |
Family
ID=81094373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210274271.0A Active CN114356849B (zh) | 2022-03-21 | 2022-03-21 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114356849B (zh) |
WO (1) | WO2023178899A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356849B (zh) * | 2022-03-21 | 2022-05-17 | 联想凌拓科技有限公司 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482838A (zh) * | 2009-02-06 | 2009-07-15 | 杭州华三通信技术有限公司 | 基于写时拷贝的数据写入方法及设备 |
CN101840362A (zh) * | 2009-10-28 | 2010-09-22 | 创新科存储技术有限公司 | 一种改进的写时拷贝快照的实现方法和装置 |
CN102411524A (zh) * | 2011-12-30 | 2012-04-11 | 云海创想信息技术(天津)有限公司 | 一种快照卷数据拷贝方法 |
CN106126370A (zh) * | 2016-06-15 | 2016-11-16 | 上海爱数信息技术股份有限公司 | 基于存储快照之间增量位图的Server‑free备份方法及系统 |
CN106844095A (zh) * | 2016-12-27 | 2017-06-13 | 上海爱数信息技术股份有限公司 | 文件备份方法、系统及具有该系统的客户端 |
CN110188068A (zh) * | 2019-05-16 | 2019-08-30 | 上海爱数信息技术股份有限公司 | 一种保证文件系统数据一致性的卷级备份方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434681B1 (en) * | 1999-12-02 | 2002-08-13 | Emc Corporation | Snapshot copy facility for a data storage system permitting continued host read/write access |
US9547655B1 (en) * | 2013-07-11 | 2017-01-17 | Ca, Inc. | Filesystem independent snapshot driver |
CN113468105A (zh) * | 2020-03-31 | 2021-10-01 | 阿里巴巴集团控股有限公司 | 数据快照的数据结构、相关数据处理方法及装置和系统 |
CN114356849B (zh) * | 2022-03-21 | 2022-05-17 | 联想凌拓科技有限公司 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
-
2022
- 2022-03-21 CN CN202210274271.0A patent/CN114356849B/zh active Active
- 2022-07-26 WO PCT/CN2022/107919 patent/WO2023178899A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482838A (zh) * | 2009-02-06 | 2009-07-15 | 杭州华三通信技术有限公司 | 基于写时拷贝的数据写入方法及设备 |
CN101840362A (zh) * | 2009-10-28 | 2010-09-22 | 创新科存储技术有限公司 | 一种改进的写时拷贝快照的实现方法和装置 |
CN102411524A (zh) * | 2011-12-30 | 2012-04-11 | 云海创想信息技术(天津)有限公司 | 一种快照卷数据拷贝方法 |
CN106126370A (zh) * | 2016-06-15 | 2016-11-16 | 上海爱数信息技术股份有限公司 | 基于存储快照之间增量位图的Server‑free备份方法及系统 |
CN106844095A (zh) * | 2016-12-27 | 2017-06-13 | 上海爱数信息技术股份有限公司 | 文件备份方法、系统及具有该系统的客户端 |
CN110188068A (zh) * | 2019-05-16 | 2019-08-30 | 上海爱数信息技术股份有限公司 | 一种保证文件系统数据一致性的卷级备份方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023178899A1 (zh) | 2023-09-28 |
CN114356849A (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550675B2 (en) | Remote data replication method and system | |
US10430286B2 (en) | Storage control device and storage system | |
US9910620B1 (en) | Method and system for leveraging secondary storage for primary storage snapshots | |
US9292327B1 (en) | Optimization for incremental backup of VMS | |
US9727273B1 (en) | Scalable clusterwide de-duplication | |
US8515911B1 (en) | Methods and apparatus for managing multiple point in time copies in a file system | |
US8417907B2 (en) | Synchronizing snapshot volumes across hosts | |
US10599337B2 (en) | Method and device for writing data and acquiring data in a distributed storage system | |
US6957362B2 (en) | Instantaneous restoration of a production copy from a snapshot copy in a data storage system | |
US11176102B2 (en) | Incremental virtual machine metadata extraction | |
JP3270216B2 (ja) | ファイル名検出方式 | |
US9189342B1 (en) | Generic process for determining child to parent inheritance for fast provisioned or linked clone virtual machines | |
CN106951345B (zh) | 一种虚拟机磁盘数据的一致性测试方法及装置 | |
JP4419884B2 (ja) | データ複製装置、方法及びプログラム並びに記憶システム | |
CN108415986B (zh) | 一种数据处理方法、装置、系统、介质和计算设备 | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
WO2023005688A1 (zh) | 快照实现方法及装置、电子设备及计算机可读存储介质 | |
CN111258666A (zh) | 计算机文件的读取方法、装置、计算机系统及存储介质 | |
JP4755244B2 (ja) | 情報生成方法、情報生成プログラム及び情報生成装置 | |
CN114356849B (zh) | 文件系统的数据管理方法及装置、电子设备及存储介质 | |
US9152545B1 (en) | Read-write access in a read-only environment | |
EP4172777A1 (en) | Updating a virtual machine backup | |
CN116303325A (zh) | 一种保护远程复制数据的方法、系统、设备和存储介质 | |
CN115344550A (zh) | 一种分布式文件系统目录克隆方法、装置及介质 | |
CN113342751B (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: 40066401 Country of ref document: HK |