发明内容
本发明的实施例提供一种目录快照的方法和装置,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现以及目录快照删除复杂度高、效率低的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种快照管理方法,所述方法包括:
获取快照管理命令,所述快照管理命令包括创建命令、删除命令和回滚命令;
根据所述快照管理命令在快照管理链表上执行与所述快照管理命令对应的快照管理操作,所述快照管理链表上包括至少一个快照项,每个快照项包括一个快照和与所述快照对应的块修改日志链表,所述快照的类型包括文件系统快照或目录快照。
结合第一方面,在第一种可能的实现方式中,当所述快照管理命令为所述创建命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括:
在所述快照管理链表上添加快照项,所述快照项包括目录快照和与所述目录快照对应的块修改日志链表;
在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对;
所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对包括:
若所述键值对不存在,则在所述目录快照映射表中添加所述键值对;
若所述键值对已存在,则将所述键值对中的快照数加1。
结合第一方面,在第三种可能的实现方式中,当所述快照管理命令为所述删除命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括:
获取所述删除命令指定的目录快照的块修改日志链表;
遍历所述块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将所述满足数据释放条件的键值对删除。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,当所述快照管理命令为所述删除命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作还包括:
若所述块修改日志链表中的所有键值对都已被删除,则判断所述删除命令指定的目录快照是否为所述目录快照所属目录的最后一个快照;
若所述删除命令指定的目录快照为所述目录快照所属目录的最后一个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对删除,所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数;
若所述删除命令指定的目录快照不是所述目录快照所属目录的最后一个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对中的快照数减1。
结合第一方面,在第五种可能的实现方式中,所述快照管理命令为所述回滚命令时,所述在快照管理链表上执行与所述快照管理命令对应的快照管理操作包括:
获取所述回滚命令指定的第一索引节点,所述第一索引节点为所述回滚命令指定的目录快照的索引节点;
遍历所述第一索引节点的条目项,并对每个条目项进行回填处理;所述对每个条目项进行回填处理包括:
判断条目项对应的索引节点号是否已被当前系统使用;
若所述条目项对应的索引节点号已被当前系统使用,则为所述条目项重新分配索引节点号,并根据重新分配的索引节点号重构所述条目项,而后将重构后的条目项回填至所述目录快照所属目录的索引节点;
若所述条目项对应的索引节点号未被当前系统使用,则直接将所述条目项回填到所述目录快照所属目录的索引节点中,并判断所述条目项的类型;
若所述条目项为目录类型条目项,则对所述目录类型条目项的索引节点递归执行与所述第一索引节点相同的上述回滚操作;
若所述条目项不为目录类型条目项,则判断所述条目项是否为所述第一索引节点中的最后一个条目项,若所述条目项不是所述第一索引节点中的最后一个条目项,则对所述条目项的下一个条目项进行所述回填处理;
若所述条目项是所述第一索引节点中的最后一个条目项,则对所述目录快照所属目录在所述目录快照映射表中的键值对进行修改。
结合第一方面,在第六种可能的实现方式中,所述块修改日志链表包括写时重定向(Redirect On Write,ROW)型日志链表、删除型日志链表和截断型日志链表;
所述ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
所述删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
所述截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
结合第一方面,在第七种可能的实现方式中,所述文件系统快照还包括:内部快照,所述内部快照为根据预设策略生成的所述文件系统快照;所述预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
第二方面,提供一种快照管理装置,所述装置包括:
命令获取单元,用于获取快照管理命令,所述快照管理命令包括创建命令、删除命令和回滚命令;
快照管理单元,用于根据所述快照管理命令在快照管理链表上执行与所述快照管理命令对应的快照管理操作,所述快照管理链表上包括至少一个快照项,每个快照项包括一个快照和与所述快照对应的块修改日志链表,所述快照的类型包括文件系统快照或目录快照。
结合第二方面,在第一种可能的实现方式中,所述快照管理单元包括创建单元,所述创建单元具体用于:
在所述快照管理链表上添加快照项,所述快照项包括目录快照和与所述目录快照对应的块修改日志链表;
在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对;
所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述创建单元在目录快照映射表中添加所述目录快照所属目录对应的键值对或修改所述键值对时具体用于:
若所述键值对不存在,则在所述目录快照映射表中添加所述键值对;
若所述键值对已存在,则将所述键值对中的快照数加1。
结合第二方面,在第三种可能的实现方式中,所述快照管理单元还包括删除单元,所述删除单元具体用于:
获取所述删除命令指定的目录快照的块修改日志链表;
遍历所述块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将所述满足数据释放条件的键值对删除。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述删除单元还用于:
若所述块修改日志链表中的所有键值对都已被删除,则判断所述删除命令指定的目录快照是否为所述目录快照所属目录的最后一个快照;
若所述删除命令指定的目录快照为所述目录快照所属目录的最后一个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对删除,所述键值对包括所述目录快照所属目录的目录号、目录名以及快照数;
若所述删除命令指定的目录快照不是所述目录快照所属目录的最后一个快照,则将所述目录快照所属目录在目录快照映射表中对应的键值对中的快照数减1。
结合第二方面,在第五种可能的实现方式中,所述快照管理单元还包括回滚单元,所述回滚单元具体用于:
获取所述回滚命令指定的第一索引节点,所述第一索引节点为所述回滚命令指定的目录快照的索引节点;
遍历所述第一索引节点的条目项,并对每个条目项进行回填处理;所述对每个条目项进行回填处理包括:
判断条目项对应的索引节点号是否已被当前系统使用;
若所述条目项对应的索引节点号已被当前系统使用,则为所述条目项重新分配索引节点号,并根据重新分配的索引节点号重构所述条目项,而后将重构后的条目项回填至所述目录快照所属目录的索引节点;
若所述条目项对应的索引节点号未被当前系统使用,则直接将所述条目项回填到所述目录快照所属目录的索引节点中,并判断所述条目项的类型;
若所述条目项为目录类型条目项,则对所述目录类型条目项的索引节点递归执行与所述第一索引节点相同的上述回滚操作;
若所述条目项不为目录类型条目项,则判断所述条目项是否为所述第一索引节点中的最后一个条目项,若所述条目项不是所述第一索引节点中的最后一个条目项,则对所述条目项的下一个条目项进行所述回填处理;
若所述条目项是所述第一索引节点中的最后一个条目项,则对所述目录快照所属目录在所述目录快照映射表中的键值对进行修改。
结合第二方面,在第六种可能的实现方式中,所述块修改日志链表包括写时重定向ROW型日志链表、删除型日志链表和截断型日志链表;
所述ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
所述删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
所述截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
结合第二方面,在第七种可能的实现方式中,所述文件系统快照还包括:内部快照,所述内部快照为根据预设策略生成的所述文件系统快照;所述预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
本发明的实施例提供一种快照管理方法和装置,获取创建、删除或回滚等快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现的问题,降低了目录快照删除的复杂度、提高了目录快照删除效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供了一种快照管理方法,如图1所示,该方法包括:
S101、获取快照管理命令,快照管理命令包括创建命令、删除命令和回滚命令。
S102、根据快照管理命令在快照管理链表上执行与快照管理命令对应的快照管理操作,快照管理链表上包括至少一个快照项,每个快照项包括一个快照和与快照对应的块修改日志链表,快照的类型包括文件系统快照或目录快照。
本发明的实施例提供一种快照管理方法,获取创建、删除或回滚等快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够对目录快照和文件系统快照进行统一管理,并解决了目录快照回滚难以实现的问题,降低了目录快照删除的复杂度、提高了目录快照删除效率。
为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供的另一种快照管理方法进行详细说明,如图2所示,该方法包括:
S201、获取快照管理命令。
具体的,快照管理命令可以为创建命令、删除命令或回滚命令。
S202、识别快照管理命令,执行与快照管理命令对应的操作。
具体的,若快照管理命令为创建命令执行S203;若快照管理命令为删除命令执行S204;若快照管理命令为回滚命令执行S205。
S203、执行目录快照创建操作。
具体可以为,如图3所示,执行目录快照创建操作时,包括:
S2031、选定文件系统中创建命令的目标目录。
S2032、在快照管理链表添加一个快照项,该快照项包括当前要创建的目录快照与目录快照对应的块修改日志链表。
例如,如图3A所示,为快照管理链表的结构示意图,在该快照管理链表中包括快照管理链表头和三个快照项1~3,其中,快照项1、2为文件系统快照的快照项,快照项3为刚刚创建的目录快照的快照项,每个快照项中的快照都对应了一个块修改日志链表。
S2033、判断快照创建命令的目标目录在目录快照映射表中,是否有对应的键值对存在。若对应的键值对不存在执行S2034;或,若对应的键值对存在执行S2035。
S2034、在目录快照映射表中添加一个键值对,其中,目录号did取值为目标目录的目录索引号,目录名dname取值为目标目录的目录名,目录数dsn取值为1。
S2035、对快照创建命令的目标目录在目录快照映射表中对应键值对的目录数dsn加1。
S204、执行目录快照删除操作。
具体可以为,如图4所示,执行目录快照删除操作时,包括:
S2041、在快照管理链表上判断快照删除命令的目标目录快照是否存在。若不存在执行S2042;或,若存在执行S2043。
S2042、提示目标目录快照不存在,并结束本次删除操作。
S2043、获取快照删除命令的目标目录快照对应的块修改日志链表,并对该块修改日志链表中的所有键值对进行遍历。
S2044、对当前键值对所对应的数据块能否被释放进行判断。若数据块的事务号大于最后一个快照的事务号,则执行S2045;或,若数据块的事务号不大于最后一个快照的事务号,则执行S2046。其中,数据块的事务号可以从块修改日志链表的键值对中获得,最后一个快照的事务号可以从系统中获得。
S2045、将键值对所对应的数据块释放,并将该键值对删除;完成后执行S2046。
S2046、对当前处理的键值对进行判断。若当前处理的键值对不是该块修改日志链表中最后一个键值对,则执行S2047;或,若当前处理的键值对是该块修改日志链表中最后一个键值对,则执行S2048;
S2047、在该块修改日志链表中取当前键值对的下一个键值对,并对新取得的键值对执行S2044至S2046的操作。
S2048、判断快照删除命令的目标目录快照是否为该目标目录快照所属目录的最后一个目录快照。若该目标目录快照是该目标目录快照对应目录的最后一个目录快照,则执行S2049;或,若该目标目录快照不是该目标目录快照对应目录的最后一个目录快照,则执行S2040。
S2049、在目录快照映射表中删除目标目录快照所属目录对应的键值对,并结束整个目录快照删除操作。
S2040、在目录快照映射表中将目标目录快照所属目录对应的键值对中的快照数减1,并结束整个目录快照删除操作。
S205、执行目录快照回滚操作。
具体为,如图5所示,执行目录快照回滚操作时,包括:
S2051、判断在快照管理链表上快照回滚命令的目标目录快照是否存在。若不存在,执行S2052;或,若存在,执行S2053。
S2052、提示目标目录快照不存在,并结束本次回滚操作;
S2053、获取快照回滚命令的目标目录快照索引节点,并对该目标目录快照索引节点中的所有entry(条目)项进行遍历。
S2054、对当前entry项对应的索引节点号是否已被当前系统使用进行判断。若当前entry项对应的索引节点号已被当前系统使用,则执行S2055;或,若当前entry项对应的索引节点号未被当前系统使用,则执行S2056。
S2055、为当前entry项重新分配索引节点号,并根据重新分配的索引节点号重构entry项,将重构后的entry作为当前entry项;完成后执行S2056。
S2056、将当前entry项回填到目录快照所属目录的索引节点中,并对当前entry项的类型进行判断,若当前entry项是目录类型entry项,则执行S2057;或,若当前entry项不是目录类型entry项,则执行S2058。
S2057、采用子目录递归的方法,取得当前目录类型entry项目录索引节点,遍历当前目录类型entry项目录索引节点中的子entry项,对子entry项执行S2054至S2056的操作。
S2058、进一步判断当前entry项是否为当前entry项对应索引节点中的最后一个entry项:若当前entry项不是当前entry项对应索引节点中的最后一个entry项,则执行S2059;或,若当前entry项是当前entry项对应索引节点中的最后一个entry项,且对应索引节点为上一级目录类型entry项目录索引节点,则将上一级目录类型entry项作为当前entry项并执行S2059;或,若当前entry项是当前entry项对应索引节点中的最后一个entry项,且对应索引节点为快照回滚命令的目标目录快照索引节点,则执行S2050。
S2059、取得当前entry项对应索引节点中的下一个entry项,并对新取得的entry项执行S2054至S2056的操作。
S2050、在快照管理链表中,遍历该回滚命令目标目录快照所属目录下的所有目录快照,统计创建于目标目录快照之前的目录快照数量值,并在目录快照映射表上,修改该目标目录快照所属目录对应键值对中的快照数为上述统计数量值,同时结束整个目录快照回滚操作。
优选的,可以将块修改日志根据产生来源的不同,分为三类并分类存储,具体可以为:
将由写时重定向ROW重定位产生的键值对(即块修改日志信息)记录在ROW型日志链表中;该日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
将由删除文件产生的键值对记录在删除型日志链表中;该日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
将由截断文件产生的键值对记录在截断型日志链表中;该日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
进而,在执行删除文件或截断文件操作时,只在相应的日志链表中相应地产生一个修改日志记录,这样在删除文件或截断文件就不必记录该文件的所有数据块的修改记录,大大的减少了日志的量,节省了磁盘空间和内存。
可选的,还可以根据预设策略在一定条件满足的情况下生成内部快照,并将内部快照及对应的块修改日志链表作为快照项添加在快照管理链表上。其中,预设策略包括在执行预设门限次数的事务后之后自动生成内部快照,或在预设时间点自动生成内部快照,且预设门限次数与预设时间点可根据需要由用户进行设置也可使用系统的缺省设置。
另外,内部快照的删除可以通过预设策略如限定时间或限定内部快照总数等方式实现,在达到限定条件时自动对创建时间最早的内部快照进行删除。值得一提的,内部快照的类型为文件系统快照,且对用户不可见,不能作为快照回滚命令的目标快照,引入内部快照并通过与其它的文件系统快照、目录快照的配合,可以将两次快照之间因数据修改而产生的块修改日志记录分散到以上的多个快照之中,减少每个快照中的块修改日志的量,进一步调整设置内部快照自动生成与删除的频率,降低了快照删除的复杂度,大大缩短了快照删除时所需的时间。
本发明的实施例提供一种快照管理方法,获取包括创建、删除和回滚在内的快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够减小快照管理的复杂度,提高执行各种快照管理命令及操作时的工作效率。
本发明实施例还提供一种快照管理装置00,如图6,该快照管理装置00包括:
命令获取单元001,用于获取快照管理命令,快照管理命令可以包括创建命令、删除命令和回滚命令。
快照管理单元002,用于根据快照管理命令在快照管理链表上执行与快照管理命令对应的快照管理操作,快照管理链表上包括至少一个快照项,每个快照项包括一个快照和与其对应的块修改日志链表,快照的类型可以包括文件系统快照或目录快照。
可选的,如图7所示,快照管理单元002可以包括:
创建单元003,具体用于:
在快照管理链表上添加快照项,快照项可以包括目录快照和与该目录快照对应的块修改日志链表;
在目录快照映射表中添加该目录快照所属目录对应的键值对或修改这个键值对;
该键值对包括目录快照所属目录的目录号、目录名以及快照数。
可选的,创建单元003在目录快照映射表中添加该目录快照所属目录对应的键值对或修改键值对时具体用于:
若键值对不存在,则在目录快照映射表中添加所述键值对;
若键值对已存在,则将键值对中的快照数加1。
可选的,如图7所示,快照管理单元002还可以包括:
删除单元004,具体用于:
获取删除命令指定的目录快照的块修改日志链表;
遍历该块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将满足数据释放条件的键值对删除。
可选的,删除单元004还用于:
若块修改日志链表中的所有键值对都已被删除,则判断删除命令指定的目录快照是否为目录快照所属目录的最后一个快照;
若删除命令指定的目录快照为该目录快照所属目录的最后一个快照,则将该目录快照所属目录在目录快照映射表中对应的键值对删除,该键值对包括目录快照所属目录的目录号、目录名以及快照数;
若删除命令指定的目录快照不是该目录快照所属目录的最后一个快照,则将该目录快照所属目录在目录快照映射表中对应的键值对中的快照数减1。
可选的,如图7所示,快照管理单元002还可以包括:
回滚单元005,具体用于:
获取回滚命令指定的第一索引节点,第一索引节点为回滚命令指定的目录快照的索引节点;
遍历第一索引节点的条目项,并对每个条目项进行回填处理;对每个条目项进行回填处理包括:
判断条目项对应的索引节点号是否已被当前系统使用;
若条目项对应的索引节点号已被当前系统使用,则为条目项重新分配索引节点号,并根据重新分配的索引节点号重构条目项,而后将重构后的条目项回填至目录快照所属目录的索引节点;
若条目项对应的索引节点号未被当前系统使用,则直接将条目项回填到目录快照所属目录的索引节点中,并判断条目项的类型;
若条目项为目录类型条目项,则对目录类型条目项的索引节点递归执行与第一索引节点相同的上述回滚操作;
若条目项不为目录类型条目项,则判断条目项是否为第一索引节点中的最后一个条目项,若条目项不是第一索引节点中的最后一个条目项,则对条目项的下一个条目项进行回填处理;
若条目项是第一索引节点中的最后一个条目项,则对目录快照所属目录在目录快照映射表中的键值对进行修改。
可选的,上述块修改日志链表还可以包括,如图8所示:ROW型日志链表007、删除型日志链表008和截断型日志链表009;其中:
ROW型日志链表007中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
删除型日志链表008中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
截断型日志链表009中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
可选的,该快照管理装置00中快照的类型还可以包括内部快照,内部快照为根据预设策略生成的文件系统快照;预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
本发明的实施例提供一种快照管理装置,获取包括创建、删除和回滚在内的快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够减小快照管理的复杂度,提高执行各种快照管理命令及操作时的工作效率。
本发明实施例还提供一种快照管理装置01,如图9,该快照管理装置01包括:
总线011、以及连接到总线011的处理器012、存储器013和接口014,其中接口014用于与外部设备进行通信;
该存储器013用于存储指令,该处理器012用于执行该指令用于获取快照管理命令,快照管理命令包括创建命令、删除命令和回滚命令;
该处理器012执行该指令还用于根据快照管理命令在快照管理链表上执行与快照管理命令对应的快照管理操作,快照管理链表上包括至少一个快照项,每个快照项包括一个快照和与快照对应的块修改日志链表,快照的类型包括文件系统快照或目录快照。
在本发明实施例中,可选的,该处理器012执行该指令可以具体用于:当快照管理命令为创建命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作包括:
在快照管理链表上添加快照项,快照项包括目录快照和与目录快照对应的块修改日志链表;
在目录快照映射表中添加目录快照所属目录对应的键值对或修改键值对;
键值对包括目录快照所属目录的目录号、目录名以及快照数。
在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:在目录快照映射表中添加目录快照所属目录对应的键值对或修改键值对时:
若键值对不存在,则在目录快照映射表中添加键值对;
若键值对已存在,则将键值对中的快照数加1。
在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:
当快照管理命令为删除命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作包括:
获取删除命令指定的目录快照的块修改日志链表;
遍历块修改日志链表中的所有键值对,将满足数据释放条件的键值对所对应的数据块释放,并将满足数据释放条件的键值对删除。
在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:
当快照管理命令为删除命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作还包括:
若块修改日志链表中的所有键值对都已被删除,则判断删除命令指定的目录快照是否为目录快照所属目录的最后一个快照;
若删除命令指定的目录快照为目录快照所属目录的最后一个快照,则将目录快照所属目录在目录快照映射表中对应的键值对删除,键值对包括目录快照所属目录的目录号、目录名以及快照数;
若删除命令指定的目录快照不是目录快照所属目录的最后一个快照,则将目录快照所属目录在目录快照映射表中对应的键值对中的快照数减1。
在本发明实施例中,可选的,该处理器012执行该指令还可以具体用于:
当快照管理命令为回滚命令时,在快照管理链表上执行与快照管理命令对应的快照管理操作包括:
获取回滚命令指定的第一索引节点,第一索引节点为回滚命令指定的目录快照的索引节点;
遍历第一索引节点的条目项,并对每个条目项进行回填处理;对每个条目项进行回填处理包括:
判断条目项对应的索引节点号是否已被当前系统使用;
若条目项对应的索引节点号已被当前系统使用,则为条目项重新分配索引节点号,并根据重新分配的索引节点号重构条目项,而后将重构后的条目项回填至目录快照所属目录的索引节点;
若条目项对应的索引节点号未被当前系统使用,则直接将条目项回填到目录快照所属目录的索引节点中,并判断条目项的类型;
若条目项为目录类型条目项,则对目录类型条目项的索引节点递归执行与第一索引节点相同的上述回滚操作;
若条目项不为目录类型条目项,则判断条目项是否为第一索引节点中的最后一个条目项,若条目项不是第一索引节点中的最后一个条目项,则对条目项的下一个条目项进行回填处理;
若条目项是第一索引节点中的最后一个条目项,则对目录快照所属目录在目录快照映射表中的键值对进行修改。
在本发明实施例中,可选的,块修改日志链表包括写时重定向ROW型日志链表、删除型日志链表和截断型日志链表;
ROW型日志链表中的键值对包括事务号、块起始地址、块大小和块对应的目录快照所属目录的目录号;
删除型日志链表中的键值对包括删除的文件号、事务号和删除的文件对应的目录快照所属目录的目录号;
截断型日志链表中的键值对包括截断的文件号、事务号和截断的文件对应的目录快照所属目录的目录号。
在本发明实施例中,可选的,快照的类型还包括:内部快照,内部快照为根据预设策略生成的文件系统快照;预设策略包括执行预设门限次数的事务后生成,或在预设时间点生成。
本发明的实施例提供一种快照管理装置,获取包括创建、删除和回滚在内的快照管理命令,并根据快照管理命令,协同目录快照映射表,在快照管理链表上对类型包括文件系统快照、目录快照在内的快照及与快照对应的块修改日志链表执行相应的快照管理操作,这样,能够减小快照管理的复杂度,提高执行各种快照管理命令及操作时的工作效率。
在本申请所提供的几个实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另一点,所显示或讨论的模块相互之间的连接可以是通过一些接口,可以是电性,机械或其它的形式。
所述各个模块可以是或者也可以不是物理上分开的,可以是或者也可以不是物理单元。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理包括,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能单元的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。