快照的管理方法和装置转让专利

申请号 : CN201310173209.3

文献号 : CN103268270B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李博张玉龙张东阳苗艳超刘新春邵宗有

申请人 : 曙光信息产业(北京)有限公司

摘要 :

本发明公开了一种方法和装置,其中,该方法包括:在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。本发明通过不重复存储与已有快照存储的数据相同的数据,从而减少存储多个快照所占用的内存,节约存储快照所需的设备的空间,此外,本发明通过二叉树来管理快照实现了快照的快速定位,并且使系统可以更加高效地使用快照,提高了系统的操作性能。

权利要求 :

1.一种快照的管理方法,其特征在于,包括:

在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;

对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将所述非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。

2.根据权利要求1所述的管理方法,其特征在于,在二叉树中创建与本次快照对应的节点包括:根据本次快照的生成时间在二叉树中创建与本次快照对应的节点。

3.根据权利要求1所述的管理方法,其特征在于,将所述非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点包括:在所述二叉树中与本次生成的快照所对应的节点中建立B+树;

在所述B+树的节点中保存所述非增量数据的索引,其中,所述非增量数据的索引的指针被配置为指向二叉树中其他节点保存的快照中的所述非增量数据。

4.根据权利要求1所述的管理方法,其特征在于,在本次生成的快照相比于二叉树中其他节点已存储的快照存在增量数据的情况下,则在存储本次生成的快照时,将所述增量数据存储至二叉树中与本次生成的快照所对应的节点。

5.根据权利要求4所述的管理方法,其特征在于,进一步包括:

在对二叉树的节点中已存储的快照的数据进行修改的情况下,更新二叉树中其他节点存储的对应所述快照的数据的索引。

6.一种快照的管理装置,其特征在于,包括:

创建模块,用于在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;

存储模块,用于对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将所述非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。

7.根据权利要求6所述的管理装置,其特征在于,所述创建模块还用于在二叉树中创建与本次快照对应的节点时,根据本次快照的生成时间在二叉树中创建与本次快照对应的节点。

8.根据权利要求6所述的管理装置,其特征在于,所述存储模块用于在将所述非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点时,在所述二叉树中与本次生成的快照所对应的节点中建立B+树;

所述存储模块还用于在所述B+树的节点中保存所述非增量数据的索引,其中,所述非增量数据的索引的指针被配置为指向二叉树中其他节点保存的快照中的所述非增量数据。

9.根据权利要求6所述的管理装置,其特征在于,所述存储模块还用于在本次生成的快照相比于二叉树中其他节点已存储的快照存在增量数据的情况下,则在存储本次生成的快照时,将所述增量数据存储至二叉树中与本次生成的快照所对应的节点。

10.根据权利要求9所述的管理装置,其特征在于,进一步包括:更新模块,用于在对二叉树的节点中已存储的快照的数据进行修改的情况下,更新二叉树中其他节点存储的对应所述快照的数据的索引。

说明书 :

快照的管理方法和装置

技术领域

[0001] 本发明涉及计算机领域,并且特别地,涉及一种快照的管理方法和装置。

背景技术

[0002] 随着存储应用需求的提高,用户需要使用在线方式对数据进行保护,快照就是一种在线存储设备防范数据丢失的有效方法,越来越多的设备都开始支持快照功能。
[0003] 快照的主要功能是能对在线数据进行备份和恢复。当存储设备发生应用故障或文件损坏时可进行快速数据恢复,将数据恢复到某个可用时间点的状态。
[0004] 传统的快照技术主要是针对每个存储资源时间点状态的进行单一保护。虽然同一存储资源也可以实现几份乃至十几份的快照,但是各个快照之间没有关联性。正是由于这个缺陷,当管理员需要对同一存储资源在多个时间点存储多份快照时,传统的存储快照技术在使用中遇到以下问题:
[0005] 1、存储容量问题:快照越多,存储快照所需的容量就越大,暴露出空间局限性问题,并且,存储快照使用的硬件的费用也越大;
[0006] 2、存储性能问题:由于不同时间产生的传统存储快照之间没有关联性,若需要生成多个快照,一个数据的写入可能向多个快照空间发出保存当前数据的指令,使操作效率变低。
[0007] 3、业务冻结时间长:创建一个新快照时,就要备份原有数据或者备份上一个快照的数据,浪费时间。
[0008] 针对相关技术中存储多个快照所占用的内存大,而系统操作效率变低的问题,目前尚未提出有效的解决方案。

发明内容

