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

文档序号:8395676阅读:246来源:国知局
一种快照管理方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据保护技术领域,特别是涉及一种快照管理方法及装置。
【背景技术】
[0002]在NAS (Network Attached Storage,网络附属存储)应用中,快照作为一种本地备份的手段越来越来重要。管理员可以通过手工打快照或定时任务的方式对文件系统的数据进行快照保护,一旦当前系统发生故障,可以快速的回滚到前面的时间点,降低数据丢失的概率,也有很多远程复制的应用需要基于快照来完成,所以一个NAS系统,快照技术是必不可少的。
[0003]目前的快照实现方式主要有两种,一种是支持R0W(Redirect On Write,写时重定向)方式的系统级快照,但是这种系统级的快照不够灵活,而且当前的NAS产品一般都是以目录的形式共享出去给用户使用,系统快照粒度过粗,回滚时会影响所有的用户使用。另一种是支持ROW/COW (Copy On Write,写时拷贝)方式的任意目录级的快照,使用灵活,但是其主要是基于只扫描指定路径文件的分布式文件系统,快照实现依赖于文件布局与全局的文件描述符结构表(Inode Table)。
[0004]因此,目前还没有能够针对无文件布局与全局Inode Table的分布式文件系统任意目录快照的处理方法。

【发明内容】

