一种快照管理方法及装置的制造方法_4

文档序号:8395676阅读:来源:国知局
快照标识的快照的inode相对于一级目录的当前版本中的inode是否变化;
[0159]在快照M的inode相对于一级目录的当前版本中的inode发生变化时,执行S7019,否则,执行 S7018。
[0160]S7018:拷贝生成最大快照标识的快照记录项到一级目录的当前版本的目录数据对象中;
[0161]S7019:将一级目录的当前版本截小至最大快照标识的快照大小;
[0162]S7020:扫描一级目录当前版本的目录数据对象,删除其中产生时刻大于最大快照标识的记录项;
[0163]S7021:判断最大快照标识的快照是否是指令要回滚到的快照;
[0164]在判断到最大快照标识的快照是指令要回滚到的快照时,执行步骤S7022,否则,返回继续执行S7012以及之后的步骤。也就是说,判断M是否是指令要回滚到的快照,若M就是指令要回滚到的快照,则本次回滚已经完成,结束回滚操作。如果M不是指令要回滚到的快照,继续往前逐个回滚直至到指令要回滚到的快照为止。
[0165]S7022:结束回滚操作。
[0166]在本发明快照管理方法的第七个实施方式中,本发明的快照管理方法还可以对于已经生成过快照的文件系统的数据进行修改。即在执行完本发明快照管理方法第一个实施方式的所有步骤之后,还可以进一步接收对已经生成过快照的文件系统的数据进行修改的修改操作指令,根据修改操作指令进行数据修改。
[0167]其中,修改操指令包括元数据修改操作指令和文件数据修改操作指令。本实施方式进一步提供进行数据修改的具体实现流程。
[0168]请参阅图15,图15是本实施方式中进行数据修改的流程图,进行数据修改包括以下步骤:
[0169]S801:接收修改操作指令;
[0170]S802:判断修改操作指令是元数据修改操作指令还是文件数据修改操作指令;
[0171]在判断到修改操作指令是元数据修改操作指令时,执行步骤S803,在判断到修改操作指令是文件数据修改操作指令时,执行步骤S804。
[0172]S803:进行数据修改的文件系统的元数据的写时拷贝,修改文件系统的inode,并将修改信息记入文件系统快照的跟踪文件;
[0173]S804:进行修改的文件系统的数据的写时重定向过程,然后进行文件系统的数据修改,并将修改信息记入目标文件快照的跟踪文件。
[0174]如果接收到对没有生成过快照的文件系统的数据进行修改的修改操作指令,直接进行数据修改或inode修改即可。因为该文件系统的数据没有生成过快照,因此数据的修改不会存在快照共享的数据受到影响的情况。
[0175]以上各个实施方式可以两个或多个结合实现,即在第一个实施方式的基础上,可以结合实现快照数据访问的处理、快照删除处理、快照增量比对、移动操作硬链接访问处理、回滚处理以及数据修改处理中的任意两个或多个功能。
[0176]请参阅图16,图16是本发明快照处理装置一个实施方式的结构示意图,本实施方式的快照处理装置100包括接收模块11、返回模块12以及创建模块13,其中:
[0177]接收模块11用于接收来自客户端的快照标识申请,快照标识用于标识客户端文件系统生成的快照;
[0178]客户端生成快照后,向服务器申请用于标识客户端生成的快照的快照标识。接收模块11接收来自客户端的快照标识申请。
[0179]返回模块12用于响应接收模块11接收的快照标识申请,生成整个文件系统最新的快照号,将最新的快照号作为快照标识返回给客户端,并更新文件系的inode结构,文件系统的inode结构至少包括文件系统的标识、文件系统的产生时刻、文件系统的最新的快照标识、文件系统的标式以及文件系统的快照链表;
[0180]返回模块12生成整个文件系统最新的快照号,比如将整个文件系统最新的快照号加I作为最新的快照号(Global Last Snapshot ID, GLS),将这个最新的快照号作为快照标识返回给客户端。文件系统中GLS是单调递增的,即文件系统的任意目录或文件生成快照后,该GLS都在原有基础上加I作为当前生成的快照的快照标识(当然也可以是与客户端预先设定好的加2、加3等其他的方式单调递增)。比如当前GLS为snapl2,若当前客户端对某个文件或目录生成了一个快照,向元数据服务器申请快照标识时,元数据服务器会在snapl2的基础上加I即以snapl3返回给客户端作为当前快照的快照标识。
[0181]返回客户端快照标识后,元数据服务器需要更新文件系统的inode (文件描述符)结构。其中,文件系统的inode结构至少包括文件系统的标识(FID)、文件系统的产生时刻(B i rth_Moment)、文件系统的最新的快照标识(Cur r en t_Snap ID )、文件系统的标记(Flags)、文件系统的快照链表(Snap_List),另外,文件系统的inode结构还可以包括重命名字段(Rename)以及临时字段(Change_Moment)。其中,文件系统包括目录和文件中的至少一种。
[0182]更新文件系统的inode结构具体是更新快照根的inode结构,记录快照根信息。快照根是指生成的快照所属的目录或文件。比如快照根的inode中的Current_SnapID更新,更新为新的快照标识,同时记录在Snap_List中,文件系统当前的GLS=最新的快照标识。
[0183]创建模块13用于创建与文件系统生成的快照对应的跟踪文件,跟踪文件记录生成快照之后文件系统的变化信息。
[0184]创建模块13在客户端为文件或目录生成快照后,生成与该快照对应的跟踪文件(Track文件),该跟踪文件是用于记录生成的快照之后文件系统的变化信息。比如生成快照snap22后对文件I进行了修改或删除,或创建了文件2,这些变化的信息都会记录在与snap22对应的跟踪文件中。
[0185]其中,Track文件的主要作用有:1)回滚时,找到哪些文件需要处理,即找到修改,删除,增加的文件;2)快照删除时,找到哪些文件需要删掉,即找到修改,删除过的文件;3)增量备份时,找到两个快照间的差异数据,即找到修改,删除,增加的文件。
[0186]本发明实施方式中,为了性能考虑,一个快照的Track文件,可以拆分成若干个子文件,跟MDS绑定,每个MDS操作完成后更新本地的Track文件即可,Track子表的对象号分配规则为快照标识+元数据服务器标识+标记即Snap ID+MDS ID+Flags。另外,为了简化Track文件的设计,可以在Track文件中只记录目录文件的变化信息,具体的变化需要扫描目录才能获取。
[0187]请参阅图17,图17是本发明快照处理装置另一个实施方式的结构示意图,本实施方式的快照处理装置200包括接收模块21、返回模块22以及创建模块23,进一步包括快照访问处理模块24,其中:
[0188]接收模块21用于接收来自客户端的快照标识申请,快照标识用于标识客户端文件系统生成的快照;
[0189]返回模块22用于响应接收模块21接收的快照标识申请,生成最新的快照号,将最新的快照号作为快照标识返回给客户端;
[0190]创建模块23用于创建与生成的快照对应的跟踪文件,跟踪文件记录生成快照之后文件系统的变化信息;
[0191]其中,接收模块21、返回模块22以及创建模块23的具体功能实现请参阅图16所示实施方式的详细描述,在此不再赘述。
[0192]快照访问处理模块24用于接收来自客户端的快照访问请求,读取客户端请求的快照数据并返回给客户端,其中快照访问请求为目录快照访问请求或文件快照访问请求。
[0193]当快照访问为目录快照访问请求时,快照访问请求包括请求访问的快照标识与目录名,快照访问处理模块24用于根据快照访问请求找到目录快照的目录数据对象以及目录的目录数据对象,目录数据对象包括inode和inode对应的记录项,逐项查找目录快照的目录数据对象,读取其中产生时刻小于请求访问的快照标识,且快照标识大于请求访问的快照标识的inode对应的记录项,返回给客户端,逐项查找目录的目录数据对象,读取其中产生时刻小于或等于请求访问的快照标识的inode对应的记录项,返回给所述客户端。
[0194]当快照访问请求为文件快照访问请求时,快照访问请求包括请求访问的快照标识与文件名,快照访问处理模块24用于根据快照访问请求所请求访问的快照的大小,确定需要读取的数据块,针对每个需要读取的数据块,分别按照生成快照的顺序从当前快照往后找,直到读到需要读取的数据块为止,将读到的所有需要读取的数据块返回给客户端。
[0195]请继续参阅图17,在本发明快照处理装置另一个实施方式中,本发明快照处理装置200还进一步包括快照删除模块25,其中:
[0196]快照删除模块25用于接收客户端的删除快照请求,根据请求删除快照。
[0197]快照删除模块25用于查找所有快照的跟踪文件,查看请求删除的快照是否有前一个快照,在请求删除的快照有前一个快照时,若请求删除的快照存在有与所述前一个快照共享的数据,将共享的数据拷贝至前一个快照中,并将变化信息记入前一个快照对应的跟踪文件,然后删除请求删除的快照与其对应的跟踪文件,若请求删除的快照不存在有与前一个快照共享的数据,直接删除请求删除的快照与其对应的跟踪文件。
[0198]快照删除模块25还用于在请求删除的快照没有前一个快照时,直接删除请求删除的快照与其对应的跟踪文件。
[0199]在具体的处理过程中,快照删除模块25接收到客户端的快照删除请求,快照删除请求中包括请求删除的快照的快照标识。然后查找所有快照的Track文件,找出请求删除的快照,查看请求删除的快照是否有前一个快照版本,可以通过查看请求删除的快照的inode中记录的快照链表获知其前一个快照版本及相应的快照号。如果请求删除的快照存在前一个快照版本的话,进一步判断请求删除的快照是文件快照还是目录快照,如果是文件快照的话,按照文件快照删除的处理流程处理,如果是目录快照,按照目录快照的处理流程处理。如果请求删除的快照没有前一个快照版本,直接将请求删除的快照删除。
[0200]其中,文件快照删除的处理流程主要包括:判断前一个快照版本中是否有请求删除的快照的条带数据,若没有,将请求删除的快照中的条带数据拷贝至前一个快照版本,并将这个变化信息记录至前一个快照对应的Track文件中。若前一个快照版本中有请求删除的快照的条带数据,直接删除请求删除的快照及其对应的Track文件。
[0201]其中,目录快照删除的处理流程主要包括:查找请求删除的目录快照的所有记录项,在前一个快照版本的快照记录项拷贝存在时,删除请求删除的目录快照的记录项,在前一个快照版本的快照记录项拷贝不存在时,COW拷贝生成上一个版本快照记录项。目录的entry项处理完成后,需要对目录本身做处理,进一步判断目录本身的上一个快照版本是否存在,若存在,删除快照完成,若不存在,COff生成该目录的记录项,并在前一个快照版本的Track文件中添加该目录的目录信息。
[0202]请继续参阅图17,本发明快照处理装置另一个实施方式中,快照处理装置200还可以进一步包括增量获取模块26,其中:
[0203]增量获取模块26用于通过快照间比对获取增量,增量包括数据的增量和元数据的增量。
[0204]数据的增量包括修改写产生的增量和通过追加写产生的增量,其中,增量获取模块26通过扫描快照的跟踪文件获取修改写产生的增量,通过比对文件的inode与其对应的快照的inode的大小获取通过追加写产生的增量。
[0205]增量获取模块26通过比对快照与其对应的非快照版本的inode中的产生时刻或查看快照的inode中的标示获取元数据增量。
[0206]其中,快照间的比对采用相邻两个快照间的增量叠加比对的方法,如需要对比< snap I, snap7>之间的增量,会经过如下过程的叠加〈snapl, snap3>, <snap3, snap5>,<snap5, snap7>这三次增量比对过程;在增量比对的过程需要识别出修改,删除,新增这三部份的增量;增量分为数据的增量与元数据的增量,数据的增量主要是文件数据的修改写与追加写产生的,元数据的增量主要是由于修改inode或entry项产生,在获取增量的过程中也分为主要以下两部份:
[0207]1、数据增量部分
[0208]I)修改写产生的,这部分增量通过扫描快照的Track文件即可获取哪些条带修改过;
[0209]2)追加写产生的,这部分增量通过比对inode与快照版本inode的size属性可获知有多少增量。
[0210]2、元数据增量部分
[0211]I)创建,通过比对非快照版本inode的产生时刻可以获知是否是基于当前快照创建的,例如看〈N,NI〉快照之间增量,需要看增量的产生时刻是否在〈N,NI〉快照的产生时刻之间;
[0212]2)删除,通过查看快照版本inode里的Flags标记,可以知道是由于删除生成的快照版本;
[0213]3)修改(inode修改或记录项重命名),通过查看快照版本inode中的Flags标记,可以知道是由于修改生成的快照版本。
[0214]请继续参阅图17,在本发明快照处理装置另一个实施方式中,本发明的快照处理装置200进一步包括移动模块27,其中:
[0215]本实施方式的文件系统包括第一目录以及第二目录,第一目录以及第二目录生成过快照,移动模块27用于接收客户端的移动指令,将第一目录下的数据移动到第二目录下,第一目录下的数据包括第一目录下的子文件、子目录的至少一种。
[0216]具体地,移动模块27用于将第一目录的数据的记录项删除,向上查找所有快照信
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1