[0009] 针对相关技术中存储多个快照所占用的内存大,而系统操作效率变低的问题,本发明提出一种快照的管理方法和装置,能够减少存储多个快照所占用的内存,并且提高系统的存储效率。
[0010] 本发明的技术方案是这样实现的:
[0011] 根据本发明的一个方面,提供了一种快照的管理方法。
[0012] 上述快照的管理方法包括:
[0013] 在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;
[0014] 对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。
[0015] 其中,在二叉树中创建与本次快照对应的节点包括:
[0016] 根据本次快照的生成时间在二叉树中创建与本次快照对应的节点。
[0017] 并且,将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点包括:
[0018] 在二叉树中与本次生成的快照所对应的节点中建立B+树;
[0019] 在B+树的节点中保存非增量数据的索引,其中,非增量数据的索引的指针被配置为指向二叉树中其他节点保存的快照中的非增量数据。
[0020] 进一步地,在本次生成的快照相比于二叉树中其他节点已存储的快照存在增量数据的情况下,则在存储本次生成的快照时,将增量数据存储至二叉树中与本次生成的快照所对应的节点。
[0021] 此外,上述快照的管理方法进一步包括:
[0022] 在对二叉树的节点中已存储的快照的数据进行修改的情况下,更新二叉树中其他节点存储的对应该被修改的数据的索引。
[0023] 根据本发明的一个方面,提供了一种快照的管理装置。
[0024] 上述快照的管理装置包括:
[0025] 创建模块,用于在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;
[0026] 存储模块,用于对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。
[0027] 其中,创建模块还用于在二叉树中创建与本次快照对应的节点时,根据本次快照的生成时间在二叉树中创建与本次快照对应的节点。
[0028] 而且,存储模块用于在将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点时,在二叉树中与本次生成的快照所对应的节点中建立B+树;
[0029] 存储模块还用于在B+树的节点中保存非增量数据的索引,其中,非增量数据的索引的指针被配置为指向二叉树中其他节点保存的快照中的非增量数据。
[0030] 并且,存储模块还用于在本次生成的快照相比于二叉树中其他节点已存储的快照存在增量数据的情况下,则在存储本次生成的快照时,将增量数据存储至二叉树中与本次生成的快照所对应的节点。
[0031] 此外,上述快照的管理装置进一步包括:
[0032] 更新模块,用于在对二叉树的节点中已存储的快照的数据进行修改的情况下,更新二叉树中其他节点存储的对应该被修改的数据的索引。
[0033] 本发明通过不重复存储与已有快照存储的数据相同的数据,从而减少存储多个快照所占用的内存,节约存储快照所需的设备空间和时间,提高了存储性能,此外,本发明通过二叉树和其中的索引来管理快照实现了快照的快速定位和快照之间的关联,并且使系统可以更加高效地使用快照,提高了系统的操作性能和操作效率,避免业务被长时间冻结。

附图说明

[0034] 图1是根据本发明实施例的快照的管理方法的流程图;
[0035] 图2是根据本发明的另一个实施例的快照结构的示意图;
[0036] 图3是在图2所示快照上增加快照结构的示意图;
[0037] 图4是根据本发明的另一个实施例的对快照进行多种操作的示意图;
[0038] 图5是根据本发明的另一个实施例的恢复快照的示意图;
[0039] 图6是根据本发明实施例的快照的管理装置的框图。

具体实施方式

