创建数据副本的方法及装置
文献发布时间:2023-06-19 11:08:20
技术领域
本发明涉及数据存储领域,具体而言,涉及一种创建数据副本的方法及装置。
背景技术
采用传统的文件系统创建数据副本时,文件系统例如XFS需要把文件的所有数据都要完全克隆再写一遍。当文件的大小上来之后,非常之慢,并且需要占用和原来一模一样的数据空间。采用这种方式,无论是从时间还是空间来说,都是不能接受的。
为了解决传统的文件系统创建数据副本所存在的问题,又提出了重删存储创建副本的方案。在重删存储的重删模块中记录了数据片段和数据指纹的关系。对于一个文件的描述都是由元数据与数据块组成。元数据由inode(文件索引节点)和bitMap(当前文件的数据块索引集合)组成。对一个文件创建副本的时,最简单的做法就是复制一份元数据即可。
在实际业务中,作为备份系统的底座,客户的很多虚拟机的磁盘都是上TB(万亿字节)级别。当一个文件大小达到1TB的时候,整个元数据空间占用也很大。作为备份系统的底座,很多上层业务都依赖于快速副本这个技术,特别是增量备份,都需要先副本一份数据作为基准。频繁的复制这样的元数据,对硬盘IO会造成巨大压力,同时对存储空间也是巨大的消耗。因此,作为一个备份系统底层,这样的设计也是不能被接受的。
为了解决上述问题,还提出了Cephrbd模块卷克隆功能创建副本的方案。Cephrbd模块提供基于卷快照的克隆方式,其对指定的卷进行快照,然后基于快照快速生成一个新卷。但是,原来的快照不可以删除。需要删除的时候,还得要将克隆卷与原卷脱钩。此外,操作都不是存储自动完成的。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施方式提供了一种创建数据副本的方法及装置,以至少解决现有技术中【存储空间消耗过大】的技术问题。
根据本发明实施方式的一个方面,提供了一种创建数据副本的方法,包括:接收数据副本创建请求;响应于所述数据副本创建请求,确定创建所述数据副本将采用的副本模式的类型,其中,所述副本模式的类型包括以下至少之一:快速副本模式和增量副本模式;基于所述副本模式的类型,创建所述数据副本。
根据本发明实施方式的另一方面,还提供了一种创建数据副本的方法,所述方法包括:在原始文件存在原始数据副本的情况下,创建一数据块引用集合作为所述数据副本的数据块引用集合;将所述数据块引用集合指向位于原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最接收数据副本对应的文件而新增的数据块;基于所述数据块引用集合来创建所述数据副本。
根据本发明实施方式的另一方面,还提供了一种创建数据副本的方法,所述方法包括:在所述原始文件存在原始数据副本的情况下,复制原始文件的最新数据副本中的数据块引用集合作为所述数据副本的数据块引用集合;将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于原始文件而新增的数据块;基于所述数据块引用集合来创建所述数据副本。
根据本发明实施方式的另一方面,还提供了一种数据备份的方法,包括:接收数据备份请求;响应于所述数据备份请求,执行如上任一项所述的创建数据副本的方法。
根据本发明实施方式的另一方面,还提供了一种数据恢复的方法,包括:接收数据恢复请求;响应于所述数据恢复请求,执行根据如上所述的创建数据副本的方法来创建数据副本,以进行数据恢复。
在本发明实施方式中,采用的方式,通过快速副本模式或增量副本模式,解决了现有技术中【存储空间消耗过大】的技术问题,具有节省数据存储空间的有益效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施方式及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1A是根据本公开实施方式的文件数据结构的示意图;
图1B是根据本公开实施方式的基于octopus读写数据的示意图;
图2是根据本公开实施方式的一种数据备份的方法的流程示意图;
图3是根据本公开实施方式的一种数据恢复的方法的流程示意图;
图4是根据本公开实施方式的基于原始文件创建数据副本的方法的流程示意图;
图5是根据本公开实施方式的基于原始文件创建数据副本的过程中的数据结构的示意图;
图6是根据本公开实施方式的以快速副本的模式创建数据副本的方法的流程示意图;
图7是根据本公开实施方式的以快速副本的模式创建数据副本的过程中的数据结构的示意图;
图8是根据本公开实施方式的以增量副本的模式创建数据副本的方法的流程示意图;
图9是根据本公开实施方式的以增量副本的模式创建数据副本的过程中的数据结构的示意图;
图10是根据本公开实施方式的以增量副本的模式创建数据副本的过程中的数据结构的示意图根据本公开实施方式的一种创建数据副本的方法的流程示意图;
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分的实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施方式1
当外部数据写入到指定目录时,会经由vfs(virtual File System,虚拟文件系统)写入到octopus存储中,其中,octopus是木浪云开发的数据存储系统。
在octopus中,如1A所示,一个文件由三个部分组成,分别为inode(文件索引节点)、bitMap(数据块引用集合)和datablock(真实数据块)。bitMap是指向真实的数据块的指针集合,datalock是真实保存的数据块。
图1B是根据本公开实施方式的基于octopus读写数据的示意图。如图1B所示,接收到读写数据的请求之后,文件系统基于读写数据的请求,调用vfs,从octopus读取数据或者将数据写入到octopus中。
实施方式2
图2是根据本公开实施方式的一种创建数据副本的方法的流程示意图,如图2所示,该方法包括以下步骤:
步骤S201,接收到数据备份请求。
步骤S202,判断备份类型。
备份类型包括全量备份和增量备份。其中,全量备份是将数据对象的所有定义集合都进行备份,而不论数据对象自上次备份之后是否修改过,增量备份是指在一次全量备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。
在备份类型为全量备份的情况下,执行步骤S203,在备份类型为增量备份的情况下,执行步骤S205。
步骤S203,全量备份。
步骤S204,生成磁盘文件。
生成磁盘文件之后,结束流程。
步骤S205,增量备份。
在备份类型为增量备份的情况下,准备采用增量模式进行数据备份。
步骤S206,创建磁盘副本,用于增量备份。
进行增量备份的时候,需要把上次备份的数据和本次增量的数据合并在一起,形成一个新的备份记录。因此,会基于上次成功备份的磁盘创建一个数据副本。具体的备份程序根据需要生成快速副本或者增量副本。
步骤S207,判断副本模式。
副本模式包括快速副本模式和增量副本模式。在副本模式为快速副本模式的情况下,执行步骤S208,在副本模式为增量副本模式的情况下,执行步骤S209。
步骤S208,以快速副本模式进行增量备份。
步骤S209,以增量副本模式进行增量备份。
实施方式3
图3是根据本公开实施方式的一种数据恢复的方法的流程示意图,如图3所示,该方法包括以下步骤:
步骤S302,数据恢复。
接收到数据恢复请求。
步骤S304,创建数据副本到nfs server(nfs服务器)导出目录。
进行数据恢复的时候,基于安全性考虑,备份系统的nfs只开发指定的路径。这样,只需要创建一个快速副本到nfs server导出目录,并且也避免了备份的数据内容被修改。
步骤S305,判断恢复形式。
在恢复形式为数据写回的情况下,执行步骤S306,在恢复形式为挂载迁移的情况下,执行步骤S307。
步骤S306,数据写回。
在用户生产存储创建一个与数据副本相同大小的空白磁盘,通过nfs把数据副本中的数据全部拷贝到刚创建的空白磁盘。数据写回成功后,将虚拟机与新磁盘连接,并且打开虚拟机电源。
步骤S307,挂载迁移。
虚拟化平台通过nfs访问副本数据,然后启动虚拟机。虚拟机运行过程中,用户点击迁移,虚拟化平台在不关闭虚拟机的情况下,把副本数据迁移回用户的生产存储。
实施方式4
图4是根据本公开实施方式的基于原始文件创建数据副本的方法的流程示意图。
原始文件a,如图5的(a)中所示,由inode a,bitMapA以及和bitMapA关联的datablock组成。
如图4所示,基于原始文件a创建数据副本b的方法包括以下步骤:
步骤S401,复制inode a,并且修改文件名相关信息,以形成inode b。
步骤S402,创建bitMap B指向bitMap A,并且inode b中指向bitMap B,从而形成数据副本b。数据副本b的结构如图5中的(c)所示。
步骤S403,创建bitMap AA指向bitMap A,并且inode a中指向bitMap A的记录修改为指向bitMap AA,形成的数据结构如图5中的(b)所示。其中,bitMap AA和bitMap AA指向的dataBlock都是空的。之所以采用这样的结构,是为了使得bitMap A不直接被inode引用,方便于后续的数据副本的处理。
直接基于原始文件a创建的数据副本b也称为原始数据副本。
实施方式5
快速副本模式
图6是根据本公开实施方式的以快速副本的模式创建数据副本的方法的流程示意图。在本实施方式中,采用快速副本模式来创建数据副本。
通过快速副本模式,可以在秒级完成数据副本的创建。要达到秒级进行数据副本创建,应该尽可能的减少复制文件的元数据。对新的文件创建数据副本,直接复制文件的文件索引节点(inode)和生成新的增量数据块引用(bitMap)。这个bitMap直接指向原始文件的bitMap。整个数据量恒定之后几十KB,从而达到秒级创建副本的目的。
无论是采用快速副本模式还是增量副本模式,对原始文件进行第一次数据副本的创建的方法都是如图4中的实施方式中所描述的步骤进行的,因此,此处描述的采用快速副本模式来创建数据副本是在原始文件的数据副本b的基础上进行的。
如图6所示,采用快速副本模式来创建数据副本的方法包括以下步骤:
步骤S601,复制inode b并且修改文件名等相关信息形成inode c。
步骤S602,创建bitMapC指向bitMapB,并且inode c指向bitMapC从而形成数据副本c,如图7中的(b)所示。
步骤S603,创建bitMapBB指向bitMapB,并且inode b指向bitMapB的记录修改为指向bitMapBB,从而使bitMapB不直接被inode b引用,如图7中的(a)所示。这样的结构,方便于后续副本处理.
通过上述步骤,形成了副本链,例如数据副本c的副本链:bitMap C->bitMap B->bitMap A。副本链可以根据情况缩短链的长度。
在本实施方式中,在创建数据副本c时,数据副本b既为原始数据副本,也为原始文件的最新数据副本。在数据副本c创立之后,数据副本c在下次创建新的数据副本时,便成为最新数据副本。
实施方式6
增量副本模式
快速副本速度快,占用空间少,但相应的使数据之间的引用变得复杂化,这个复杂化会由副本链的长度和文件被副本的次数正相关。这样的结构,会对读取数据产生一定影响。当希望数据有更好的读性能要求,可以选择创建增量副本。增量副本的特点是创建副本速度适中,元数据占用的容量也不大,并且元数据间的引用关系也非常清楚。
无论是采用快速副本模式还是增量副本模式,对原始文件进行第一次数据副本的创建的方法都是如图4中的实施方式中所描述的步骤进行的,因此,此处描述的采用增量副本模式来创建数据副本是在原始文件的数据副本b的基础上进行的。
基于原始文件创建增量副本的时候,原理和快速副本没有区别,都是如图4中的实施方式中所描述的步骤进行的。增量副本与快速副本的区别在于基于数据副本再次创建新的数据副本。因此,此处描述的是基于图4中的方法创建数据副本b之后,使用增量副本模式创建副本文件c的过程。如图8所示,包括以下步骤:
步骤S802,复制inode b并且修改文件名相关信息,形成inode c。
步骤S804,复制bitMap B,重名名为bitMap C,并且将inode c指向bitMap C,从而形成数据副本c。
数据副本文件b和数据副本文件c同时直接基于bitMap A,且副本链的长度固定为2。在这个过程中,数据结构的衍变如图9所示。
实施方式7
合并数据副本链
在增量副本模式中,随着增量数据增加,bitMap B本身的大小可能也挺大,因此复制bitMap B也是不少消耗。
快速副本模式,创建的副本,由于只拷贝inode文件和创建新的增量引用bitMap,数据量只有几十KB,创建数据副本的过程需要的时间非常之短,占用的空间也非常至少。但是多次创建副本,快速副本的引用关系会非常复杂,并且随着副本链越来越长,会对读性能产生影响。而且复杂的引用关系不合适业务上的异地复制功能和数据上云功能。
因此,本公开又提出了合并数据副本链的技术方案,具体数据结构参考图10。
当一个快速副本需要上云,需要异地复制,或者是快速副本的快照链的长度达到设定值之后,可以转化为增量副本模式。
当增量副本直接指向的增量引用bitMap大小超过最基本的bitMap一半时,考虑到后续副本链的内存使用和读性能影响,会触发将增量副本合并成全量副本。触发合并操作的时候,将数据副本的记录数据块引用的集合链合并成一个新的bitMap,从而把副本文件转化非数据副本状态,即在创建新的副本的时候,采用全量副本模式。
进一步优化,可以直接计算副本链中增量引用的bitmap大小总和,如果已经达到最基础的bitMap一半,跳过转化为增量副本的状态,直接转化为非数据副本状态,即在创建新的副本的时候,采用全量副本模式。
实施方式8
本实施方式提供了一种数据备份的方法,其包括:接收数据备份请求;响应于所述数据备份请求,执行上述任一实施方式中的创建数据副本的方法。
本实施方式还提供了一种数据恢复的方法,包括:接收数据恢复请求;响应于所述数据恢复请求,执行上述任一实施方式中的创建数据副本的方法来创建数据副本,以进行数据恢复。
例如,备份系统进行虚拟机数据恢复的时候通常有两种方案:一、创建一个数据副本,然后从数据副本把数据读出来写到用户的生产环境,最后创建虚拟机.二、创建一个数据副本,再通过nfs共享出去,然后基于数据副本直接创建虚拟机。这两种方案中都采用的是如上所述的创建数据副本的方法。
需要说明的是,对于前述的各方法实施方式,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施方式均属于优选实施方式,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施方式的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施方式所述的方法。
实施方式9
本实施方式提供了一种创建数据副本的装置,该装置包括:接收模块,被配置为接收数据副本创建请求;确定模块,被配置为响应于所述数据副本创建请求,确定创建所述数据副本将采用的副本模式的类型,其中,所述副本模式的类型包括以下至少之一:快速副本模式和增量副本模式;创建模块,被配置为基于所述副本模式的类型,创建所述数据副本。
此外,该创建数据副本的装置还能够实现上述创建数据副本的所有方法。
实施方式10
本实施方式提供了另一种创建副本的装置,在原始文件存在原始数据副本的情况下,所述装置被配置为:Bitmap创建模块,被配置为创建一数据块引用集合作为所述数据副本的数据块引用集合;指向模块,被配置为将所述数据块引用集合指向位于原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最接收数据副本对应的文件而新增的数据块;快速副本创建模块,被配置为基于所述数据块引用集合来创建所述数据副本。
此外,该创建数据副本的装置还能够实现上述以快速副本模式创建数据副本的所有方法。
实施方式11
本实施方式提供了另一种创建副本的装置,在所述原始文件存在原始数据副本的情况下,所述装置包括:复制模块,被配置为复制原始文件的最新数据副本中的数据块引用集合作为所述数据副本的数据块引用集合;指针模块,被配置为将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于原始文件而新增的数据块;增量副本创建模块,被配置为基于所述数据块引用集合来创建所述数据副本。
此外,该创建数据副本的装置还能够实现上述以增量副本模式创建数据副本的所有方法。
实施方式12
本实施方式提供了一种数据备份的装置,包括:写入请求接收模块,被配置为接收数据备份请求;数据备份模块,被配置为响应于所述数据备份请求,执行上述的任一创建数据副本的方法。
实施方式13
本实施方式提供了一种数据恢复的装置,包括:恢复请求接收模块,被配置为接收数据恢复请求;数据恢复模块,被配置为响应于所述数据恢复请求,执行上述任一创建数据副本的方法来创建数据副本,并将所述数据副本创建到导出目录。
实施方式14
本实施方式提供了一种计算机设备,其特征在于,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于上述任一项所述的创建数据副本的方法。
实施方式15
本实施方式提供了一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于上述任一项所述的创建数据副本的方法。
可选地,在本实施方式中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本公开的实施方式还提供了如下配置:
1.一种创建数据副本的方法,其中,包括:
接收数据副本创建请求;
响应于所述数据副本创建请求,确定创建所述数据副本将采用的副本模式的类型,其中,所述副本模式的类型包括以下至少之一:快速副本模式和增量副本模式;
基于所述副本模式的类型,创建所述数据副本。
2.根据项1所述的方法,其中,基于所述副本模式的类型,创建所述数据副本包括:
在所述副本模式为所述快速副本模式、且原始文件存在原始数据副本的情况下,为所述数据副本创建一数据块引用集合,并将所创建的数据块引用集合指向位于所述原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最新数据副本对应的文件而新增的数据块,以创建所述数据副本;在所述副本模式为所述增量副本模式、且原始文件存在原始数据副本的情况下,复制所述原始文件的最新数据副本中的数据块引用集合来作为所述数据副本的数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块,以创建所述数据副本;
在所述副本模式为所述快速副本模式或所述增量副本模式、且仅存在原始文件而不存在所述原始文件的原始数据副本的情况下,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块。
3.根据项2所述的方法,其中,所述副本链包括形成为链的多个数据块引用集合,所述多个数据块引用集合中除位于所述链的链头的作为原始文件的数据块引用集合外的其他每一个数据块引用集合都指向所述链中的前一个数据块引用集合,并且还指向相对于所述前一个数据块引用集合对应的文件而新增的数据块。
4.根据项2所述的方法,其中,基于所述副本模式的类型,创建所述数据副本还包括:
在所述原始文件存在原始数据副本的情况下,复制所述最新数据副本中的文件索引节点,并且修改该所述文件索引节点的文件名称和文件路径,作为所述数据副本的文件索引节点;
在所述原始文件不存在原始数据副本的情况下,复制所述原始文件中的文件索引节点,并且修改该文件索引节点的文件名称和文件路径,作为所述数据副本的文件索引节点。
5.根据项2所述的方法,其中,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块包括:
创建bitMapB,将bitMap B设置为指向bitMap A和新的增量数据块,并将inode b设置为指向bitMap B;
其中,
所述原始文件由inode a,bit Map A和与所述bit MapA关联的数据块组成,所述inode a和bitMap A分别为原始文件的文件索引节点和数据块引用集合;
所述inode b和所述bitMapB分别为所述数据副本对应的文件的文件索引节点和数据块引用集合。
6.根据项5所述的方法,其中,将inode b设置为指向bitMap B之后,所述方法还包括:
创建bitMap AA,将所述bitMap AA指向bitMap A,并且设置inode a指向所述bitMap AA。
7.根据项2所述的方法,其中,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向位于所述原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最新数据副本对应的文件而新增的数据块包括:
创建bitMapC,将bitMapC设置为指向bitMapB和新的增量的数据块,并将inode c设置为指向bitMapC;
其中,所述inode b和所述bitMapB为所述最新数据副本的文件索引节点和数据块引用集合,所述inode c和所述bitMapC为所述数据副本的文件索引节点和数据块引用集合。
8.根据项7所述的方法,其中,将inode c设置为指向bitMapC之后,所述方法还包括:创建bitMapBB,将所述bitMapBB指向bitMapB,并且设置inode b指向所述bitMapBB。
9.根据项2所述的方法,其中,复制所述原始文件的最新数据副本中的数据块引用集合来作为所述数据副本的数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于原始文件而新增的数据块包括:
复制bitMap B,并重命名为bitMap C;
将inode c指向bitMap C,并将bitMap C指向bitMap A和新增的数据块;
其中,
所述原始文件由inode a,bit Map A和与所述bit MapA关联的数据块组成,所述inode a和bitMap A分别为原始文件的文件索引节点和数据块引用集合;
所述inode b和所述bitMapB为所述最新数据副本的文件索引节点和数据块引用集合,所述inode c和所述bitMapC为所述数据副本的文件索引节点和数据块引用集合。
10.根据项1至9中任一项所述的方法,其中,在所述副本模式为所述快速副本模式的情况下,在创建所述数据副本之后,所述方法还包括:
关闭已创建的所述数据副本;
在已创建的所述数据副本的副本链的长度大于等于第一预设值时,替代所述快速副本模式而采用所述增量副本模式来创建新的数据副本。
11.根据项1至9中任一项所述的方法,其中,在所述副本模式为所述增量副本模式的情况下,在创建所述数据副本之后,所述方法还包括:
在所述最新数据副本中的数据块引用集合大于等于第二预设值时,将所述副本链中的多个数据块引用集合合并成一新的数据块引用集合,并采用全量副本模式来创建新的数据副本。
12.根据项1至9中任一项所述的方法,其中,在所述副本模式为所述快速副本模式的情况下,在创建所述数据副本之后,所述方法还包括:计算所述副本链中的所有数据块引用集合的大小的总和,如果所述总和等于或大于第三预设值,采用全量副本模式来创建新的数据副本。
13.根据项11或12所述的方法,其中,所述第二预设值和所述第三预设值为最基本的数据块引用集合的大小的一半。
14.一种创建数据副本的方法,其中,所述方法包括:在原始文件存在原始数据副本的情况下:
创建一数据块引用集合作为所述数据副本的数据块引用集合;
将所述数据块引用集合指向位于原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最接收数据副本对应的文件而新增的数据块;
基于所述数据块引用集合来创建所述数据副本。
15.根据项14所述的方法,其中,所述副本链包括形成为链的多个数据块引用集合,所述多个数据块引用集合中除位于所述链的链头的作为原始文件的数据块引用集合外的其他每一个数据块引用集合都指向所述链中的前一个数据块引用集合,并且还指向相对于所述前一个数据块引用集合对应的文件而新增的数据块。
16.根据项14所述的方法,其中,所述方法还包括:在所述原始文件不存在原始数据副本的情况下,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块。
17.根据项14所述的方法,其中,所述方法还包括:复制所述最新数据副本中的文件索引节点,并且修改该所述文件索引节点的文件名称和文件路径,作为所述数据副本的文件索引节点。
18.根据项14所述的方法,其中,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块包括:
创建bitMapB,将bitMap B设置为指向bitMap A和新的增量数据块,并将inode b设置为指向bitMap B;
其中,
所述原始文件由inode a,bit Map A和与所述bit MapA关联的数据块组成,所述inode a和bitMap A分别为原始文件的文件索引节点和数据块引用集合;
所述inode b和所述bitMapB分别为所述数据副本对应的文件的文件索引节点和数据块引用集合。
19.根据项18所述的方法,其中,将inode b设置为指向bitMap B之后,所述方法还包括:
创建bitMap AA,将所述bitMap AA指向bitMap A,并且设置inode a指向所述bitMap AA。
20.根据项14所述的方法,其中,创建一数据块引用集合作为所述数据副本的数据块引用集合,将所述数据块引用集合指向位于原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最接收数据副本对应的文件而新增的数据块包括:
创建bitMapC,将bitMapC设置为指向bitMapB和新的增量的数据块,并将inode c设置为指向bitMapC;
其中,所述inode b和所述bitMapB为所述最新数据副本的文件索引节点和数据块引用集合,所述inode c和所述bitMapC为所述数据副本的文件索引节点和数据块引用集合。
21.根据项20所述的方法,其中,将inode c设置为指向bitMapC之后,所述方法还包括:创建bitMapBB,将所述bitMapBB指向bitMapB,并且设置inode b指向所述bitMapBB。
22.根据项14至21中任一项所述的方法,其中,在创建所述数据副本之后,所述方法还包括:
关闭已创建的所述数据副本;
在已创建的所述数据副本的副本链的长度大于等于第一预设值时,替代快速副本模式而采用增量副本模式来创建新的数据副本。
23.根据项14至21中任一项所述的方法,其中,在创建所述数据副本之后,所述方法还包括:计算所述副本链中的所有数据块引用集合的大小的总和,如果所述总和等于或大于第三预设值,采用全量副本模式来创建新的数据副本。
24.根据项23所述的方法,其中,所述第三预设值为最基本的数据块引用集合的大小的一半。
25.一种创建数据副本的方法,其中,所述方法包括:在所述原始文件存在原始数据副本的情况下,
复制原始文件的最新数据副本中的数据块引用集合作为所述数据副本的数据块引用集合;
将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于原始文件而新增的数据块;
基于所述数据块引用集合来创建所述数据副本。
26.根据项25所述的方法,其中,所述方法还包括:在所述原始文件不存在原始数据副本的情况下,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块。
27.根据项25所述的方法,其中,所述方法还包括:复制所述最新数据副本中的文件索引节点,并且修改该所述文件索引节点的文件名称和文件路径,作为所述数据副本的文件索引节点。
28.根据项25所述的方法,其中,为所述数据副本创建一数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于所述原始文件而新增的数据块包括:
创建bitMapB,将bitMap B设置为指向bitMap A和新的增量数据块,并将inode b设置为指向bitMap B;
其中,
所述原始文件由inode a,bit Map A和与所述bit MapA关联的数据块组成,所述inode a和bitMap A分别为原始文件的文件索引节点和数据块引用集合;
所述inode b和所述bitMapB分别为所述数据副本对应的文件的文件索引节点和数据块引用集合。
29.根据项28所述的方法,其中,将inode b设置为指向bitMap B之后,所述方法还包括:创建bitMap AA,将所述bitMap AA指向bitMap A,并且设置inode a指向所述bitMapAA。
30.根据项25所述的方法,其中,复制所述原始文件的最新数据副本中的数据块引用集合来作为所述数据副本的数据块引用集合,并将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于原始文件而新增的数据块包括:
复制bitMap B,并重命名为bitMap C;
将inode c指向bitMap C,并将bitMap C指向bitMap A和新增的数据块;
其中,
所述原始文件由inode a,bit Map A和与所述bit MapA关联的数据块组成,所述inode a和bitMap A分别为原始文件的文件索引节点和数据块引用集合;
所述inode b和所述bitMapB为所述最新数据副本的文件索引节点和数据块引用集合,所述inode c和所述bitMapC为所述数据副本的文件索引节点和数据块引用集合。
31.根据项25至30中任一项所述的方法,其中,在创建所述数据副本之后,所述方法还包括:
在所述最新数据副本中的数据块引用集合大于等于第二预设值时,将所述副本链中的多个数据块引用集合合并成一新的数据块引用集合,并采用全量副本模式来创建新的数据副本。
32.根据项31所述的方法,其中,所述第二预设值为最基本的数据块引用集合的大小的一半。
33.一种数据备份的方法,其中,包括:
接收数据备份请求;
响应于所述数据备份请求,执行如项1至32中任一项所述的创建数据副本的方法来创建数据副本,以进行数据备份。
34.一种数据恢复的方法,其中,包括:
接收数据恢复请求;
响应于所述数据恢复请求,执行根据项1至32中任一项所述的创建数据副本的方法来创建数据副本,以进行数据恢复。
35.一种创建数据副本的装置,其中,包括:
接收模块,被配置为接收数据副本创建请求;
确定模块,被配置为响应于所述数据副本创建请求,确定创建所述数据副本将采用的副本模式的类型,其中,所述副本模式的类型包括以下至少之一:快速副本模式和增量副本模式;
创建模块,被配置为基于所述副本模式的类型,创建所述数据副本。
36.一种创建数据副本的装置,其中,在原始文件存在原始数据副本的情况下,所述装置包括:
Bitmap创建模块,被配置为创建一数据块引用集合作为所述数据副本的数据块引用集合;
指向模块,被配置为将所述数据块引用集合指向位于原始文件的最新数据副本的副本链的链尾处的数据块引用集合、并指向所述数据副本对应的文件相对于所述最接收数据副本对应的文件而新增的数据块;
快速副本创建模块,被配置为基于所述数据块引用集合来创建所述数据副本。
37.一种创建数据副本的装置,其中,在所述原始文件存在原始数据副本的情况下,所述装置包括:
复制模块,被配置为复制原始文件的最新数据副本中的数据块引用集合作为所述数据副本的数据块引用集合;
指针模块,被配置为将所述数据块引用集合指向所述原始文件的数据块引用集合、并指向所述数据副本对应的文件相对于原始文件而新增的数据块;
增量副本创建模块,被配置为基于所述数据块引用集合来创建所述数据副本。
38.一种数据备份的装置,其中,包括:
写入请求接收模块,被配置为接收数据备份请求;
数据备份模块,被配置为响应于所述数据备份请求,执行如项1至32中任一项所述的创建数据副本的方法来创建数据副本,以进行数据备份。
39.一种数据恢复的装置,其中,包括:
恢复请求接收模块,被配置为接收数据恢复请求;
数据恢复模块,被配置为响应于所述数据恢复请求,执行根据项1至32中任一项所述的创建数据副本的方法来创建数据副本,,以进行数据恢复。
40.一种计算机设备,其中,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如项1-32任一项所述的方法。
41.一种可读存储介质,所述可读存储介质存储有计算机程序,其中,所述计算机程序被处理器执行时用于实现如项1-32任一项所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
- 创建数据副本的方法及装置
- 一种HDFS中热点数据文件的动态副本创建方法和系统