用于备份和恢复克隆文件的方法和系统的制作方法

文档序号:10654375阅读:305来源:国知局
用于备份和恢复克隆文件的方法和系统的制作方法
【专利摘要】本申请提供了用于备份和恢复克隆文件的方法和系统。在所述方法中,一个或多个处理器生成克隆管理表。一个或多个处理器在克隆管理表中记录关于每个克隆文件的克隆管理信息。为了备份克隆文件,一个或多个处理器更新克隆管理信息,并存储处于克隆文件树中的一个或多个数据块。为了恢复克隆文件,一个或多个处理器分析克隆管理信息,并恢复克隆文件中的一个或多个数据块。为了恢复克隆文件父亲,一个或多个处理器分析克隆管理信息,并恢复克隆文件父亲中的一个或多个数据块。为了恢复克隆文件树,一个或多个处理器分析克隆管理信息,并恢复克隆文件树中的一个或多个数据块。
【专利说明】
用于备份和恢复克隆文件的方法和系统
技术领域
[0001]本发明一般涉及文件系统领域,并且更具体地涉及具有克隆文件的文件系统。
【背景技术】
[0002]将以可迅速访问的形式存储的数据量的显著增长对于关心存储效率和数据完整性保护的系统设计者来说是一个挑战。例如,分析学、流计算(对来自实时源的高带宽数据流的分析)、以及数据仓储需要快速访问大量的数据。在大存储系统中,数据必须可用于立即和循环处理,被高效地存储,被保护免于硬件和软件故障,并且可按照其大小以及可应用到其上的计算能力的量进行缩放。高效存储技术常常使得存储系统能够更快,这能够向用户提供快速访问。
[0003]为了高效地利用存储,一种被称为文件克隆的技术已经得到发展,以减少被多个用户打开和编辑的文件的多个版本(克隆)所消耗的存储。通过以只读模式存储原始文件并且只将额外的存储空间分配给被用户写入该文件的数据,文件克隆使得存储空间能够得到保存。该额外空间仅仅大到足以包含已经被用户写入该克隆文件的新数据。该额外空间是读和写使能的,从该额外空间中读取使得不在原始文件中的新写入的数据可以被访问。还未被改变的数据从原始文件中被读取。这样的布置被称为克隆文件。例如,这使得被两个用户变更的一个文件的两个拷贝(文件的两个克隆)只消耗空间的一小部分,否则的话,原始文件的两个完整拷贝(每个用户一个完整拷贝)将会消耗该空间。在文件拷贝(被称为孩子或克隆文件)相比于原始文件(父亲文件)具有显著量的未变更数据的情况下,文件克隆降低了文件的拷贝的总空间需求。
[0004]例如,通过克隆共同的基础映像文件(常常被称为“金映像”)而为每个虚拟机创建虚拟磁盘,克隆文件可用来提供虚拟机。相关的使用是作为拍下虚拟机状态的快照的一部分,来克隆一个个体虚拟机的虚拟磁盘映像。克隆一个文件与创建一个文件拷贝相类似,只不过创建过程更快并且更有空间效率,这是因为直到克隆或原始文件被修改为止都不消耗额外的磁盘空间。无需分配额外的存储空间,同一文件的多个克隆就可以得到创建,并且克隆的克隆可以得到创建。尽管文件的克隆降低了服务器上用于活动文件的存储空间,但是当前用于备份克隆文件的技术针对每个已备份克隆文件来说消耗了未被克隆文件的存储空间,并且在恢复时将原始克隆文件恢复为未被克隆文件。
[0005]Unix风格的文件系统以被称为inode的数据结构记录信息,该数据结构被用来定位和管理文件。在Unix风格的文件系统中,非正式地称为inode的索引节点是一种用来表示文件系统对象的数据结构,所述文件系统对象可以是包括文件或目录在内的若干事物之一。inode存储文件系统对象的数据的属性和磁盘块位置。文件系统对象属性可以包括操纵元数据(例如,改变、访问和修改时间),以及所有者和权限数据(例如,组id、用户id和权限Kinode在支持克隆文件的Unix风格的系统上的克隆文件的创建和管理中也是工具性的。克隆文件的inode中的元数据指定了其父亲文件。

【发明内容】

[0006]本发明实施例的各方面公开了一种用于备份和恢复一个或多个克隆文件树的方法、程序产品和系统。所述方法包括:由一个或多个处理器生成克隆管理表。所述方法还包括:由一个或多个处理器在所述克隆管理表中记录关于文件系统中的一个或多个克隆文件树中的每个克隆文件的克隆管理信息。所述方法还包括:响应于接收到备份请求,由一个或多个处理器更新所述克隆管理信息,并存储处于所述一个或多个克隆文件树中的一个或多个数据块。所述方法还包括:响应于接收到恢复克隆文件的请求,由一个或多个处理器分析关于所述克隆文件的克隆管理信息,并将所述克隆文件中的一个或多个数据块恢复到所述文件系统。所述方法还包括:响应于接收到恢复克隆文件父亲的请求,由一个或多个处理器分析关于所述克隆文件父亲的克隆管理信息,并将所述克隆文件父亲中的一个或多个数据块恢复到所述文件系统。所述方法还包括:响应于接收到恢复克隆文件树的请求,由一个或多个处理器分析关于所述克隆文件树的克隆管理信息,并将所述克隆文件树中的一个或多个数据块恢复到所述文件系统。
【附图说明】
[0007]图1绘出克隆文件树的框图。
[0008]图2根据本发明实施例绘出计算复合体(computingcomplex)的一部分的框图。
[0009]图3根据本发明实施例绘出图2中所示的计算节点A的细节。
[0010]图4根据本发明实施例绘出图3中所示的克隆管理表的细节。
[0011]图5根据本发明实施例绘出图3中所示的克隆管理表的示例性内容的细节。
[0012]图6根据本发明实施例绘出一示例性克隆文件树的框图。
[0013]图7根据本发明实施例绘出一示例性克隆文件树的框图。
[0014]图8根据本发明实施例绘出图3中所示的克隆管理表的示例性内容的细节。
[0015]图9根据本发明实施例绘出图3中所示的克隆管理表的示例性内容的细节。
[0016]图10根据本发明实施例绘出图3中所示的克隆管理表的示例性内容的细节。
[0017]图11根据本发明实施例绘出已经被恢复的克隆文件树的示例性表示。
[0018]图12根据本发明实施例绘出已经被恢复的克隆文件的示例性表示。
[0019]图13根据本发明实施例绘出说明由图3的备份和恢复服务器执行的操作步骤的流程图。
[0020]图14根据本发明实施例绘出包含图2和3中所示的计算节点A的计算机系统的框图。
【具体实施方式】
[0021]在本文中参考附图公开本发明的详细实施例。应理解的是,所公开的实施例仅仅举例说明本发明的潜在实施例,并且可以采取各种形式。另外,结合各个实施例给出的每个示例意在是说明性的而非限制性的。此外,附图不一定按比例绘制,一些特征可以被夸大以显示特定组件的细节。因此,本文公开的特定结构和功能细节不应被解释为限制性的,而应仅仅被解释为用于教导本领域技术人员以各种方式采用本发明的代表性基础。
[0022]说明书中对“一个实施例”、“一实施例”、“示例性实施例”等的提及表示所述实施例可以包括特定特征、结构或特性,但是每个实施例可能不一定包括该特定特征、结构或特性。此外,这样的措辞不一定指的是同一实施例。此外,当特定特征、结构或特性结合一实施例被描述时,结合其他明确或非明确描述的实施例来影响这样的特征、结构或特性应该也在本领域技术人员的知识内。
[0023]克隆文件是个体文件的可写的时间点快照。通过克隆共同的基础映像(常常被称为“金映像”)而为每个虚拟机创建虚拟磁盘,克隆文件可用来提供虚拟机。相关的使用是作为拍下虚拟机状态的快照的一部分,来克隆一个个体虚拟机的虚拟磁盘映像。克隆一个文件与创建一个文件拷贝相类似,只不过创建过程更快并且更有空间效率,这是因为直到克隆或原始文件被修改为止都不消耗额外的磁盘空间。无需额外的空间开销,同一文件的多个克隆就可以得到创建。克隆的克隆可以得到创建。
[0024]文件克隆是用于在文件拷贝(孩子或克隆)相比于原始文件(父亲)具有显著量的未变更数据的情况下,减少文件的拷贝的总空间需求的概念。在一个实施例中,文件系统被包括,该文件系统实现克隆文件的概念,并且针对原始文件使用术语父亲文件、父亲或克隆父亲,且针对父亲的克隆使用术语克隆文件或克隆。克隆父亲是只读文件,其包含当创建该克隆时原始地处于该文件中的所有数据块。当克隆文件被创建时,其父亲中的数据变成只读。克隆(即,父亲的孩子)是只包含相对于父亲已经被写入或已经被添加的数据块的文件。该克隆文件中的这些数据块是相对于父亲已经被修改(添加或改变)的数据块。从该克隆文件或其父亲中删除的数据块在被删除的克隆文件中有其表示。克隆孩子的用户从父亲访问所有未修改的数据。克隆孩子没有父亲是无用的,因为它不包含一文件中的所有数据,并且因此一有效的克隆孩子没有父亲是不存在的。在实现克隆的文件系统中,如果用户(从被克隆文件)读取自从克隆被创建以来还未被修改的数据块,则文件系统自动地从父亲读取该数据块并将其返回给用户,否则文件系统从克隆读取该数据块。
[0025]克隆文件可以被克隆。例如,具有父亲A的克隆文件B可以被克隆。如果一额外的克隆文件(例如,克隆文件C)从克隆文件B被创建,则克隆文件B中的数据变成只读并且不可变。这时,克隆文件B包含在克隆文件B的创建之后,在父亲A中增添或变更的数据。当克隆文件C被创建时,父亲A和克隆文件B中的数据不可变,S卩,父亲A和克隆文件B中的数据在这些文件的生命期中保持不改变。当创建克隆文件C时,克隆文件B变成克隆文件C的父亲。对父亲A和克隆文件B中的数据的所有后续写入和增添被存储在克隆文件C中。如果克隆文件C的用户从克隆文件C读取数据,则实际数据可以从克隆文件C、或其父亲克隆文件B、或从克隆文件B的父亲即父亲A读取,即数据从包含该数据的最新近拷贝的克隆文件读取。
[0026]父亲可以有多个孩子。也就是说,被克隆且已经成为父亲的文件可以被再次克隆。父亲文件中的数据在文件被第一次克隆时变成只读。具有多个自身可能已被克隆的孩子的父亲可被设想为克隆文件的树的单个根。克隆文件的这样的树被称为克隆文件树。
[0027]图1绘出克隆文件树100。克隆文件101是原始文件并且处于树深度O。克隆文件111是克隆文件101的克隆,并且当克隆文件111被创建时,克隆文件101变成克隆文件111的父亲,并且克隆文件101中的数据变成只读且是不可变的。克隆文件111处于克隆树深度I。如果作为克隆文件111的克隆的克隆文件121被创建,则克隆文件111变成克隆文件121的父亲,并且克隆文件111中的数据变成只读且是不可变的。克隆文件121处于树深度2。克隆文件111包含自从克隆文件111被创建以来已经被写入或增添的数据,并且克隆文件121包含自从克隆文件121被创建以来已经被写入或增添的数据。因此,如果用户从克隆文件121读取数据,以对用户而言未知的方式,该数据从包含该数据的最新近拷贝的克隆文件(即克隆文件101、克隆文件111或克隆文件121)被读取。克隆文件INl处于树深度N,且在克隆文件的链条的末端,并且说明克隆文件的链条能够具有任意长度。如果用户从克隆文件INl读取数据,则以对用户而言未知的方式,该数据从包含该数据的最新近拷贝的链条中的克隆文件被读取,从克隆文件101开始。
[0028]克隆文件101有多个孩子。如图1中所示,克隆树100中的克隆文件101已经被第二次克隆,使得克隆文件101成为第二克隆文件即克隆文件112的父亲。在克隆树100中,克隆文件112已经被克隆两次,一次变成克隆文件122的父亲,而第二次变成克隆文件123的父亲。
[0029]本发明的实施例认识到,如果诸如克隆文件树100之类的克隆文件树中的克隆文件在备份服务器上以不复制数据的方式被备份,则会产生显著的存储效率。本发明的实施例还认识到,如果克隆文件树的全部或一部分在被备份后可以在文件系统上被恢复其原始克隆文件树形式,从而保持克隆文件树中固有的存储空间效率,则会产生显著的存储效率。本发明的实施例在克隆管理表中维护信息,其使得能够按照排除数据冗余并将克隆文件树恢复到其在被备份时具有的形式的方式来备份和恢复克隆文件树的全部或一部分。
[0030]在一个实施例中,包含了一文件系统,其以被称为索引节点(inode)的数据结构存储关于该文件系统中的文件的信息。例如,Unix风格的文件系统在索引节点中记录用来定位和管理文件的信息。在Unix风格的文件系统中,非正式地称为inode的索引节点是一种用来表示文件系统对象的数据结构,所述文件系统对象可以是包括文件或目录在内的若干事物之一。索引节点存储文件系统对象的数据的属性和磁盘块位置。文件系统对象属性可以包括操纵元数据(例如,改变、访问和修改时间),以及所有者和权限数据(例如,组id、用户id和权限)。在某些情形和实施例中,关于一个或多个索引节点的信息被包括在克隆管理表中的信息中,所述克隆管理表被用来管理克隆文件以及克隆文件和克隆文件树的备份和恢复。
[0031]在一些实施例和情形中,用户读取的数据块的位置的自动确定是通过存储在克隆孩子的索引节点中和克隆父亲的索引节点中的元数据来实现的。孩子中的索引节点元数据指定了父亲文件。孩子中的其他数据指定了在孩子(被修改数据)和父亲(未被修改数据)中的数据块的位置。在一实施例中,存储在父亲中的索引节点元数据包括父亲的克隆孩子的计数。
[0032]图2绘出分布式计算系统200。在一些情形和实施例中,计算系统200包括经由网络202连接到分布式文件系统203的客户端主机201。客户端主机201执行访问分布式文件系统203上的文件的应用212。分布式文件系统203包括网络连接204、计算节点A 205、计算节点B206和计算节点C 207、存储网络208、以及存储单元209、210和211。存储网络208将计算节点A 205、计算节点B 206和计算节点C 207连接到存储单元209、210和211,并且使任何计算节点能够访问任何存储单元。分布式文件系统203是用于客户端主机201的文件服务器,并且为存储在分布式文件系统203上的数据提供备份和恢复服务。克隆文件和克隆文件树可以在分布式文件系统203上被创建、存储、备份和恢复。本领域技术人员应理解的是,计算系统200可以具有各种数量的计算节点和存储单元,并且客户端主机和在客户端主机上执行的应用的数量可以变化。
[0033]计算节点A205、计算节点B 206和计算节点C 207是这样的计算机,其托管管理分布式文件系统203的软件,并且响应于来自客户端主机201中执行的应用212的请求而访问存储单元209、210和211上的数据。存储单元209、210和211也被计算节点A 205、计算节点B206和计算节点C 207访问,以备份和恢复由分布式文件系统203管理的数据。
[0034]图3更详细地绘出计算节点A。在一些情形和实施例中,计算节点A包括文件服务器301以及备份和恢复服务器303。在替代实施例中,备份和恢复服务器303驻留在分布式文件系统203中的一个或多个计算节点上。在一实施例中,文件服务器301包括备份和恢复客户端302。备份和恢复服务器303包括克隆管理表304。文件服务器301通过访问存储单元209、210和211中的数据而对来自应用212的数据请求作出响应。备份和恢复客户端302响应于计划(schedule)、系统故障或可自动或手动生成的维护请求,备份和恢复存储单元209、210和211中的文件。在一实施例中,克隆管理表304包括关于存储在分布式文件系统203中的克隆文件和克隆文件树的克隆管理信息。
[0035]图4绘出存储在备份和恢复服务器303上的克隆管理表304中的条目中的信息400的细节。在一些情形和实施例中,克隆管理表304对于每父亲文件或克隆文件包含一个或多个条目。针对其在分布式文件系统203中的每个数据块,父亲文件或克隆文件在克隆管理表304中都具有一个条目。文件名401是该文件系统对象(父亲文件或克隆文件)的唯一标识符。文件名401是该文件的完整合格路径(qualifying path)。文件索引节点号402是该文件的索引节点号。文件大小403是该文件的以文件系统块表示的逻辑大小,S卩,处于克隆文件树的根部的父亲(根父亲文件)在文件系统中使用的块的数量。文件索引节点数据404是被包括在该索引节点中的文件元数据,并且使该文件能够被管理和恢复。在一实施例中,文件索引节点数据404包括权限、时间戳、访问控制列表(ACL)和扩展属性(EA)。文件索引节点数据404有时被称为二进制大对象块(BLOB)。块偏移405是通过文件名401引用的克隆文件中的唯一数据块相对于预先确定的位置的偏移。块长度406是克隆文件中的唯一数据块的长度。父亲文件索引节点号407是文件名401的父亲文件的索引节点号。深度级别408是文件在克隆文件树中的级别,其中深度O被分配给根父亲文件。孩子计数409是该文件作为其父亲、且除其他目的外被用来定位克隆文件树的根的克隆文件(孩子)的数量。在一实施例中,孩子计数O表明该文件没有孩子,-1的文件计数表明该条目提供关于该文件中的额外数据块的信息,并且针对该文件的另一条目包含该文件的孩子计数。最新近更新410是在备份该文件的备份操作期间针对该条目的最新近更新的时间戳。有效411是表明该条目是否有效的值。当备份和恢复客户端302执行克隆管理表304的有效性检查时,一个条目的有效性被备份和恢复客户端302评估。在一实施例中,如果该文件未被检查(例如,新的或更新后的文件),则有效411是“U”,如果该文件已经被检查并且具有有效的父亲克隆,则有效411是“V”,而如果该文件已经被检查但是该文件处于其中的克隆文件树在有效性检查中正在丢失该点处的克隆文件,则有效411是“I”。
[0036]图5绘出克隆管理表304中的数据500,其是在克隆管理表304中填充的数据集的示例,在一个实施例中克隆管理表304描述了图6中所示的克隆文件树600。该表包含两个处于克隆树深度O的父亲克隆文件。处于克隆树深度O的任何克隆文件根据定义是父亲文件。克隆文件D 601和克隆文件Z 602处于深度O。克隆文件Z 602没有孩子,并且克隆文件D 601有2个孩子。因为克隆文件Z 602处于深度O但是没有孩子,所以克隆文件Z 602是没有孩子的根父亲。检查克隆管理表304中的处于克隆文件树600的深度I的克隆文件会揭示出两个处于级别I的克隆文件,即克隆文件A 603和克隆文件G 604,两个克隆文件都具有“0003”作为它们的父亲文件索引节点号。克隆文件D 601的文件索引节点号是“0003”,因此克隆文件D601是克隆文件A 603和克隆文件G604的父亲。克隆文件A 603具有一个孩子,并且克隆文件G 604具有一个孩子。克隆文件A 603的文件索引节点号是“0001”,因此克隆文件A 603的孩子具有“0001”的父亲文件索引节点号。克隆文件X 605的父亲文件索引节点号是“0001”,因此克隆文件X 605是克隆文件A 603的孩子,并且克隆文件A 603是克隆文件X 605的父亲。克隆文件X 605在克隆管理表304中有两个条目,一个条目具有孩子计数0,因此克隆文件X605没有孩子,并且一个条目具有孩子计数-1。孩子计数-1表明该克隆文件X 605条目描述克隆文件X 605中的数据块的位置,所述数据块与克隆文件X 605中的在针对克隆文件X605的不同条目中描述的数据块不连续。
[0037]克隆文件G604具有文件索引节点号“0005”且具有孩子计数1,因此克隆文件G604的孩子会具有父亲索引节点号“0005”。克隆文件E 606具有父亲索引节点号“0005”,并且因此是克隆文件G 604的孩子。克隆管理表304中的针对克隆文件E 606的条目表明孩子计数O,因此克隆文件E 606没有孩子。
[0038]如果有必要在分布式文件系统203上备份一些克隆文件,则备份和恢复客户端302请求备份和恢复服务器303备份克隆文件。备份和恢复服务器303分析克隆管理表304并且使用该表中的信息来恢复文件。
[0039]在一示例的克隆文件备份操作中,备份和恢复服务器303从备份和恢复客户端302接收备份请求,以备份图7中所示的文件700。在一实施例中,备份和恢复服务器303分析分布式文件系统203上的文件700,并且更新克隆管理表304,该克隆管理表304在该示例的克隆文件备份操作中最初包含图8中所示的数据800。数据800绘出一空的克隆管理表304。备份和恢复客户端302在时间99发起备份过程,遍历文件系统,并在分布式文件系统203中找到克隆文件A 701、克隆文件C 702和克隆文件B 703。备份和恢复服务器303访问数据800以确定数据800是否是最新的,并且没有找到针对克隆文件A 701、克隆文件C 702和克隆文件B 703的条目。备份和恢复服务器303从分布式文件系统203中的关于克隆文件A 701、克隆文件C 702和克隆文件B 703的元数据收集关于克隆文件的丢失信息,并且利用该丢失信息更新数据800。图9绘出克隆管理表304中的数据900,其是在已经利用该丢失信息进行更新之后的克隆管理表304中的数据800。备份和恢复服务器303备份分布式文件系统203中的克隆文件A 701、克隆文件C 702和克隆文件B 703,并且在数据900中记录针对克隆文件A701、克隆文件C 702和克隆文件B 703的最新近备份时间“99”。
[0040]图10绘出克隆管理表304中的数据1000,其是在备份和恢复服务器303从备份和恢复客户端302接收到有效性检查请求、并对数据900执行有效性检查之后的数据900。在一实施例中,备份和恢复服务器303遍历数据900,搜索不具有父亲文件信息的文件条目。备份和恢复服务器303首先找到克隆文件A 701,并且克隆文件A 701通过在数据1000中将有效411设置为“V”而被标记为有效。因为克隆文件A 701的孩子计数是1(表明它是I个孩子的父亲),所以备份和恢复服务器303在数据900中搜索具有克隆文件A 701的文件索引节点号(“0001”)作为父亲文件索引节点号的一个或多个文件条目。针对克隆文件B 703的条目列出“0001”作为其父亲文件索引节点号,因此克隆文件B 703是克隆文件A 701的孩子。备份和恢复服务器303确定克隆文件B 703是否有孩子。因为孩子计数409在数据900中的针对克隆文件B 703的条目中被设置为0,所以有效411在数据1000中在针对克隆文件B 703的条目中被设置为“V”(即,有效)。因为克隆文件A 701在数据900中没有未检查的孩子,所以备份和恢复服务器303在数据900中搜索不具有父亲文件的文件,并且发现克隆文件C 702。因为克隆文件C 702没有孩子,所以备份和恢复服务器303在数据1000中(通过将有效411设置为“V”)使针对克隆文件C 702的条目有效,并且在数据900中搜索不具有父亲文件的下一个文件条目。因为在数据900中没有未检查的文件或无效文件,所以有效性检查终止。
[0041 ]在一实施例中,在备份和恢复服务器303完成有效性检查之后,它创建无效条目表,其包含数据900中的任何剩余的无效或未被检查的条目。该无效条目表被用户用来人工分析无效条目表中的克隆文件当中的不一致性。
[0042]通过分析克隆管理表304中的关于克隆文件孩子的信息,备份和恢复服务器303可以将(已丢失或损坏的)克隆文件孩子恢复到其在克隆文件树中的克隆文件父亲。例如,如果备份和恢复服务器303从备份和恢复客户端302接收到请求以将克隆文件C 702恢复到分布式文件系统203,则备份和恢复客户端302在克隆管理表304中的数据1000中搜索针对克隆文件C 702的一个或多个条目,并且确定克隆文件C 702是克隆文件A 701的孩子且克隆文件C 702没有孩子。备份和恢复客户端302使用数据1000中的关于克隆文件C 702的信息,在分布式文件系统203中创建克隆文件C 702。图11示出在克隆文件C 702已经被恢复之后,克隆文件C 702作为克隆文件树700中的克隆文件A 701的孩子的表示1100。
[0043]通过分析克隆管理表304中的关于克隆文件父亲的信息,备份和恢复服务器303可以将(已丢失或损坏的)克隆文件父亲恢复到其克隆文件树。例如,如果备份和恢复服务器303从备份和恢复客户端302接收到请求以将克隆文件A 701恢复到分布式文件系统203,则备份和恢复客户端302在克隆管理表304中的数据1000中搜索针对克隆文件A 701的一个或多个条目,并且验证克隆文件A 701有一个或多个孩子。备份和恢复客户端302使用数据1000中的关于克隆文件A 701的信息,在分布式文件系统203中创建克隆文件A 701。图12示出在克隆文件A 701已经被恢复后的克隆文件A 701的表示1200。
[0044]图13根据本发明的实施例绘出说明由图3的备份和恢复服务器303执行的操作步骤的流程图。在图13的实施例中,流程图的步骤还由在备份和恢复服务器303上操作的软件实施。如此,该软件在被执行时使备份和恢复服务器303执行该流程图的步骤中所述的过程。在其他实施例中,至少一部分所述过程由备份和恢复服务器303可访问的硬件实施。这样的硬件被配置成执行流程图的步骤中所包括的过程中的一个或多个。在该实施例中,备份和恢复服务器303生成克隆管理表(CMT)304(步骤1302)。备份和恢复服务器303在克隆管理表304中记录关于所有克隆树中的所有克隆文件的克隆管理信息(步骤1304)。备份和恢复服务器303接收请求(步骤1306)。如果该请求是备份请求(判断步骤1308,YES分支),则备份和恢复服务器303使用CMT 304中的信息来备份克隆文件树中的数据块(步骤1309),并终止(步骤1330)。
[0045]在步骤1309中,在执行备份操作之前,备份和恢复服务器303遍历文件系统,并收集关于它找到的克隆文件的信息。对于每个找到的父亲或孩子克隆文件,备份和恢复服务器303收集:父亲索引节点号(如果父亲不存在,则为O),具有偏移和长度的唯一块序列的列表、克隆树深度、以及孩子计数。对于每个找到的克隆文件,备份和恢复服务器303将它已经收集的关于它已找到的克隆文件的信息与克隆管理表304中的信息进行比较,并采取以下动作:如果克隆管理表304中存在针对该克隆文件的条目,并且该条目中的所有值等于在文件系统中找到的值,则在克隆管理表304中利用备份开始时间更新时间戳,并且不备份该文件。如果在克隆管理表304中不存在针对该克隆文件的条目,则在该克隆管理表304中为该克隆文件中的每个唯一块序列创建一个条目,并备份该克隆文件。利用备份开始时间来更新条目中的时间戳。如果克隆管理表304中存在针对该克隆文件的条目,但是块序列内的块已经被写入,则更新克隆管理表304中针对该克隆文件的条目。利用备份开始时间更新条目中的时间戳。备份在该克隆文件中已经被写入的块。如果在克隆管理表304中存在针对该克隆文件的条目,但是该条目中的块序列已经在文件系统中被增添了额外的块,则在克隆管理表304中创建和添加针对该克隆文件的描述所述额外块的新条目。利用备份开始时间更新针对文件条目的时间戳,并备份额外块。如果在克隆管理表304中存在针对克隆文件的条目,但是文件系统中的块序列不具有该条目中所描述的所有块,则从克隆管理表304中移除在文件系统中没有找到的块的描述。如果克隆管理表304中存在针对克隆文件的条目并且显示没有孩子,但是在文件系统中找到一个或多个孩子,则将克隆管理表304中针对克隆文件的条目更新成正确的孩子数量。利用备份开始时间更新克隆管理表304中的克隆文件条目中的时间戳。
[0046]如果请求不是备份请求(判断步骤1308,N0分支),则备份和恢复服务器303判断该请求是否是恢复克隆文件的请求(判断步骤1310)。如果该请求是要恢复克隆文件(判断步骤1310,YES分支),则备份和恢复服务器303使用CMT中的信息将数据块恢复到克隆文件(步骤1312 ),并终止(步骤1330)。
[0047]如果请求不是恢复克隆文件的请求(判断步骤1310,N0分支),则备份和恢复服务器303判断该请求是否是恢复克隆文件父亲的请求(判断步骤1314)。如果请求是要恢复克隆文件父亲(判断步骤1314,YES分支),则备份和恢复服务器303使用CMT中的信息将数据块恢复到克隆文件父亲(步骤1316),并终止(步骤1330)。
[0048]如果请求不是恢复克隆文件父亲的请求(判断步骤1314,N0分支),则备份和恢复服务器303判断该请求是否是恢复克隆文件树的请求(判断步骤1318)。如果该请求是要恢复克隆文件树(判断步骤1318,YES分支),则备份和恢复服务器303使用CMT中的信息将数据块恢复到克隆文件树(步骤1320),并终止(步骤1330)。
[0049]如果请求不是恢复克隆文件树的请求(判断步骤1318,N0分支),则备份和恢复服务器303判断该请求是否是文件到期请求(判断步骤1322)。如果该请求是文件到期请求(判断步骤1322,YES分支),则备份和恢复服务器303使用CMT中的信息从克隆文件树中删除数据块(步骤1324),并终止(步骤1330)。
[0050]如果请求不是文件到期请求(判断步骤1322,N0分支),则备份和恢复服务器303判断该请求是否是有效性检查请求(判断步骤1326)。如果请求是有效性检查请求(判断步骤1326,YES分支),则备份和恢复服务器303分析CMT中的信息的一致性(步骤1328),并终止(步骤1330)。如果请求不是有效性检查请求(判断步骤1326,N0分支),则备份和恢复服务器303向备份和恢复客户端302报告请求错误,并终止(步骤1330)。
[0051]图14绘出计算节点A205的示例性实施例,其托管文件服务器301以及备份和恢复服务器303。计算节点A 205包括处理器1404、高速缓存1416、通信结构1402,该通信结构1402提供高速缓存1416、存储器1406、永久存储装置1408、通信单元1410以及输入/输出(I/O)接口 1412之间的通信。通信结构1402可以利用设计成在处理器(诸如微处理器、通信和网络处理器、等等)、系统存储器、外围设备和系统内的任何其他硬件组件之间传递数据和/或控制信息的任何架构来实现。例如,通信结构1402可以利用一个或多个总线来实现。
[0052]存储器1406和永久存储装置1308是计算机可读存储介质。在该实施例中,存储器1406包括随机存取存储器(RAM)。通常,存储器1406可以包括任何适合的易失性或非易失性计算机可读存储介质。高速缓存1416是快速存储器,其通过保持最近访问的数据以及从存储器1306访问的数据附近的数据来增强处理器1304的性能。
[0053]用来实践本发明实施例的程序指令和数据可以被存储在永久存储装置1408中,用于经由高速缓存1416和存储器1306中的一个或多个存储器由相应的处理器1404中的一个或多个执行。在一实施例中,永久存储装置1408包括磁硬盘驱动器。可替换地,或者除了磁硬盘驱动器之外,永久存储装置1308可以包括固态硬驱、半导体存储设备、只读存储器(R0M)、可擦除可编程只读存储器(EPROM)、闪存存储器、或者能够存储程序指令或数字信息的任何其他计算机可读存储介质。
[0054]永久存储装置1408所使用的介质也可以是可移动的。例如,可移动硬驱可以被用于永久存储装置1408。其他示例包括光或磁盘,拇指驱动器,以及智能卡,该智能卡被插入驱动器中用于向也是永久存储装置1408的一部分的另一计算机可读存储介质传送。
[0055]在这些示例中,通信单元1410提供与其他数据处理系统或设备的通信。在这些示例中,通信单元1410包括一个或多个网络接口卡。通信单元1410可以通过使用物理和无线通信链路中的一个或二者来提供通信。用来实践本发明实施例的程序指令和数据可以通过通信单元1410被下载到永久存储装置1408。
[0056]I/O接口 1412允许与可连接到每个计算机系统的其他设备进行数据输入和输出。例如,I/O接口 1412可以提供去往外部设备1418(诸如键盘、小键盘、触摸屏、和/或一些其他适合的输入设备)的连接。外部设备1418还可以包括便携式计算机可读存储器介质,诸如拇指驱动器、便携式光或磁盘、以及存储卡。用来实践本发明实施例的软件和数据可以被存储在这样的便携式计算机可读存储介质上,并且可以经由I/O接口 1412被加载到永久存储装置1408上。I/O接口 1412还连接到显示器1420。
[0057]显示器1420提供了一种向用户显示数据的机构,并且可以是例如计算机监视器。
[0058]本文中描述的程序是基于在本发明的特定实施例中为其实现这些程序的应用来识别的。然而,应当理解的是,本文中对任何特定程序的命名仅仅是出于方便的目的而被使用的,并且因此本发明不应局限于唯一地用于由这样的命名识别和/或暗示的任何特定应用。
[0059]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0060]计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是一一但不限于一一电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0061]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0062]用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如Smalltalk、C++等,以及常规的过程式编程语言一诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0063]这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0064]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0065]也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0066]附图中的框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0067]本发明的各个实施例的描述已经出于举例说明的目的而被呈现,而并非旨在是无遗漏的或局限于所公开的实施例。在不脱离本发明的范围和精神的情况下,许多改型和变型对于本领域普通技术人员来说将是明显的。本文所使用的术语被选择为最佳地解释所述实施例的原理、实际应用、或者相对于在市场中发现的技术的技术改进,或者使本领域其他普通技术人员能够理解本文公开的实施例。
[0068]本文使用的术语仅是为了描述特定实施例的目的,并且并非意在限制本发明。本文使用的单数形式的“一”和“该”意在也包括复数形式,除非上下文有清楚的相反指示。
[0069]除了说明本发明在各个阶段的方法和功能之外,各个附图还说明了整体或部分地由一个或多个设备和结构实现的所述方法的逻辑。这样的设备和结构被配置成(即,包括被连接以使得能够执行一个过程的一个或多个组件,诸如电阻器、电容器、晶体管等等)实现将一个或多个非事务性存储和一个或多个线程特定的事务性存储融合到存储高速缓存中的存储缓冲器中的一个或多个高速缓存线模板中的方法。换言之,一个或多个计算机硬件设备可以被创建,其配置成实现在本文中参考附图及其对应描述来描述的方法和过程。
[0070]本发明的各个实施例的描述已经出于举例说明的目的而被呈现,而并非旨在是无遗漏的或局限于所公开的实施例。在不脱离所述实施例的范围和精神的情况下,许多改型和变型对于本领域普通技术人员来说将是明显的。本文所使用的术语被选择为最佳地解释所述实施例的原理、实际应用、或者相对于在市场中发现的技术的技术改进,或者使本领域其他普通技术人员能够理解本文公开的实施例。
[0071]本发明的实施例可用于各式各样的电子应用中,包括但不限于高级传感器、存储器/数据存储装置、半导体、微处理器和其他应用。
[0072]所得到的设备和结构诸如集成电路(IC)芯片可以由制造者以原始晶片形式(SP,作为具有多个未封装芯片的单个晶片)作为裸芯片或者以封装形式来分发。在后一种情况下,芯片被安装在单个芯片封装体(诸如塑料载体、具有固定到母板或其他更高级载体的引线)中或者多芯片封装体(诸如具有表面互连或埋设互连之一或二者的陶瓷载体)中。在任何情况下,芯片随后与其他芯片、离散电路元件和/或其他信号处理设备集成,作为(a)诸如母板之类的中间产品或(b)终端产品的一部分。终端产品可以是包括集成电路芯片的任何产品,其涵盖范围可从玩具和其他低端应用到具有显示器、键盘或其他输入设备和中央处理器的高级计算机产品。
[0073]下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等效物意在包括用于与具体要求保护的其他元件相结合地执行功能的任何结构、材料或动作。本发明的描述已经出于举例说明和描述的目的而被呈现,而并非旨在是无遗漏的或局限于所公开的形式的发明。在不脱离本发明的范围和精神的情况下,许多改型和变型对于本领域普通技术人员来说将是明显的。实施例被选择并描述,以便最佳地解释本发明的原理和实际应用,以及使本领域其他普通技术人员能够理解本发明从而获得具有适合于所预期的特定使用情况的各种修改的各种实施例。
[0074]尽管本发明已经结合仅仅有限数量的实施例进行了详细描述,但是应该容易理解的是,本发明不限于这些公开的实施例。相反,本发明可以被修改以包含任意数量的之前并未描述、但是与并发明的精神和范围相称的变化、更改、替换或等效布置。另外,尽管已经描述了本发明的各种实施例,但是应理解的是,本发明的各方面可以仅被所述实施例的一些包括。因此,本发明不应视为被前面的描述限制。除非具体地陈述,否则对单数元件的提及并非旨在意指“一个且仅一个”,而是指“一个或多个”。与本公开全篇中所述的各种实施例的元件等效的本领域普通技术人员已知或以后知晓的所有结构和功能通过引用特意结合在本文中、并且意在被本发明包括。因此,应理解的是,可以在所公开的特定实施例中作出落入所附权利要求所概述的本发明的范围内的改变。
【主权项】
1.一种用于备份和恢复一个或多个克隆文件树的方法,所述方法包括: 由一个或多个处理器生成克隆管理表; 由所述一个或多个处理器在所述克隆管理表中记录关于文件系统中的一个或多个克隆文件树中的每个克隆文件的克隆管理信息; 响应于接收到备份请求,由所述一个或多个处理器更新所述克隆管理信息,并存储处于所述一个或多个克隆文件树中的一个或多个数据块; 响应于接收到恢复克隆文件的请求,由所述一个或多个处理器分析关于所述克隆文件的克隆管理信息,并将所述克隆文件中的一个或多个数据块恢复到所述文件系统; 响应于接收到恢复克隆文件父亲的请求,由所述一个或多个处理器分析关于所述克隆文件父亲的克隆管理信息,并将所述克隆文件父亲中的一个或多个数据块恢复到所述文件系统;以及 响应于接收到恢复克隆文件树的请求,由所述一个或多个处理器分析关于所述克隆文件树的克隆管理信息,并将所述克隆文件树中的一个或多个数据块恢复到所述文件系统。2.如权利要求1所述的方法,其中关于克隆文件的克隆管理信息包括关于所述克隆文件的文件信息、已经被写入所述克隆文件的一个或多个数据块的位置、以及所述克隆文件的最新近备份时间。3.如权利要求2所述的方法,其中所述文件信息包括所述克隆文件的标识符、所述克隆文件的大小、所述克隆文件的索引节点号、所述克隆文件的索引节点元数据、所述克隆文件的父亲的索引节点号、所述克隆文件在克隆文件树中的深度级别、所述克隆文件的孩子计数、以及针对所述克隆管理信息的有效指示符。4.如权利要求1所述的方法,其中备份和恢复服务器将克隆文件备份和恢复到所述文件系统,以及从所述文件系统备份和恢复克隆文件。5.如权利要求4所述的方法,其中所述克隆管理表位于所述备份和恢复服务器中。6.如权利要求1所述的方法,还包括: 响应于接收到文件到期请求,由所述一个或多个处理器更新所述克隆管理信息,并从所述一个或多个克隆文件树中删除一个或多个数据块;以及 响应于接收到检查所述克隆管理表的有效性的请求,由所述一个或多个处理器分析所述克隆管理表中的信息的一致性,并生成处于所述克隆管理表中的无效信息的列表。7.如权利要求5所述的方法,其中所述备份和恢复服务器以及所述克隆管理表分布在所述文件系统中的多个计算机上。8.—种用于备份和恢复一个或多个克隆文件树的计算机系统,所述计算机系统包括: 一个或多个计算机处理器,一个或多个计算机可读存储介质,以及存储在所述计算机可读存储介质上用于由所述一个或多个处理器中的至少一个执行的程序指令,所述程序指令包括: 生成克隆管理表的程序指令; 在所述克隆管理表中记录关于文件系统中的一个或多个克隆文件树中的每个克隆文件的克隆管理信息的程序指令; 响应于接收到备份请求,更新所述克隆管理信息,并存储处于一个或多个克隆文件树中的一个或多个数据块的程序指令; 响应于接收到恢复克隆文件的请求,分析关于所述克隆文件的克隆管理信息,并将所述克隆文件中的一个或多个数据块恢复到所述文件系统的程序指令; 响应于接收到恢复克隆文件父亲的请求,分析关于所述克隆文件父亲的克隆管理信息,并将所述克隆文件父亲中的一个或多个数据块恢复到所述文件系统的程序指令;以及 响应于接收到恢复克隆文件树的请求,分析关于所述克隆文件树的克隆管理信息,并将所述克隆文件树中的一个或多个数据块恢复到所述文件系统的程序指令。9.如权利要求8所述的计算机系统,还包括存储在所述一个或多个计算机可读存储介质上用于执行以下操作的程序指令: 在关于克隆文件的克隆管理信息中包括:关于所述克隆文件的文件信息、已经被写入所述克隆文件的一个或多个数据块的位置、以及所述克隆文件的最新近备份时间。10.如权利要求9所述的计算机系统,还包括存储在所述一个或多个计算机可读存储介质上用于执行以下操作的程序指令: 在所述文件信息中包括:所述克隆文件的标识符、所述克隆文件的大小、所述克隆文件的索引节点号、所述克隆文件的索引节点元数据、所述克隆文件的父亲的索引节点号、所述克隆文件在克隆文件树中的深度级别、所述克隆文件的孩子计数、以及针对所述克隆管理信息的有效指示符。11.如权利要求8所述的计算机系统,还包括存储在所述一个或多个计算机可读存储介质上用于执行以下操作的程序指令: 使用备份和恢复服务器,将克隆文件备份和恢复到所述文件系统,以及从所述文件系统备份和恢复克隆文件。12.如权利要求11所述的计算机系统,其中所述科隆管理表位于所述备份和恢复服务器中。13.如权利要求8所述的计算机系统,还包括: 响应于接收到检查所述克隆管理表的有效性的请求,分析所述克隆管理表中的信息的一致性,并生成处于所述克隆管理表中的无效信息的列表的程序指令;以及 响应于接收到恢复克隆文件的请求,分析关于所述克隆文件的克隆管理信息,并将所述克隆文件中的一个或多个数据块恢复到所述文件系统的程序指令。
【文档编号】G06F11/14GK106021017SQ201610185066
【公开日】2016年10月12日
【申请日】2016年3月29日
【发明人】S·本德尔, N·豪施泰因, D·米勒-威克, W·A·索顿, J·P·史密斯
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1