发明内容
有鉴于此,本发明的目的在于提供一种生成快照的方法,该方法能够对生成的快照进行自动管理,对数据进行有效保护。
本发明的目的在于提供一种生成快照的装置,该装置能够对生成的快照进行自动管理,对数据进行有效保护。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种生成快照的方法,该方法包括:
A、根据快照生成指令生成包含链表数据的第N个快照数据;所述N为大于1的自然数;
B、判断存储快照数据的可用空间值是否满足生成快照的需求,如果满足,将所述第N个快照数据保存于快照介质中第N个快照数据的快照地址,用所述第N个快照数据的快照地址替换快照介质中保存的第M个快照数据的快照地址,将所述第N个快照数据的快照地址添加至第M个快照数据的链表数据中,修改快照介质保存的存储快照数据的可用空间值;所述M为N-1;
如果不满足,利用所述第N个快照数据替换快照介质中的第一个快照数据;将第二个快照数据的链表数据中的第一个快照数据的快照地址删除,将第二个快照数据作为第一个快照数据,根据第二个快照数据的快照地址修改所述快照介质中保存的第一个快照数据的快照地址;用所述第N个快照数据的快照地址替换所述快照介质中保存的第M个快照数据的快照地址,将所述第N个快照数据的快照地址添加至第M个快照数据的链表数据中,修改所述快照介质中保存的存储快照数据的可用空间值;
C、根据重定向数据包含的重定向映射关系,将存储在重定向地址中的源数据的修改数据写入源介质的源地址中,删除重定向数据包含的重定向映射关系。
较佳地,步骤A所述根据快照生成指令生成包含链表数据的第N个快照数据之前进一步包括:
根据外部输入的指令产生快照生成指令,或,在确定所述快照介质没有用以保存重定向数据的可用空间后产生快照生成指令。
较佳地,所述步骤A之前进一步包括:
根据快照介质和源介质的绑定关系,建立所述快照介质与所述源介质的对应关系;所述绑定关系为预先保存于快照介质中的,或者为预先建立的。
较佳地,所述步骤A之前、且建立所述快照介质与所述源介质的对应关系之后,进一步包括:
将存储快照数据的可用空间值、第一个快照数据的快照地址及第M个快照数据的快照地址保存于快照介质中。
较佳地,步骤A所述根据快照生成指令生成包含链表数据的第N个快照数据之前进一步包括:
确定所述快照介质中保存的快照标识记录的信息为未完成,产生快照生成指令;
步骤C之后进一步包括:将所述快照介质中保存的快照标识记录的信息修改为已完成。
一种生成快照的装置,该装置包含:存储控制器、快照介质和用以保存源数据的源介质;
所述快照介质用于保存快照数据、重定向数据、存储快照数据的可用空间值、第一个快照数据的快照地址及第M个快照数据的快照地址;所述M为N-1;
所述存储控制器连接所述源介质和所述快照介质;根据快照生成指令生成包含链表数据的第N个快照数据;所述N为大于1的自然数;
所述存储控制器确定存储快照数据的可用空间值满足生成快照的需求,将所述第N个快照数据保存于快照介质中第N个快照数据的快照地址;用所述第N个快照数据的快照地址替换所述元数据区保存的第M个快照数据的快照地址,将所述第N个快照数据的快照地址添加至第M个快照数据的链表数据中,修改所述元数据区保存的存储快照数据的可用空间值;
所述存储控制器确定存储快照数据的可用空间值不满足生成快照的需求,利用所述第N个快照数据替换所述快照介质中的第一个快照数据;删除第二个快照数据包含的链表数据中的第一个快照数据的地址,用第二个快照数据的快照地址替换所述元数据区保存的第一个快照数据的快照地址;用所述第N个快照数据的快照地址替换所述元数据区中保存的第M个快照数据的快照地址,将所述第N个快照数据的快照地址添加至第M个快照数据的链表数据中,修改所述元数据区保存的存储快照数据的可用空间值;
所述存储控制器根据快照介质的重定向数据包含的重定向映射关系,将重定向地址中保存的重定向数据包含的源数据的修改数据写入源介质的源地址中;删除所述重定向映射关系。
上述装置中,所述快照介质包括:用于保存第一快照数据的快照地址、第M快照数据的快照地址及存储快照数据的可用空间值的元数据区、用于保存快照数据的快照区、及用于保存重定向数据的暂存区。
较佳地,该装置进一步包括指令生成模块;
所述指令生成模块根据外部输入的指令产生快照生成指令,或在确定所述暂存区没有可用存储空间后产生快照生成指令;输出快照生成指令至所述存储控制器。
较佳地,所述存储控制器进一步根据快照介质和源介质的绑定关系,建立所述快照介质与所述源介质的对应关系;所述存储控制器将绑定关系保存于所述快照介质的元数据区。
较佳地,所述存储控制器进一步在元数据区保存一快照标识;在删除重定向映射关系后,触发所述指令生成模块;
所述指令生成模块进一步根据所述存储控制器的触发,将所述快照标识记录的信息修改为已完成;确定所述快照标识记录的信息为未完成时,产生快照生成指令,输出快照生成指令至所述存储控制器。
上述装置中,所述快照介质位于一固态硬盘上。
由上述的技术方案可见,本发明提供了一种生成快照的装置及方法,存储控制器根据保存快照数据的可用存储空间的大小来确定是直接将生成的快照数据保存于其快照地址中,还是将此次生成的快照数据保存于第一个快照数据的快照地址中。采用本发明的方法及装置,能够持续地对产生的快照数据进行有效保护和自动管理,使得快照介质中保存的快照数据始终是距离当前较近的时刻产生的快照数据,有效地节约了存储空间,实现了对数据的有效保护。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图2为本发明生成快照的方法流程图。现结合图2,对本发明生成快照的方法进行说明,具体如下:
步骤201:根据快照生成指令生成第N个快照数据;
该步骤中,N为大于1的自然数;第N个快照数据包含源数据的副本、链表数据及快照映射关系;第N个快照数据的链表数据为第N-1个快照数据的快照地址。关于链表数据,第一个快照数据的链表数据记录了在其后生成的第二个快照数据的快照地址;第a个快照数据的链表数据记录了第a-1个快照数据的快照地址和第a+1个快照数据的快照地址;第M个快照数据包含的链表数据记录了第M-1个快照数据的快照地址。其中,M为N-1;a为大于1且小于N-1的自然数;第M个快照数据为第N个快照数据生成前按时间先后顺序最后一个生成的快照数据。
快照映射关系为源数据的源地址与其快照数据的快照地址间的对应关系;比如:第a个快照数据是源地址为0000保存的源数据的快照数据,第a个快照数据的快照地址为1000,则第a个快照数据的快照映射关系为0000->1000。
本发明中的源数据保存于源介质的源地址中。快照数据包含的源数据的副本与源数据的内容相同;快照数据保存于快照介质的快照地址中。重定向数据包含源数据的修改数据;重定向数据保存于快照介质的重定向地址中。
步骤202:判断存储快照数据的可用空间值是否满足生成快照的需求,如果是,执行步骤203,否则执行步骤204;
该步骤具体为,判断快照介质中保存的存储快照数据的可用空间值是否能保存此次生成的快照数据,如果是,则确定满足生成快照的需求,否则确定不满足生成快照的需求。
步骤203:将第N个快照数据保存于快照介质中第N个快照数据的快照地址;之后执行步骤205;
根据快照介质保存的第M个快照数据的快照地址,确定第N个快照数据的快照地址,将第N个快照数据保存于快照介质的快照地址中。
由于该步骤是在确定存储快照数据的可用空间值满足生成快照的需求,因此,第N个快照数据的快照地址与第M个快照数据的快照地址相关,比如,第N个快照数据的快照地址在第M个快照数据的快照地址之后,若第M个快照数据的快照地址为4000,则第N个快照数据的快照地址为4001。
步骤204:利用第N个快照数据替换快照介质中的第一个快照数据;之后执行步骤206;
该步骤中,将第N个快照数据保存于快照介质中第一个快照数据的快照地址,替换第一个快照数据的快照地址上保存的第一个快照数据。
此时,第N个快照数据的快照地址为第一个快照数据的快照地址,而第一个快照数据的快照地址可从快照介质中获取。
步骤205:修改快照介质中保存的第M个快照数据的快照地址及快照数据的剩余空间值,修改第M个快照数据的链表数据;之后执行步骤207;
由于生成了第N个快照数据后,按照时间先后顺序最后一个生成的快照数据发生了改变,换句话说,在第N个快照数据生成后,第M个快照数据不再是当前最后一个快照数据,因此,用第N个快照数据的快照地址替换快照介质中保存的第M个快照数据的快照地址,将第N个快照数据的快照地址添加至第M个快照数据的链表数据中;根据保存了第N个快照数据后的存储快照数据的可用空间值,修改快照介质已保存的存储快照数据的可用空间值。可从第N个快照数据中包含的快照映射关系获取第N个快照数据的快照地址。
步骤206:修改快照介质中保存的第一个快照数据的快照地址、第M个快照数据的快照地址及快照数据可用空间值;修改第二个快照数据的链表数据及第M个快照数据的链表数据;之后执行步骤207;
由于第N个快照数据替换了第一个快照数据,替换前的第二个快照数据变成了替换后的第一个快照数据,因此,删除第二个快照数据中的链表数据所包含的第一个快照数据的快照地址,并且用第二个快照数据的快照地址替换快照介质中保存的第一个快照数据的快照地址。
由于生成了第N个快照数据后,按照时间顺序最后一个生成的快照数据发生了改变,因此,用第N个快照数据的快照地址,替换快照介质中保存的第M个快照数据的快照地址,并用保存了第N个快照数据后获取的快照数据的剩余空间值替换快照介质中已保存的快照数据的剩余空间值。
由于第M个快照数据为生成第N个快照数据前最后一个生成的快照数据,因此,第M个快照数据的链表数据中仅包含第M-1个快照数据的快照地址;而第N个快照数据生成后,第N个快照数据成为当前最后一个生成的快照数据,因此,将第N个快照数据的快照地址添加至第M个快照数据的链表数据中。
步骤207:将重定向数据写入源地址,删除重定向映射关系;
本发明生成快照的方法,将重定向数据写入源地址,删除重定向映射关系,完成此次快照数据的生成。比如:生成快照数据的源数据的源地址为0000,其重定向数据的重定向地址为4000,则重定向映射关系为0000->4000;在生成了所述源数据的快照数据,并将所述快照数据保存于快照地址1000后,将4000中的重定向数据写入源介质中的地址0000,删除保存的0000->4000的映射关系。
之所以将重定向数据写入源地址,是为了下次根据所述重定向数据生成快照数据,进而对源数据进行修改的数据进行备份,此时,仅需要对源数据的修改数据进行快照和备份,而不是对完整数据的副本进行快照和备份,在一定程度上节约了存储空间;同时,又能够实现生成快照的数据为最新的数据。
步骤208:结束。
本发明的步骤201之前进一步包括:
步骤200,根据快照介质和源介质的绑定关系,建立快照介质与源介质间的对应关系;绑定关系为预先保存于快照介质中的,或者为预先建立的。比如:快照介质B与源介质C之间存在绑定关系,建立快照介质B与源介质C间的对应关系,就是将源介质C上保存的源数据的重定向数据及生成的快照数据保存于快照介质B中。
步骤200与步骤201之间进一步包括:将存储快照数据的可用空间值、第一个快照数据的快照地址及第M个快照数据的快照地址保存于快照介质中;所述第M个快照数据为所述第N个快照数据生成前按时间先后顺序最后一个生成的快照数据。
步骤201在根据快照生成指令生成第N个快照数据及快照映射关系之前,进一步包括:根据外部输入的指令产生快照生成指令,或在确定所述快照介质没有用以保存重定向数据的可用空间后产生快照生成指令。
较佳地,本发明的快照介质中还可进一步保存一个快照标识;在保存重定向数据后,将快照标识记录的信息修改为未完成,表示对源数据进行了修改,但是没有生成源数据的快照数据;在生成快照数据后,并且将重定向数据写入源地址后,将快照标识记录的信息修改为已完成,以便可以持续性地对需要备份的修改后的数据进行保存,防止在意外情况下未完成生成快照所导致的数据丢失或无法恢复的情况。本发明生成快照的方法,可在每次启动生成快照时,通过快照标识的检测完成未完成的快照生成过程。
图3为本发明生成快照的装置的结构示意图。现结合图3,对本发明生成快照的装置进行说明,具体如下:
本发明生成快照的装置包含存储控制器30、源介质31和快照介质32。其中,存储控制器30分别连接源介质31和快照介质32;快照介质32包括元数据区321、快照区322和暂存区323。
源介质31用于保存源数据。
快照介质32用于保存快照数据、重定向数据、存储快照数据的可用空间值、第一个快照数据的快照地址和第M个快照数据的快照地址。快照介质32包括用于保存第一个快照数据的快照地址、第M个快照数据的快照地址及存储快照数据的可用空间值的元数据区321、用于保存快照数据的快照区322、及用于保存重定向数据的暂存区323。由于快照介质32主要是用于保存重定向数据和快照数据的,可将元数据区321的存储空间划分为小于快照介质32的存储空间的1%,将暂存区323的存储空间划分为快照介质32的存储空间的0.5%至1%,快照介质32的其余存储空间被划分为快照区322。
其中,快照数据包含源数据的副本、链表数据和快照映射关系;源数据的副本与源数据的内容相同;除了第一个快照数据和最后一个快照数据外,其余快照数据包含的链表数据为该快照数据的前一个快照数据的快照地址及后一个快照数据的快照地址;第一个快照数据的链表数据为第二个快照数据的快照地址;第M个快照数据为生成第N个快照数据前最后一个生成的快照数据,第M个快照数据的链表数据为第M-1个快照数据的快照地址;M为N-1。快照映射关系为所述源数据的源地址与其快照数据的快照地址间的对应关系。
重定向数据包含源数据的修改数据和重定向映射关系;其中,源数据的修改数据为两次生成快照的间隔时间内,源数据中发生改变的数据;重定向映射关系为源数据的源地址与其重定向数据的重定向地址间的对应关系。比如:源数据的源地址为0000,其重定向数据的重定向地址为4000,则重定向映射关系为0000->4000。
存储控制器30分别连接源介质31和快照介质32;根据快照生成指令生成第N个快照数据。第N个快照数据包含的链表数据为第M个快照数据的快照地址,也就是第N-1个快照数据的快照地址。
存储控制器30确定元数据区321保存的存储快照数据的可用空间值满足生成快照的需求,将第N个快照数据保存于快照区322的第N个快照数据的快照地址;根据第N个快照数据的快照地址,修改元数据区321保存的第M个快照数据的快照地址、第M个快照数据的链表数据及元数据区321保存的存储快照数据的可用空间值。
存储控制器30确定元数据区321保存的存储快照数据的可用空间值不满足生成快照的需求,将第N个快照数据保存于快照区322的第一个快照数据的快照地址;删除第二个快照数据的链表数据中第一快照数据的快照地址,将第二个快照数据作为生成第N个快照后的第一个快照数据;根据第二个快照数据的快照地址修改元数据区321保存的第一个快照数据的快照地址;用第N个快照数据的快照地址替换元数据区321保存的第M个快照数据的快照地址;将第N个快照数据的快照地址添加至第M个快照数据的链表数据中;根据保存了第N个快照数据后的存储快照数据的可用空间值修改元数据区321保存的存储快照数据的可用空间值。
存储控制器30根据暂存区323保存的重定向映射关系,将重定向地址保存的重定向数据包含的源数据的修改数据写入源介质31的源地址中;删除重定向地址保存的重定向数据包含的重定向映射关系。
该装置进一步包括一个指令生成模块33。指令生成模块33在接收到外部输入的触发生成快照的指令后,产生快照生成指令,输出快照生成指令至存储控制器30。或者指令生成模块33根据暂存区321的可用存储空间来确定是否产生快照生成指令,在确定暂存区321中没有可用存储空间后,产生快照生成指令,输出快照生成指令至存储控制器30。
存储控制器30进一步将建立的绑定关系保存于元数据区321中;绑定关系为快照介质和源介质的一一对应关系。当装置包含n个源介质和n个快照介质时,或者当一个用作快照介质的存储器装设于本发明的装置中时,存储控制器30建立快照介质和源介质之间的绑定关系,根据建立的绑定关系或已保存于元数据区321的绑定关系,绑定源介质和快照介质,使源介质和快照介质之间建立一一对应的关系。
存储控制器30进一步将一个快照标识保存于元数据区321中;存储控制器30在将重定向数据写入暂存区323后,进一步将元数据区321的快照标识记录的信息修改为未完成;存储控制器30在完成某一次生成快照后,进一步将源数据321的快照标识记录的而信息修改为已完成。
为了能够对数据进行有效地保护,本发明的存储控制器30在接收到快照生成指令之后,还进一步判断所需生成快照的源数据是否存在重定向数据,如果存在,则证明在相邻两次生成快照的间隔时间内对源数据进行了修改,需要对源数据进行保护,进一步根据快照生成指令生成快照数据;如果不存在,则证明在相邻两次生成快照的间隔时间内未对源数据进行修改,可不对源数据进行保护,则不执行任何操作,直至存在源数据的重定向数据后,才根据快照生成指令生成快照数据。
为了加快快照的生成速度,减小生成快照时对系统造成的影响,本发明采用一能提供较快读写速度的固态硬盘作为快照介质,这样在生成快照过程中,大大缩短了对快照介质频繁读写所耗费的时间。
本发明的上述较佳实施例中,根据保存快照数据的可用存储空间来确定是直接保存快照数据,还是替换最早产生的快照数据(第一个快照数据),可持续对产生的快照数据进行有效保护和自动管理,使得快照介质中保存的快照数据是距离当前较近的时刻产生的快照数据。由于本发明的快照数据中还记录了链表数据,建立了多个快照数据间的时间先后顺序,不仅便于利用快照数据进行数据恢复,而且在可用存储空间有限的情况下便于快照数据的替换,无需大范围搬移快照数据的存储位置。由于将固态磁盘作为快照介质,在读取或写入重定向数据时,会极大缩短满足读请求或写请求的时间,从而提高数据的读写速度;由于本发明的装置只有快照介质采用固态硬盘,相比于存储介质和快照介质完全采用普通硬盘的装置提高了快照的生成效率,相比于存储介质和快照介质完全采用高速硬盘或者完全采用固态硬盘的装置,在节省了相当的成本的前提下还能大幅提高快照的生成效率。本发明的装置还可根据用户需求,扩展多个快照介质和源介质,提高了装置的可扩展性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。