一种快照管理方法和装置制造方法
【专利摘要】本发明的实施例提供一种快照管理方法和装置,涉及计算机领域,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现以及目录快照删除复杂度高、效率低的问题。其方法为:获取快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作。本发明实施例用于文件系统快照与目录快照的管理。
【专利说明】一种快照管理方法和装置
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种快照管理方法和装置。
【背景技术】
[0002]快照(SnapShot)是某个数据集在某一特定时刻的镜像,也称为即时拷贝,它是这个数据集的一个完整可用的副本。对于文件系统来说,文件系统快照是文件系统的ー个即时拷贝,它包含了文件系统在快照生成时刻所有的信息,本身也是ー个完整可用的副本。
[0003]为了方便文件系统快照的实现,有很多成熟的方法,其中的ー种方法是采用ROW(Redirect on Write,写时重定向)技术。在这种方法中,当数据被重写时,将会为更新过的数据选择一个新的位置;同时,指向该数据的指针也将被重新映射,指向更新后的数据。
[0004]目录快照是ー类特殊的快照,它是文件系统中某指定目录在某一时刻的镜像或副本,包含了该目录在快照时刻所有的信息。目录快照在备份和远程复制中有重要的作用。
[0005]ROff型文件系统在文件系统级快照的生成和管理上很方便,但ー些ROW型文件系统本身不支持目录快照,而有些即使支持目录快照,但在目录级快照的实现上还存在很多缺点和不足之处。
[0006]现有技术中对ROW型文件系统中目录进行快照,主要有以下两种方法。
[0007]第一种是将目录快照当做是文件系统中的ー个特殊文件,以文件的方式和快照私有的方式配合来对目录快照进行管理。第二种是利用基于块级的快照生成方法,将目录对应的所有数据块拷贝到快照卷中进行管理。
[0008]但是上述现有方法是将目录快照做为ー个単独的对象来进行管理,与文件系统快照之间没有必然联系和有效融合,这样目录快照和文件系统快照就必须用两种不同的管理方法,増加了管理的复杂度;且现有方法都只能满足目录快照创建和删除的基本需求,在目录快照回滚时由于文件系统下文件及目录之间相互的影响,实现困难且代价大;同时,因为在进行目录快照的删除时需要遍历数据,算法复杂,效率低。
【发明内容】
[0009]本发明的实施例提供一种目录快照的方法和装置,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现以及目录快照删除复杂度高、效率低的问题。
[0010]为达到上述目的,本发明的实施例采用如下技术方案:
[0011]第一方面,提供一种快照管理方法,所述方法包括:
[0012]获取快照管理命令,所述快照管理命令包括创建命令、删除命令和回滚命令;
[0013]根据所述快照管理命令在快照管理链表上执行与所述快照管理命令对应的快照管理操作,所述快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与所述快照对应的块修改日志链表,所述快照的类型包括文件系统快照或目录快照。
[0014]结合第一方面,在第一种可能的实现方式中,当所述快照管理命令为所述创建命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括:
[0015]在所述快照管理链表上添加快照项,所述快照项包括目录快照和与所述目录快照对应的块修改日志链表;
[0016]在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对;
[0017]所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数。
[0018]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对包括:
[0019]若所述键值对不存在,则在所述目录快照映射表中添加所述键值对;
[0020]若所述键值对已存在,则将所述键值对中的快照数加I。
[0021]结合第一方面,在第三种可能的实现方式中,当所述快照管理命令为所述删除命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括:
[0022]获取所述删除命令指定的目录快照的块修改日志链表;
[0023]遍历所述块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将所述满足数据释放条件的键值对删除。
[0024]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,当所述快照管理命令为所述删除命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作还包括:
[0025]若所述块修改日志链表中的所有键值对都已被删除,则判断所述删除命令指定的目录快照是否为所述目录快照所属目录的最后一个快照;
[0026]若所述删除命令指定的目录快照为所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对删除,所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数;
[0027]若所述删除命令指定的目录快照不是所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对中的快照数减I。
[0028]结合第一方面,在第五种可能的实现方式中,所述快照管理命令为所述回滚命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括:
[0029]获取所述回滚命令指定的第一索引节点,所述第一索引节点为所述回滚命令指定的目录快照的索引节点;
[0030]遍历所述第一索引节点的条目项,并对每个条目项进行回填处理;所述对每个条目项进行回填处理包括:
[0031]判断条目项对应的索引节点号是否已被当前系统使用;
[0032]若所述条目项对应的索引节点号已被当前系统使用,则为所述条目项重新分配索引节点号,并根据重新分配的索引节点号重构所述条目项,而后将重构后的条目项回填至所述目录快照所属目录的索引节点;
[0033]若所述条目项对应的索引节点号未被当前系统使用,则直接将所述条目项回填到所述目录快照所属目录的索引节点中,并判断所述条目项的类型;
[0034]若所述条目项为目录类型条目项,则对所述目录类型条目项的索引节点递归执行与所述第一索引节点相同的上述回滚操作;[0035]若所述条目项不为目录类型条目项,则判断所述条目项是否为所述第一索引节点中的最后ー个条目项,若所述条目项不是所述第一索引节点中的最后ー个条目项,则对所述条目项的下ー个条目项进行所述回填处理;
[0036]若所述条目项是所述第一索引节点中的最后ー个条目项,则对所述目录快照所属目录在所述目录快照映射表中的键值对进行修改。
[0037]结合第一方面,在第六种可能的实现方式中,所述块修改日志链表包括写时重定向(Redirect On Write,ROW)型日志链表、删除型日志链表和截断型日志链表;
[0038]所述ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
[0039]所述删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
[0040]所述截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
[0041]结合第一方面,在第七种可能的实现方式中,所述文件系统快照还包括:内部快照,所述内部快照为根据预设策略生成的所述文件系统快照;所述预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
[0042]第二方面,提供一种快照管理装置,所述装置包括:
[0043]命令获取单元,用于获取快照管理命令,所述快照管理命令包括创建命令、删除命令和回滚命令;
[0044]快照管理単元,用于根据所述快照管理命令在快照管理链表上执行与所述快照管理命令对应的快照管理操作,所述快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与所述快照对应的块修改日志链表,所述快照的类型包括文件系统快照或目录快照。
[0045]结合第二方面,在第一种可能的实现方式中,所述快照管理単元包括创建单元,所述创建単元具体用于:
[0046]在所述快照管理链表上添加快照项,所述快照项包括目录快照和与所述目录快照对应的块修改日志链表;
[0047]在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对;
[0048]所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数。
[0049]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述创建単元在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对时具体用于:
[0050]若所述键值对不存在,则在所述目录快照映射表中添加所述键值对;
[0051]若所述键值对已存在,则将所述键值对中的快照数加I。
[0052]结合第二方面,在第三种可能的实现方式中,所述快照管理单元还包括删除单元,所述删除単元具体用于:
[0053]获取所述删除命令指定的目录快照的块修改日志链表;
[0054]遍历所述块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将所述满足数据释放条件的键值对删除。
[0055]结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述删除単元还用于:
[0056]若所述块修改日志链表中的所有键值对都已被删除,则判断所述删除命令指定的目录快照是否为所述目录快照所属目录的最后一个快照;
[0057]若所述删除命令指定的目录快照为所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对删除,所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数;
[0058]若所述删除命令指定的目录快照不是所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对中的快照数减I。
[0059]结合第二方面,在第五种可能的实现方式中,所述快照管理单元还包括回滚单元,所述回滚単元具体用于:
[0060]获取所述回滚命令指定的第一索引节点,所述第一索引节点为所述回滚命令指定的目录快照的索引节点;
[0061]遍历所述第一索引节点的条目项,并对每个条目项进行回填处理;所述对每个条目项进行回填处理包括:
[0062]判断条目项对应的索引节点号是否已被当前系统使用;
[0063]若所述条目项对应的索引节点号已被当前系统使用,则为所述条目项重新分配索引节点号,并根据重新分配的索引节点号重构所述条目项,而后将重构后的条目项回填至所述目录快照所属目录的索引节点;
[0064]若所述条目项对应的索引节点号未被当前系统使用,则直接将所述条目项回填到所述目录快照所属目录的索引节点中,并判断所述条目项的类型;
[0065]若所述条目项为目录类型条目项,则对所述目录类型条目项的索引节点递归执行与所述第一索引节点相同的上述回滚操作;
[0066]若所述条目项不为目录类型条目项,则判断所述条目项是否为所述第一索引节点中的最后ー个条目项,若所述条目项不是所述第一索引节点中的最后ー个条目项,则对所述条目项的下ー个条目项进行所述回填处理;
[0067]若所述条目项是所述第一索引节点中的最后ー个条目项,则对所述目录快照所属目录在所述目录快照映射表中的键值对进行修改。
[0068]结合第二方面,在第六种可能的实现方式中,所述块修改日志链表包括写时重定向ROW型日志链表、删除型日志链表和截断型日志链表;
[0069]所述ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
[0070]所述删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
[0071]所述截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
[0072]结合第二方面,在第七种可能的实现方式中,所述文件系统快照还包括:内部快照,所述内部快照为根据预设策略生成的所述文件系统快照;所述预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
[0073]本发明的实施例提供一种快照管理方法和装置,获取创建、删除或回滚等快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现的问题,降低了目录快照删除的复杂度、提高了目录快照删除效率。
【专利附图】
【附图说明】
[0074]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0075]图1为本发明实施例提供的一种快照管理方法的流程示意图;
[0076]图2为本发明实施例提供的另ー种快照管理方法的流程示意图;
[0077]图3为本发明实施例提供的一种快照管理方法中目录快照创建操作的流程示意图;
[0078]图3A为本发明实施例提供的一种快照管理方法中快照管理链表的结构示意图;
[0079]图4为本发明实施例提供的一种快照管理方法中目录快照删除操作的流程示意图;
[0080]图5为本发明实施例提供的一种快照管理方法中目录快照回滚操作的流程示意图;
[0081]图6为本发明实施例提供的一种快照管理装置的结构示意图ー;
[0082]图7为本发明实施例提供的一种快照管理装置的结构示意图ニ ;
[0083]图8为本发明实施例提供的一种快照管理装置的结构示意图三
[0084]图9为本发明实施例提供的一种快照管理装置的结构示意图四。
【具体实施方式】
[0085]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0086]本发明的实施例提供了一种快照管理方法,如图1所示,该方法包括:
[0087]S101、获取快照管理命令,快照管理命令包括创建命令、删除命令和回滚命令。
[0088]S102、根据快照管理命令在快照管理链表上执行与快照管理命令对应的快照管理操作,快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与快照对应的块修改日志链表,快照的类型包括文件系统快照或目录快照。
[0089]本发明的实施例提供一种快照管理方法,获取创建、删除或回滚等快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现的问题,降低了目录快照删除的复杂度、提高了目录快照删除效率。
[0090]为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供的另ー种快照管理方法进行详细说明,如图2所示,该方法包括:
[0091]S201、获取快照管理命令。
[0092]具体的,快照管理命令可以为创建命令、删除命令或回滚命令。
[0093]S202、识别快照管理命令,执行与快照管理命令对应的操作。
[0094]具体的,若快照管理命令为创建命令执行S203 ;若快照管理命令为删除命令执行S204 ;若快照管理命令为回滚命令执行S205。
[0095]S203、执行目录快照创建操作。
[0096]具体可以为,如图3所示,执行目录快照创建操作吋,包括:
[0097]S2031、选定文件系统中创建命令的目标目录。
[0098]S2032、在快照管理链表添加ー个快照项,该快照项包括当前要创建的目录快照与目录快照对应的块修改日志链表。
[0099]例如,如图3A所示,为快照管理链表的结构示意图,在该快照管理链表中包括快照管理链表头和三个快照项I?3,其中,快照项1、2为文件系统快照的快照项,快照项3为刚刚创建的目录快照的快照项,每个快照项中的快照都对应了 ー个块修改日志链表。
[0100]S2033、判断快照创建命令的目标目录在目录快照映射表中,是否有对应的键值对存在。若对应的键值对不存在执行S2034 ;或,若对应的键值对存在执行S2035。
[0101]S2034、在目录快照映射表中添加ー个键值对,其中,目录号did取值为目标目录的目录索引号,目录名dname取值为目标目录的目录名,目录数dsn取值为I。
[0102]S2035、对快照创建命令的目标目录在目录快照映射表中对应键值对的目录数dsn加I。
[0103]S204、执行目录快照删除操作。
[0104]具体可以为,如图4所示,执行目录快照删除操作吋,包括:
[0105]S2041、在快照管理链表上判断快照删除命令的目标目录快照是否存在。若不存在执行S2042 ;或,若存在执行S2043。
[0106]S2042、提示目标目录快照不存在,并结束本次删除操作。
[0107]S2043、获取快照删除命令的目标目录快照对应的块修改日志链表,并对该块修改日志链表中的所有键值对进行遍历。
[0108]S2044、对当前键值对所对应的数据块能否被释放进行判断。若数据块的事务号大于最后一个快照的事务号,则执行S2045 ;或,若数据块的事务号不大于最后一个快照的事务号,则执行S2046。其中,数据块的事务号可以从块修改日志链表的键值对中获得,最后ー个快照的事务号可以从系统中获得。
[0109]S2045、将键值对所对应的数据块释放,并将该键值对删除;完成后执行S2046。
[0110]S2046、对当前处理的键值对进行判断。若当前处理的键值对不是该块修改日志链表中最后ー个键值对,则执行S2047 ;或,若当前处理的键值对是该块修改日志链表中最后ー个键值对,则执行S2048 ;[0111]S2047、在该块修改日志链表中取当前键值对的下ー个键值对,并对新取得的键值对执行S2044至S2046的操作。
[0112]S2048、判断快照删除命令的目标目录快照是否为该目标目录快照所属目录的最后ー个目录快照。若该目标目录快照是该目标目录快照对应目录的最后ー个目录快照,则执行S2049 ;或,若该目标目录快照不是该目标目录快照对应目录的最后ー个目录快照,则执行S2040。
[0113]S2049、在目录快照映射表中删除目标目录快照所属目录对应的键值对,并结束整个目录快照删除操作。
[0114]S2040、在目录快照映射表中将目标目录快照所属目录对应的键值对中的快照数减I,并结束整个目录快照删除操作。
[0115]S205、执行目录快照回滚操作。
[0116]具体为,如图5所示,执行目录快照回滚操作时,包括:
[0117]S2051、判断在快照管理链表上快照回滚命令的目标目录快照是否存在。若不存在,执行S2052 ;或,若存在,执行S2053。
[0118]S2052、提示目标目录快照不存在,并结束本次回滚操作;
[0119]S2053、获取快照回滚命令的目标目录快照索引节点,并对该目标目录快照索引节点中的所有entry (条目)项进行遍历。
[0120]S2054、对当前entry项对应的索引节点号是否已被当前系统使用进行判断。若当前entry项对应的索引节点号已被当前系统使用,则执行S2055 ;或,若当前entry项对应的索引节点号未被当前系统使用,则执行S2056。
[0121]S2055、为当前entry项重新分配索引节点号,并根据重新分配的索引节点号重构entry项,将重构后的entry作为当前entry项;完成后执行S2056。
[0122]S2056、将当前entry项回填到目录快照所属目录的索引节点中,并对当前entry项的类型进行判断,若当前entry项是目录类型entry项,则执行S2057 ;或,若当前entry项不是目录类型entry项,则执行S2058。
[0123]S2057、采用子目录递归的方法,取得当前目录类型entry项目录索引节点,遍历当前目录类型entry项目录索引节点中的子entry项,对子entry项执行S2054至S2056的操作。
[0124]S2058、进ー步判断当前entry项是否为当前entry项对应索引节点中的最后ー个entry项:若当前entry项不是当前entry项对应索引节点中的最后ー个entry项,则执行S2059 ;或,若当前entry项是当前entry项对应索引节点中的最后ー个entry项,且对应索引节点为上ー级目录类型entry项目录索引节点,则将上ー级目录类型entry项作为当前entry项并执行S2059 ;或,若当前entry项是当前entry项对应索引节点中的最后ー个entry项,且对应索引节点为快照回滚命令的目标目录快照索引节点,则执行S2050。
[0125]S2059、取得当前entry项对应索引节点中的下ー个entry项,并对新取得的entry项执行S2054至S2056的操作。
[0126]S2050、在快照管理链表中,遍历该回滚命令目标目录快照所属目录下的所有目录快照,统计创建于目标目录快照之前的目录快照数量值,并在目录快照映射表上,修改该目标目录快照所属目录对应键值对中的快照数为上述统计数量值,同时结束整个目录快照回滚操作。
[0127]优选的,可以将块修改日志根据产生来源的不同,分为三类井分类存储,具体可以为:
[0128]将由写时重定向ROW重定位产生的键值对(即块修改日志信息)记录在ROW型日志链表中;该日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
[0129]将由删除文件产生的键值对记录在删除型日志链表中;该日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
[0130]将由截断文件产生的键值对记录在截断型日志链表中;该日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
[0131]进而,在执行删除文件或截断文件操作时,只在相应的日志链表中相应地产生一个修改日志记录,这样在删除文件或截断文件就不必记录该文件的所有数据块的修改记录,大大的減少了日志的量,节省了磁盘空间和内存。
[0132]可选的,还可以根据预设策略在一定条件满足的情况下生成内部快照,并将内部快照及对应的块修改日志链表作为快照项添加在快照管理链表上。其中,预设策略包括在执行预设门限次数的事务后之后自动生成内部快照,或在预设时间点自动生成内部快照,且预设门限次数与预设时间点可根据需要由用户进行设置也可使用系统的缺省设置。
[0133]另外,内部快照的删除可以通过预设策略如限定时间或限定内部快照总数等方式实现,在达到限定条件时自动对创建时间最早的内部快照进行删除。值得ー提的,内部快照的类型为文件系统快照,且对用户不可见,不能作为快照回滚命令的目标快照,引入内部快照并通过与其它的文件系统快照、目录快照的配合,可以将两次快照之间因数据修改而产生的块修改日志记录分散到以上的多个快照之中,减少每个快照中的块修改日志的量,进一歩调整设置内部快照自动生成与删除的频率,降低了快照删除的复杂度,大大缩短了快照删除时所需的时间。
[0134]本发明的实施例提供一种快照管理方法,获取包括创建、删除和回滚在内的快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够减小快照管理的复杂度,提高执行各种快照管理命令及操作时的工作效率。
[0135]本发明实施例还提供一种快照管理装置00,如图6,该快照管理装置00包括:
[0136]命令获取单元001,用于获取快照管理命令,快照管理命令可以包括创建命令、删除命令和回滚命令。
[0137]快照管理単元002,用于根据快照管理命令在快照管理链表上执行与快照管理命令对应的快照管理操作,快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与其对应的块修改日志链表,快照的类型可以包括文件系统快照或目录快照。
[0138]可选的,如图7所示,快照管理単元002可以包括:
[0139]创建单元003,具体用于:
[0140]在快照管理链表上添加快照项,快照项可以包括目录快照和与该目录快照对应的块修改日志链表;
[0141]在目录快照映射表中添加该目录快照所属目录对应的键值对或修改这个键值对;
[0142]该键值对包括目录快照所属目录的目录号、目录名以及快照数。
[0143]可选的,创建单元003在目录快照映射表中添加该目录快照所属目录对应的键值对或修改键值对时具体用于:
[0144]若键值对不存在,则在目录快照映射表中添加所述键值对;
[0145]若键值对已存在,则将键值对中的快照数加I。
[0146]可选的,如图7所示,快照管理単元002还可以包括:
[0147]删除单元004,具体用于:
[0148]获取删除命令指定的目录快照的块修改日志链表;
[0149]遍历该块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将满足数据释放条件的键值对删除。
[0150]可选的,删除单元004还用于:
[0151]若块修改日志链表中的所有键值对都已被删除,则判断删除命令指定的目录快照是否为目录快照所属目录的最后一个快照;
[0152]若删除命令指定的目录快照为该目录快照所属目录的最后ー个快照,则将该目录快照所属目录在目录快照映射表中对应的键值对删除,该键值对包括目录快照所属目录的目录号、目录名以及快照数;
[0153]若删除命令指定的目录快照不是该目录快照所属目录的最后ー个快照,则将该目录快照所属目录在目录快照映射表中对应的键值对中的快照数减I。
[0154]可选的,如图7所示,快照管理単元002还可以包括:
[0155]回滚单元005,具体用于:
[0156]获取回滚命令指定的第一索引节点,第一索引节点为回滚命令指定的目录快照的索引节点;
[0157]遍历第一索引节点的条目项,并对每个条目项进行回填处理;对每个条目项进行回填处理包括:
[0158]判断条目项对应的索引节点号是否已被当前系统使用;
[0159]若条目项对应的索引节点号已被当前系统使用,则为条目项重新分配索引节点号,并根据重新分配的索引节点号重构条目项,而后将重构后的条目项回填至目录快照所属目录的索引节点;
[0160]若条目项对应的索引节点号未被当前系统使用,则直接将条目项回填到目录快照所属目录的索引节点中,并判断条目项的类型;
[0161]若条目项为目录类型条目项,则对目录类型条目项的索引节点递归执行与第一索引节点相同的上述回滚操作;
[0162]若条目项不为目录类型条目项,则判断条目项是否为第一索引节点中的最后ー个条目项,若条目项不是第一索引节点中的最后ー个条目项,则对条目项的下ー个条目项进行回填处理;
[0163]若条目项是第一索引节点中的最后ー个条目项,则对目录快照所属目录在目录快照映射表中的键值对进行修改。
[0164]可选的,上述块修改日志链表还可以包括,如图8所示:R0W型日志链表007、删除型日志链表008和截断型日志链表009 ;其中:
[0165]ROW型日志链表007中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
[0166]删除型日志链表008中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
[0167]截断型日志链表009中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
[0168]可选的,该快照管理装置00中快照的类型还可以包括内部快照,内部快照为根据预设策略生成的文件系统快照;预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
[0169]本发明的实施例提供一种快照管理装置,获取包括创建、删除和回滚在内的快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够减小快照管理的复杂度,提高执行各种快照管理命令及操作时的工作效率。
[0170]本发明实施例还提供一种快照管理装置01,如图9,该快照管理装置01包括:
[0171]总线011、以及连接到总线011的处理器012、存储器013和接ロ 014,其中接ロ 014用干与外部设备进行通信;
[0172]该存储器013用于存储指令,该处理器012用于执行该指令用于获取快照管理命令,快照管理命令包括创建命令、删除命令和回滚命令;
[0173]该处理器012执行该指令还用于根据快照管理命令在快照管理链表上执行与快照管理命令对应的快照管理操作,快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与快照对应的块修改日志链表,快照的类型包括文件系统快照或目录快照。
[0174]在本发明实施例中,可选的,该处理器012执行该指令可以具体用于:当快照管理命令为创建命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作包括:
[0175]在快照管理链表上添加快照项,快照项包括目录快照和与目录快照对应的块修改日志链表;
[0176]在目录快照映射表中添加目录快照所属目录对应的键值对或修改键值对;
[0177]键值对包括目录快照所属目录的目录号、目录名以及快照数。
[0178]在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:在目录快照映射表中添加目录快照所属目录对应的键值对或修改键值对时:
[0179]若键值对不存在,则在目录快照映射表中添加键值对;
[0180]若键值对已存在,则将键值对中的快照数加I。
[0181]在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:
[0182]当快照管理命令为删除命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作包括:
[0183]获取删除命令指定的目录快照的块修改日志链表;
[0184]遍历块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将满足数据释放条件的键值对删除。
[0185]在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:[0186]当快照管理命令为删除命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作还包括:
[0187]若块修改日志链表中的所有键值对都已被删除,则判断删除命令指定的目录快照是否为目录快照所属目录的最后一个快照;
[0188]若删除命令指定的目录快照为目录快照所属目录的最后ー个快照,则将目录快照所属目录在目录快照映射表中对应的键值对删除,键值对包括目录快照所属目录的目录号、目录名以及快照数;
[0189]若删除命令指定的目录快照不是目录快照所属目录的最后ー个快照,则将目录快照所属目录在目录快照映射表中对应的键值对中的快照数减I。
[0190]在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:
[0191]当快照管理命令为回滚命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作包括:
[0192]获取回滚命令指定的第一索引节点,第一索引节点为回滚命令指定的目录快照的索引节点;
[0193]遍历第一索引节点的条目项,并对每个条目项进行回填处理;对每个条目项进行回填处理包括:
[0194]判断条目项对应的索引节点号是否已被当前系统使用;
[0195]若条目项对应的索引节点号已被当前系统使用,则为条目项重新分配索引节点号,并根据重新分配的索引节点号重构条目项,而后将重构后的条目项回填至目录快照所属目录的索引节点;
[0196]若条目项对应的索引节点号未被当前系统使用,则直接将条目项回填到目录快照所属目录的索引节点中,并判断条目项的类型;
[0197]若条目项为目录类型条目项,则对目录类型条目项的索引节点递归执行与第一索引节点相同的上述回滚操作;
[0198]若条目项不为目录类型条目项,则判断条目项是否为第一索引节点中的最后ー个条目项,若条目项不是第一索引节点中的最后ー个条目项,则对条目项的下ー个条目项进行回填处理;
[0199]若条目项是第一索引节点中的最后ー个条目项,则对目录快照所属目录在目录快照映射表中的键值对进行修改。
[0200]在本发明实施例中,可选的,块修改日志链表包括写时重定向ROW型日志链表、删除型日志链表和截断型日志链表;
[0201]ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
[0202]删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
[0203]截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
[0204]在本发明实施例中,可选的,快照的类型还包括:内部快照,内部快照为根据预设策略生成的文件系统快照;预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
[0205]本发明的实施例提供一种快照管理装置,获取包括创建、删除和回滚在内的快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够减小快照管理的复杂度,提高执行各种快照管理命令及操作时的工作效率。
[0206]在本申请所提供的几个实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为ー种逻辑功能划分,实际实现时可以有另外的划分方式。另一点,所显示或讨论的模块相互之间的连接可以是通过ー些接ロ,可以是电性,机械或其它的形式。
[0207]所述各个模块可以是或者也可以不是物理上分开的,可以是或者也可以不是物理単元。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0208]另外,在本发明各个实施例中的各功能模块可以集成在ー个处理模块中,也可以是各个模块单独物理包括,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0209]上述以软件功能単元的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在ー个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0210]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种快照管理方法,其特征在于,所述方法包括: 获取快照管理命令,所述快照管理命令包括创建命令、删除命令和回滚命令; 根据所述快照管理命令在快照管理链表上执行与所述快照管理命令对应的快照管理操作,所述快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与所述快照对应的块修改日志链表,所述快照的类型包括文件系统快照或目录快照。
2.根据权利要求1所述的方法,其特征在干,当所述快照管理命令为所述创建命令吋,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括: 在所述快照管理链表上添加快照项,所述快照项包括目录快照和与所述目录快照对应的块修改日志链表; 在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对; 所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数。
3.根据权利要求2所述的方法,其特征在于,所述在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对包括: 若所述键值对不存在,则在所述目录快照映射表中添加所述键值对; 若所述键值对已存在,则将所述键值对中的快照数加I。
4.根据权利要求1所述的方法,其特征在干,当所述快照管理命令为所述删除命令吋,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括: 获取所述删除命令指定的目录快照的块修改日志链表; 遍历所述块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将所述满足数据释放条件的键值对删除。
5.根据权利要求4所述的方法,其特征在干,当所述快照管理命令为所述删除命令吋,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作还包括: 若所述块修改日志链表中的所有键值对都已被删除,则判断所述删除命令指定的目录快照是否为所述目录快照所属目录的最后一个快照; 若所述删除命令指定的目录快照为所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对删除,所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数; 若所述删除命令指定的目录快照不是所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对中的快照数减I。
6.根据权利要求1所述的方法,其特征在干,当所述快照管理命令为所述回滚命令吋,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括: 获取所述回滚命令指定的第一索引节点,所述第一索引节点为所述回滚命令指定的目录快照的索引节点; 遍历所述第一索引节点的条目项,并对每个条目项进行回填处理;所述对每个条目项进行回填处理包括: 判断条目项对应的索引节点号是否已被当前系统使用; 若所述条目项对应的索引节点号已被当前系统使用,则为所述条目项重新分配索引节点号,并根据重新分配的索引节点号重构所述条目项,而后将重构后的条目项回填至所述目录快照所属目录的索引节点;若所述条目项对应的索引节点号未被当前系统使用,则直接将所述条目项回填到所述目录快照所属目录的索引节点中,并判断所述条目项的类型; 若所述条目项为目录类型条目项,则对所述目录类型条目项的索引节点递归执行与所述第一索引节点相同的上述回滚操作; 若所述条目项不为目录类型条目项,则判断所述条目项是否为所述第一索引节点中的最后ー个条目项,若所述条目项不是所述第一索引节点中的最后ー个条目项,则对所述条目项的下ー个条目项进行所述回填处理; 若所述条目项是所述第一索引节点中的最后ー个条目项,则对所述目录快照所属目录在所述目录快照映射表中的键值对进行修改。
7.根据权利要求1所述的方法,其特征在于,所述块修改日志链表包括写时重定向ROW型日志链表、删除型日志链表和截断型日志链表; 所述ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号; 所述删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号; 所述截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
8.根据权利要求1所述的方法,其特征在于,所述文件系统快照还包括:内部快照,所述内部快照为根据预设策略生成的所述文件系统快照;所述预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
9.一种快照管理装置,其特征在于,所述装置包括: 命令获取单元,用于获取快照管理命令,所述快照管理命令包括创建命令、删除命令和回滚命令; 快照管理単元,用于根据所述快照管理命令在快照管理链表上执行与所述快照管理命令对应的快照管理操作,所述快照管理链表上包括至少ー个快照项,每个快照项包括一个快照和与所述快照对应的块修改日志链表,所述快照的类型包括文件系统快照或目录快照。
10.根据权利要求9所述的装置,其特征在干,所述快照管理単元包括创建单元,所述创建单元具体用于: 在所述快照管理链表上添加快照项,所述快照项包括目录快照和与所述目录快照对应的块修改日志链表; 在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对; 所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数。
11.根据权利要求10所述的装置,其特征在干,所述创建単元在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对时具体用于: 若所述键值对不存在,则在所述目录快照映射表中添加所述键值对; 若所述键值对已存在,则将所述键值对中的快照数加I。
12.根据权利要求9所述的装置,其特征在干,所述快照管理单元还包括删除单元,所述删除単元具体用于:获取所述删除命令指定的目录快照的块修改日志链表; 遍历所述块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将所述满足数据释放条件的键值对删除。
13.根据权利要求12所述的装置,其特征在于,所述删除単元还用于: 若所述块修改日志链表中的所有键值对都已被删除,则判断所述删除命令指定的目录快照是否为所述目录快照所属目录的最后一个快照; 若所述删除命令指定的目录快照为所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对删除,所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数; 若所述删除命令指定的目录快照不是所述目录快照所属目录的最后ー个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对中的快照数减I。
14.根据权利要求9所述的装置,其特征在干,所述快照管理单元还包括回滚单元,所述回滚単元具体用于: 获取所述回滚命令指定的第一索引节点,所述第一索引节点为所述回滚命令指定的目录快照的索引节点; 遍历所述第一索引节点的条目项,并对每个条目项进行回填处理;所述对每个条目项进行回填处理包括: 判断条目项对应的索引节点号是否已被当前系统使用; 若所述条目项对应的索引节点号已被当前系统使用,则为所述条目项重新分配索引节点号,并根据重新分配的索引节点号重构所述条目项,而后将重构后的条目项回填至所述目录快照所属目录的索引节点;` 若所述条目项对应的索引节点号未被当前系统使用,则直接将所述条目项回填到所述目录快照所属目录的索引节点中,并判断所述条目项的类型; 若所述条目项为目录类型条目项,则对所述目录类型条目项的索引节点递归执行与所述第一索引节点相同的上述回滚操作; 若所述条目项不为目录类型条目项,则判断所述条目项是否为所述第一索引节点中的最后ー个条目项,若所述条目项不是所述第一索引节点中的最后ー个条目项,则对所述条目项的下ー个条目项进行所述回填处理; 若所述条目项是所述第一索引节点中的最后ー个条目项,则对所述目录快照所属目录在所述目录快照映射表中的键值对进行修改。
15.根据权利要求9所述的装置,其特征在干,所述块修改日志链表包括写时重定向ROff型日志链表、删除型日志链表和截断型日志链表; 所述ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号; 所述删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号; 所述截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
16.根据权利要求9所述的装置,其特征在于,所述文件系统快照还包括:内部快照,所述内部快照为根据预设策略生成的所述文件系统快照;所述预设策略包括执行预设门限次数的事务后生成,或 在预设时间点生成。
【文档编号】G06F12/16GK103577329SQ201310495127
【公开日】2014年2月12日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】张森 申请人:华为技术有限公司