[0005]本发明主要解决的技术问题是提供一种快照管理方法及装置,能够针对无文件布局和全局文件描述符结构表的分布式文件系统实现任意目录快照。
[0006]第一方面,本发明提供一种快照管理方法,包括:服务器接收来自客户端的快照标识申请,所述快照标识用于标识客户端文件系统生成的快照,所述服务器用于管理文件系统以及所述文件系统的快照;生成整个文件系统最新的快照号,将所述最新的快照号作为所述快照标识返回给客户端,更新文件系统的文件描述符结构,所述文件系统的文件描述符结构至少包括所述文件系统的标识、所述文件系统的产生时刻、所述文件系统的最新的快照标识、所述文件系统的标式以及文件系统的快照链表,所述文件系统包括文件和目录的至少一种;创建与所述文件系统生成的快照对应的跟踪文件,所述跟踪文件记录生成所述快照之后所述文件系统的变化信息。
[0007]结合第一方面,在第一方面的第一种可能的实现方式中:所述方法还包括:接收来自客户端的目录快照访问请求,所述目录快照访问请求包括请求访问的快照标识与目录名;根据所述快照访问请求找到目录快照的目录数据对象以及目录的目录数据对象,所述目录数据对象包括文件描述符和文件描述符对应的记录项;查找所述目录快照的目录数据对象,读取其中产生时刻小于所述请求访问的快照标识,且快照标识大于所述请求访问的快照标识的文件描述符对应的记录项,返回给所述客户端;查找所述目录的目录数据对象,读取其中产生时刻小于或等于所述请求访问的快照标识的文件描述符对应的记录项,返回给所述客户端。
[0008]结合第一方面,在第一方面的第二种可能的实现方式中:所述方法还包括:接收来自客户端的文件快照访问请求,所述文件快照访问请求包括请求访问的快照标识与文件名;根据所述快照访问请求所请求访问的快照,确定需要读取的数据块;针对每个所述需要读取的数据块,分别按照生成快照的顺序从当前快照往后找,直到读到所述需要读取的数据块为止;将读到的所有需要读取的数据块返回给客户端。
[0009]结合第一方面,在第一方面的第三种可能的实现方式中:所述方法还包括:接收客户端的删除快照请求;查找快照的跟踪文件,查看请求删除的快照是否有前一个快照;在所述请求删除的快照有前一个快照时,若所述请求删除的快照存在有与所述前一个快照共享的数据,将所述共享的数据拷贝至所述前一个快照中,并将变化信息记入所述前一个快照对应的跟踪文件,然后删除所述请求删除的快照与其对应的跟踪文件;若所述请求删除的快照不存在有与所述前一个快照共享的数据,直接删除所述请求删除的快照与其对应的跟踪文件;若请求删除的快照没有前一个快照时,直接删除所述请求删除的快照与其对应的跟踪文件。
[0010]结合第一方面,在第一方面的第四种可能的实现方式中:所述文件系统包括第一目录以及第二目录,所述第一目录以及所述第二目录生成过快照,所述方法还包括:接收客户端的移动指令,所述移动指令指示将第一目录下的数据移动到第二目录下,所述数据包括第一目录下的子目录、子文件的至少一种;将第一目录的所述数据的记录项删除;向上查找所有快照信息,将找到的所述所有快照信息记录在所述数据的文件描述符的快照链表中;在所述第一目录的目录数据对象中生成所述数据的记录项的快照,并将所述第一目录的变化信息记入其对应的跟踪文件,所述第一目录的目录数据对象包括所述第一目录的文件描述符以及所述文件描述符对应的记录项;在所述第二目录下拷贝生成所述数据的记录项,并向上收集所有快照信息以更新所述数据的文件描述符的快照链表和所述数据的产生时刻;将所述第二目录的变更信息记入所述第二目录快照对应的跟踪文件中。
[0011]结合第一方面,在第一方面的第五种可能的实现方式中:所述文件系统包括硬链接文件,所述硬链接文件有多个父目录,所述多个父目录都生成过快照,所述方法还包括:对于硬链接文件,通过出生表记录所述硬链接文件扩展名与其父目录扩展名的关系;在接收通过指定路径访问硬链接文件的请求时,根据所述出生表查找到所述硬链接文件的所有父目录;生成所述所有父目录访问所述硬链接文件的所有路径和所述所有路径对应的快照。
[0012]结合第一方面,在第一方面的第六种可能的实现方式中:所述方法还包括:接收一级目录回滚指令,锁定所述指令要回滚的一级目录并确定所述指令要回滚到的快照;查看所述指令要回滚的一级目录的快照链表,找出所述指令要回滚到的快照之后的所有快照;将所述一级目录的文件按照快照的快照标识从大到小往前依次逐个回滚,直到回滚至所述指令要回滚到的快照为止,然后解除要回滚的一级目录的锁定。
[0013]结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中:所述将所述一级目录的文件按照快照的快照标识从大到小往前依次逐个回滚,直到回滚至所述指令要回滚到的快照为止的步骤包括:找出最大快照标识的快照作为当前要回滚到的快照,扫描所述最大快照标识的快照的跟踪文件,判断所述最大快照标识的快照是文件快照还是目录快照;在所述最大快照标识的快照为文件快照时,删除所述最大快照标识的快照的条带对象,将所述一级目录的文件中相应的条带对象更名为所述最大快照标识的快照的条带对象;删除所述最大快照标识的快照的跟踪文件;在所述最大快照标识的快照是所述指令要回滚到的快照时,结束回滚操作,否则,返回所述找出最大快照标识的快照作为当前要回滚到的快照及其之后的步骤。
[0014]结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中:在所述最大快照标识的快照为目录快照时,扫描所述一级目录快照的目录数据对象,所述目录数据对象包括文件描述符以及与所述文件描述符对应的记录项;在所述目录数据对象中找到快照标识与所述最大快照标识相同的快照,然后判断最大快照标识的快照文件描述符大小相对于所述一级目录的当前版本中的文件描述符是否发生变化;在发生变化时,将所述一级目录的当前版本截小至所述最大快照标识的快照大小,否则,拷贝生成所述最大快照标识的快照记录项到所述一级目录的当前版本的目录数据对象中;扫描所述一级目录当前版本的目录数据对象,所述目录数据对象包括文件描述符以及与所述文件描述符对应的记录项;删除其中产生时刻大于所述最大快照标识的记录项;在所述最大快照标识的快照是所述指令要回滚到的快照时,结束回滚操作,否则,返回所述找出最大快照标识的快照作为当前要回滚到的快照及其之后的步骤。
[0015]结合第一方面,在第一方面的第九种可能的实现方式中:所述方法还包括:接收对已经生成过快照的文件系统的元数据进行修改的修改操作指令,所述文件系统的元数据包括文件系统的目录元数据、文件元数据的至少一种;进行要修改的所述文件系统的元数据的写时拷贝,修改所述文件系统的文件描述符,并将所述修改信息记入所述文件系统快照的跟踪文件。
[0016]结合第一方面,在第一方面的第十种可能的实现方式中:所述方法还包括:接收对已经生成过快照的文件系统的数据进行修改的修改操作指令,所述文件系统的数据包括文件系统的目录数据、文件数据的至少一种;进行修改的所述文件系统的数据的写时重定向过程,然后进行所述文件系统的数据修改,并将所述修改信息记入所述文件系统快照的跟踪文件。
[0017]结合第一方面,在第一方面的第十一种可能的实现方式中:所述方法还包括:通过快照间比对获取增量,所述增量包括数据的增量和元数据的增量。
[0018]结合第一方面的第i^一种可能的实现方式,在第一方面的第十二种可能的实现方式中:所述数据的增量包括修改写产生的增量和通过追加写产生的增量,其中,通过扫描快照的跟踪文件获取修改写产生的增量,通过比对文件的文件描述符与其对应的快照的文件描述符的大小获取通过追加写产生的增量。
[0019]结合第一方面的第i^一种可能的实现方式,在第一方面的第十二种可能的实现方式中:通过比对快照与其对应的非快照版本的文件描述符中的产生时刻或查看快照的文件描述符中的标示获取元数据增量。
[0020]第二方面,提供一种快照处理装置:所述装置包括接收模块、返回模块以及创建模块,其中:所述接收模块用于接收来自客户端的快照标识申请,所述快照标识用于标识客户端文件系统生成的快照;所述返回模块用于响应所述接收模块接收的快照标识申请,生成整个文件系统最新的快照号,将所述最新的快照号作为所述快照标识返回给客户端,并更新文件系统的文件描述符结构,所述文件描述符结构至少包括所述文件系统的标识、所述文件系统的产生时刻、所述文件系统的最新的快照标识、所述文件系统的标式以及所述文件系统的快照链表,所述文件系统包括文件和目录的至少一种;所述创建模块用于创建与所述文件系统生成的快照对应的跟踪文件,所述跟踪文件记录生成所述快照之后所述文件系统的变化信息。
[0021]结合第二方面,在第二方面的第一种可能的实现方式中:所述装置进一步包括快照访问处理模块,所述快照访问处理模块用于接收来自客户端的目录快照访问请求,所述目录快照访问请求包括请求访问的快照标识与目录名,根据所述快照访问请求找到目录快照的目录数据对象以及目录的目录数据对象,所述目录数据对象包括文件描述符和文件描述符对应的记录项;查找所述目录快照的目录数据对象,读取其中产生时刻小于所述请求访问的快照标识,且快照标识大于所述请求访问的快照标识的文件描述符对应的记录项,返回给所述客户端,查找所述目录的目录数据对象,读取其中产生时刻小于或等于所述请求访问的快照标识的文件描述符对应的记录项,返回给所述客户端;或所述快照访问处理模块还用于接收来自客户端的文件快照访问请求,所述文件快照访问请求包括请求访问的快照标识与文件名,根据所述快照访问请求所请求访问的快照,确定需要读取的数据块,针对每个所述需要读取的数据块,分别按照生成快照的顺序从当前快照往后找,直到读到所述需要读取的数据块为止;将读到的所有需要读取的数据块返回给客户端。
[0022]结合第二方面,在第二方面的第二种可能的实现方式中:所述装置进一步包括快照删除模块,所述快照删除模块用于接收客户端的删除快照请求,查找快照的跟踪文件,查看请求删除的快照是否有前一个快照,在所述请求删除的快照有前一个快照时,若所述请求删除的快照存在有与所述前一个快照共享的数据,将所述共享的数据拷贝至所述前一个快照中,并将变化信息记入所述前一个快照对应的跟踪文件,然后删除所述请求删除的快照与其对应的跟踪文件,若所述请求删除的快照不存在有与所述前一个快照共享的数据,直接删除所述请求删除的快照与其对应的跟踪文件,若请求删除的快照没有前一个快照时,直接删除所述请求删除的快照与其对应的跟踪文件。
[0023]结合第二方面,在第二方面的第三种可能的实现方式中:所述文件系统包括第一目录以及第二目录,所述第一目录以及所述第二目录生成过快照,所述装置进一步包括移动模块,所述移动模块用于接收客户端的移动指令,所述移动指令指示将第一目录下的数据移动到第二目录下,所述数据包括为第一目录下的子目录、子文件的至少一种,将第一目录的所述数据的记录项删除,向上查找所有快照信息,将找到的所述所有快照信息记录在所述数据的文件描述符的快照链表中,在所述第一目录的目录数据对象中生成所述数据的记录项的快照,并将所述第一目录的变化信息记入其对应的跟踪文件,所述第一目录的目录数据对象包括所述第一目录的文件描述符以及所述文件描述符对应的记录项,在所述第二目录下拷贝生成所述数据的记录项,并向上收集所有快照信息以更新所述数据的文件描述符的快照链表和所述数据的产生时刻,将所述第二目录的变更信息记入所述第二目录快照对应的跟踪文件中。
[0024]结合第二方面,在第二方面的第四种可能的实现方式中:所述文件系统包括硬链接文件,所述硬链接文件有多个父目录,所述多个父目录都生成过快照,所述装置进一步包括硬链接管理模块,所述硬链接管理模块用于通过出生表记录所述硬链接文件扩展名与其父目录扩展名的关系,在接收通过指定路径访问硬链接文件的请求时,根据所述出生表查找到所述硬链接文件的所有父目录,生成所述所有父目录访问所述硬链接文件的所有路径和所述所有路径对应的快照。
[0025]结合第二方面,在第二方面的第五种可能的实现方式中:所述装置进一步包括修改模块,所述修改模块用于接收对已经生成过快照的文件系统的元数据进行修改的修改操作指令,所述文件系统的元数据包括文件系统的目录元数据、文件元数据的至少一种,进行要修改的所述文件系统的元数据的写时拷贝,修改所述文件系统的文件描述符,并将所述修改信息记入所述文件系统快照的跟踪文件;或所述修改模块用于接收对已经生成过快照的文件系统的数据进行修改的修改操作指令,所述文件系统的数据包括文件系统的目录数据、文件数据的至少一种,进行修改的所述文件系统的数据的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1