[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 根据本发明的实施例,提供了一种快照的管理方法。
[0042] 如图1所示,根据本发明实施例的快照管理方法包括:
[0043] 步骤S101,在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;
[0044] 步骤S103,对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。通过这样的技术方案,能够实现不重复存储与已有快照存储的数据相同的数据,从而减少存储多个快照所占用的内存,节约存储快照所需的设备的空间,
[0045] 文中所提及的索引在实际应用中可以用B+树来实现。
[0046] 在实际应用中,根据本发明实施例的快照管理方法可以按以下步骤实施:
[0047] 步骤(一)、在二叉树中创建与本次快照对应的节点可以根据本次快照的生成时间在二叉树中创建与本次快照对应的节点。其中,第一个快照的创建包括以时间为关键字建立一个二叉树。使用二叉树来管理快照实现了快照的快速定位,能够保证访问快照的快捷性。
[0048] 步骤(二)、在将非增量数据(即,已有快照中存在该数据)的索引存储至二叉树中与本次生成的快照所对应的节点时,可以在二叉树中与本次生成的快照所对应的节点中建立B+树,并且,可以在B+树的节点中保存非增量数据的索引,其中,非增量数据的索引的指针被配置为指向二叉树中其他节点保存的快照中的非增量数据。若没有增量数据,则B+树为空。如图2所示为创建好的快照结构。S1为二叉树中的节点,如图2所示,B+树中的数据组合为磁盘的索引排列,能够寻址到数据(也可以称为buf)1、数据2和数据3的索引(即,B+树)。
[0049] 步骤(三)、在本次生成的快照相比于二叉树中其他节点已存储的快照存在增量数据的情况下,则在存储本次生成的快照时,将增量数据存储至二叉树中与本次生成的快照所对应的节点。即,使用B+树来保存增量数据,
[0050] 步骤(四)、增加快照。以快照生成的时间为关键字生成一个树的节点,将其插入到二叉树中,即成为二叉树中的S2,在将节点插入到二叉树中时需要保持二叉树的平衡,即保证二叉树的左右层差不大于1。当本次增加的快照中没有增量数据时,二叉树中本次快照指向的B+树就是上一个树的节点对应的B+树的结构,此时,只需将上一个节点的B+树的树结构复制到本次快照的节点中,用将本次快照的指针指向真正的数据即可。如图3所示,S2为在二叉树中为本次快照中增加的节点,本次快照的数据与前一次快照S1相同时,则复制S1中的B+树至S2,将B+树的指针指向S1中存储的真正数据。
[0051] 如图4所示,若此时再产生新的数据,根据本发明实施例的快照管理方法可以根据情况不同存在至少以下三种处理方式:
[0052] 方式(1)、当新创建的快照中存在与已存储快照中不重复的数据。简单地按照B+树的操作,为新的数据根据索引增加一个B+树的节点,并将节点指向真正的新增数据即可。如图4所示,新增的数据为数据4和数据5,增加对应于数据4和5的B+树以后,将节点中的指针指向新增数据4和5。
[0053] 方式(2)、已存储快照中数据的重新修改。根据本发明实施例的快照管理方法可以在对二叉树的节点中已存储的快照的数据进行修改的情况下,更新二叉树中其他节点存储的对应该被修改的数据的索引。在实际应用中,需要将节点中指向上一个快照的数据的指针清除,并生成一个新的指针指向新生成的数据。如图4所示,清除原索引200的指针,并对原索引200进行操作,将200修改为130(可以OP来显示),然后将130索引的指针指向修改后的数据处,图4中未示出。
[0054] 方式(3)、数据的特殊操作(删除,截断):需要为B+树生成一个新的节点,并在节点上记其操作类型和偏移量。
[0055] 步骤(五)、通过以上步骤生成快照,最终生成快照树,图4仅示出了两个快照的二叉树示意图,在实际应用中,可以生成多个快照。
[0056] 步骤(六)、快照的删除。在此框架下,在需要删除快照的情况下,需要将快照的B+树删掉,并且将节点中对应真正数据的指针置空。对于真正的数据,根据不同的情况,可以存在以下几种处理方式:
[0057] 情况(1)、若仍有快照指向该数据,则不对该数据进行任何处理。
[0058] 情况(2)、若没有快照指向该数据,将此数据,在下一个需要该数据的快照中建立一个节点,并将此数据存储到下一个需要该数据的快照中。
[0059] 情况(3)、若删除的是第一个快照,将数据块直接写到最原始的文件上即可。
[0060] 步骤(七)、快照恢复。首先,以时间为关键字遍历二叉树的节点,取得快照的树根;然后,如图5所示,以多线程遍历B+树,将需要恢复的文件(从数据n至数据n+11)覆盖到原来的文件中。通过多线程读写可以实现快速恢复快照的数据,提高了恢复效率。
[0061] 以上图2至图5中的部分省略了B+树中的箭头指向部分,并且索引中所示的数字仅仅为示意性,在本发明的技术方案中存在以数字或是其它方式表示的索引方式。
[0062] 根据本发明的实施例,提供了一种快照的管理装置。
[0063] 如图6所示,根据本发明实施例的快照的管理装置可以包括:
[0064] 创建模块61,用于在每次对系统中存储的数据生成快照时,在二叉树中创建与本次快照对应的节点;
[0065] 存储模块62,用于对于每次生成的快照,确定本次生成的快照相比于二叉树中其他节点已存储的快照的非增量数据,并且在存储本次生成的快照时,将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点。
[0066] 其中,创建模块61还用于在二叉树中创建与本次快照对应的节点时,根据本次快照的生成时间在二叉树中创建与本次快照对应的节点。
[0067] 而且,存储模块62用于在将非增量数据的索引存储至二叉树中与本次生成的快照所对应的节点时,在二叉树中与本次生成的快照所对应的节点中建立B+树;
[0068] 存储模块62还用于在B+树的节点中保存非增量数据的索引,其中,非增量数据的索引的指针被配置为指向二叉树中其他节点保存的快照中的非增量数据。
[0069] 并且,存储模块还用于在本次生成的快照相比于二叉树中其他节点已存储的快照存在增量数据的情况下,则在存储本次生成的快照时,将增量数据存储至二叉树中与本次生成的快照所对应的节点。
[0070] 此外,根据本发明实施例的管理装置进一步包括:
[0071] 更新模块(未示出),用于在对二叉树的节点中已存储的快照的数据进行修改的情况下,更新二叉树中其他节点存储的对应该被修改的数据的索引。
[0072] 综上所述,借助于本发明的上述技术方案,本发明通过不重复存储与已有快照存储的数据相同的数据,从而减少存储多个快照所占用的内存,节约存储快照所需的设备的空间,此外,本发明通过二叉树来管理快照实现了快照的快速定位,并且使系统可以更加高效地使用快照,提高了系统的操作性能。通过多线程读写可以实现快速恢复快照的数据,提高了恢复效率。同时,仅备份B+树和增量数据的方式,减少了存储空间的使用。
[0073] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。