1.本技术涉及备份技术领域,特别是涉及一种备份方法、装置、代理端、存储介质和计算机程序产品。
背景技术:2.在重复数据删除的备份系统中,代理端进行备份时,需要频繁地向备份存储服务器查询需备份的数据块的指纹是否存在,如果不存在,代理端将数据块及其指纹传输给备份存储服务器,如果存在,代理端仅将指纹传输给备份存储服务器。
3.为了提高指纹查询速度,代理端可以在备份前,下载可能需要使用到的数据块的指纹,将下载得到的指纹存储到本地文件系统的本地指纹文件中;但是在本地指纹文件有多个的情况下,尚无可行性较高的方案,可以确定下载到的指纹存储到哪个本地指纹文件中,以进一步提高指纹查询速度。
技术实现要素:4.基于此,有必要针对上述技术问题,提供一种备份方法、装置、代理端、存储介质和计算机程序产品。
5.本技术提供一种备份方法,所述方法包括:
6.本次备份前,若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹;在上次全量备份后至本次备份前依次历经差异备份和增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经多次增量备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上次增量备份之外的增量备份的数据块涉及的指纹;
7.以本地文件系统中的本地指纹文件的数量为除数,对于下载下来的指纹进行求模,以求模的结果对每个所述本地指纹文件进行编号,将下载下来的指纹,存储至编号与指纹的求模结果相同的本地指纹文件;
8.本次备份过程中,对于每个需备份的数据块计算指纹,以所述本地文件系统中的所述本地指纹文件的数量为除数,对计算得到的指纹进行求模,根据求模的结果,确定编号与求模结果相同的所述本地指纹文件;
9.在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹;
10.若根据所述查找的结果,确定本地指纹文件存有与所述需备份的数据块的指纹相同的指纹,则仅将所述需备份的数据块的指纹传输至备份存储服务器;
11.若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器存有与所述需备份的数据块的指纹相同的指纹的情况下,则仅将所述需备份的数据块的指纹传输至备份存储服务器;
12.若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹的情况下,则将所述需备份的数据块及其指纹传输至备份存储服务器。
13.本技术提供一种备份装置,所述装置包括:
14.指纹下载模块,用于本次备份前,若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹;若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹;若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上一次增量备份之外的增量备份的数据块涉及的指纹;
15.指纹存储模块,用于以本地文件系统中的本地指纹文件的数量为除数,对于下载下来的指纹进行求模,以求模的结果对每个所述本地指纹文件进行编号,将下载下来的指纹,存储至编号与指纹的求模结果相同的本地指纹文件;
16.指纹文件确定模块,用于本次备份过程中,对于每个需备份的数据块计算指纹,以所述本地文件系统中的所述本地指纹文件的数量为除数,对计算得到的指纹进行求模,根据求模的结果,确定编号与求模结果相同的所述本地指纹文件;
17.指纹查找模块,用于在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹;
18.传输模块,用于若根据所述查找的结果,确定本地指纹文件存有与所述需备份的数据块的指纹相同的指纹,则仅将所述需备份的数据块的指纹传输至备份存储服务器;
19.传输模块,还用于若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器存有与所述需备份的数据块的指纹相同的指纹的情况下,则仅将所述需备份的数据块的指纹传输至备份存储服务器;
20.传输模块,还用于若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹的情况下,则将所述需备份的数据块及其指纹传输至备份存储服务器。
21.本技术提供一种代理端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行上述方法。
22.本技术提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述方法。
23.本技术提供一种计算机程序产品,其上存储有计算机程序,所述计算机程序被处理器执行上述方法。
24.上述备份方法、装置、代理端、存储介质和计算机程序产品,在本次备份前,若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹,在上次全量备份后至本次备份前依次历经差异备份和增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹,在上次全量备份后至本次备份前历经多次增量备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上次增量备份之外的增量备份的数据块涉及的指纹,以本地文件系统中的本地指纹文件的数量为除数,对于下载下来的指纹进行求模,以求模的结果对每个所述本地指纹文件进行
编号,将下载下来的指纹,存储至编号与指纹的求模结果相同的本地指纹文件,这样,就通过指纹的求模结果,实现了指纹在本地指纹文件的分类存储。
25.本次备份过程中,对于每个需备份的数据块计算指纹,以所述本地文件系统中的所述本地指纹文件的数量为除数,对计算得到的指纹进行求模,根据求模的结果,确定编号与求模结果相同的所述本地指纹文件,在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹,若根据所述查找的结果,确定本地指纹文件存有与所述需备份的数据块的指纹相同的指纹,则仅将所述需备份的数据块的指纹传输至备份存储服务器;若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器存有与所述需备份的数据块的指纹相同的指纹的情况下,则仅将所述需备份的数据块的指纹传输至备份存储服务器,若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹的情况下,则将所述需备份的数据块及其指纹传输至备份存储服务器。
26.这样,通过求模将备份过程中可能需要使用到的数据块的指纹下载并存储到本地指纹文件中,在备份过程中,通过对需备份的数据块计算指纹并求模,在编号与求模结果相同的本地指纹文件中,查找是否存在与需备份的数据块的指纹相同的指纹,进而判断指纹是否存在于备份存储服务器中,就达到了快速查询指纹、减少网络来回延迟、提高备份效率的效果。
附图说明
27.图1为一个实施例中备份方法的应用环境图;
28.图2为一个实施例中备份方法的流程示意图;
29.图3为一个实施例中备份方法的流程示意图;
30.图4为一个实施例中备份装置的结构框图;
31.图5为一个实施例中代理端的内部结构图。
具体实施方式
32.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
33.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本技术所描述的实施例可以与其它实施例相结合。
34.本技术提供的备份方法,可以应用于如图1所示的应用环境中。
35.在备份前,代理端从备份存储服务器中将备份过程中可能需要使用到的数据块的指纹下载到本地文件系统,同时将下载的指纹分类存储到不同的本地指纹文件中,在备份过程中,对于同类的指纹只需在同一本地指纹文件中进行指纹的查询,进而判断指纹是否存在于备份存储服务器中,如果不存在,代理端将数据块及其指纹传输给备份存储服务器,
如果存在,代理端仅将指纹传输给备份存储服务器。
36.在一个实施例中,如图2所示,提供了一种备份方法,该方法可以由代理端执行,包括以下步骤:
37.步骤s201,本次备份前,若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹;在上次全量备份后至本次备份前依次历经差异备份和增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经多次增量备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上次增量备份之外的增量备份的数据块涉及的指纹。
38.进一步的,在上次全量备份后至本次备份前历经差异备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经增量备份,或者未历经增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次全量备份以来的增量备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经差异备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的最后一次差异备份和最后一次差异备份以来的增量备份的数据块涉及的指纹。
39.本实施例中,下载指纹的目标是将备份存储服务器中有可能与本次备份的数据块的指纹重复的指纹下载到本地文件系统,又因为全量备份是在某一个时间点对于所有数据块的备份,增量备份是相对于上一个备份发生了变化的数据块的备份,差异备份是相对于全量备份而言,备份发生了变化的数据块,所以根据本次的备份类型,再结合从上一次全量备份以来所历经的备份,下载相应的备份于本地文件系统。
40.步骤s202,以本地文件系统中的本地指纹文件的数量为除数,对于下载下来的指纹进行求模,以求模的结果对每个所述本地指纹文件进行编号,将下载下来的指纹,存储至编号与指纹的求模结果相同的本地指纹文件。
41.本实施例中,若下载下来的指纹为fi,代理端的本地文件系统有c个本地指纹文件,对于下载下来的所有指纹进行求模,公式为qi=fimodc,根据求模结果qi对于每个本地指纹文件进行编号,对于每个求模结果相同的指纹,都存储到同一本地指纹文件中。例如,对于下载下来的指纹的进行求模结果有2、3、4,那么对不同的本地指纹文件以求模结果2、3、4进行编号,对于求模为2的指纹都存储到编号为2的本地指纹文件,求模结果为3的指纹都存储到编号为3的本地指纹文件,求模为4的指纹都存储到编号为4的本地指纹文件。
42.步骤s203,本次备份过程中,对于每个需备份的数据块计算指纹,以所述本地文件系统中的所述本地指纹文件的数量为除数,对计算得到的指纹进行求模,根据求模的结果,确定编号与求模结果相同的所述本地指纹文件。
43.步骤s204,在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹。
44.本实施例中,在进行本次备份时,对于每个需备份的数据块计算其指纹,同样的以代理端的本地指纹文件的数量为除数,即求模公式中的c,获得求模结果,确定编号与每个需备份的数据块的指纹相同的本地指纹文件,在此本地指纹文件中,查找是否存在与所述
需备份的数据块的指纹相同的指纹。
45.步骤s205,若根据所述查找的结果,确定本地指纹文件存有与所述需备份的数据块的指纹相同的指纹,则仅将所述需备份的数据块的指纹传输至备份存储服务器;若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器存有与所述需备份的数据块的指纹相同的指纹的情况下,则仅将所述需备份的数据块的指纹传输至备份存储服务器;若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹的情况下,则将所述需备份的数据块及其指纹传输至备份存储服务器。
46.进一步的,若重删类型为全局重删,则查找备份存储服务器,以确定所述备份存储服务器是否存在与所述需备份的数据块的指纹相同的指纹。若重删类型为局部重删时,则在本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹的时候,直接确定所述备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹。
47.本实施例中,在确定需备份的数据块的指纹已经存在于代理端的本地指纹文件后,因为本地指纹文件中的指纹就是从备份存储服务器的指纹数据库下载而来,所以所述需备份的数据块的指纹也一定存在于备份存储服务器中,而在重复数据删除的备份系统中,由于每个数据块的指纹是唯一确定的,那么指纹相同的数据块就是重复数据块,所以当需备份的数据块的指纹存在于备份存储服务器中时,即所述需备份数据块为重复数据块,重复数据块已经存储在备份存储服务器中,无需再将所述重复数据块再传输给备份存储服务器存储,只需将指纹传输给存储服务器即可。
48.在确定需备份的数据块的指纹,不存在于本地指纹文件系统时,可以结合重删类型来进行判断所述需备份数据块的指纹是否存在于备份存储服务器。
49.具体的:若重复数据删除的备份系统进行的是局部重删,即只有当前进行备份的代理端进行了重复数据删除,从备份存储服务器下载并存储到本地指纹文件的指纹都为本代理端历史的重删提供,此时若确定需备份的数据块的指纹,不存在于本地指纹文件系统中时,则备份存储服务器也不存在所述需备份数据块的指纹,所以所述需备份数据块为新数据块,备份时将所述需备份数据块与其指纹都传输给备份存储服务器。
50.若重复数据删除的备份系统进行的是全局重删,那么多个代理端都进行了重复数据的删除,备份存储服务器存储的指纹由多个代理端提供,此时可能存在多个代理端并发备份的情况,当某个代理端在备份存储服务器下载指纹过程中或者在下载完成后开始备份前,其它的代理端有可能将新的数据块及指纹传输到备份存储服务器,当需备份的数据块的指纹,不存在于本地指纹文件系统中,并不能直接判断所述需备份数据块的指纹不存在于备份存储服务器中,还需代理端远程查找备份存储服务器中是否存在与所述需备份数据块的指纹相同的指纹,若存在,则所述需备份数据块为重复数据块,备份时只将所述需备份数据块的指纹都传输给备份存储服务器,若不存在,则所述需备份数据块为新数据块,备份时将所述需备份数据块与其指纹都传输给备份存储服务器。
51.上述备份方法中,在本次备份前,若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹,在上次全量备份后至本次备份前依次历经差异备份和增量备份的情况下,若本次备份类型为差异备份,则
从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹,在上次全量备份后至本次备份前历经多次增量备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上次增量备份之外的增量备份的数据块涉及的指纹,以本地文件系统中的本地指纹文件的数量为除数,对于下载下来的指纹进行求模,以求模的结果对每个所述本地指纹文件进行编号,将下载下来的指纹,存储至编号与指纹的求模结果相同的本地指纹文件,这样,就通过指纹的求模结果,实现了指纹在本地指纹文件的分类存储。
52.本次备份过程中,对于每个需备份的数据块计算指纹,以所述本地文件系统中的所述本地指纹文件的数量为除数,对计算得到的指纹进行求模,根据求模的结果,确定编号与求模结果相同的所述本地指纹文件,在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹,若根据所述查找的结果,确定本地指纹文件存有与所述需备份的数据块的指纹相同的指纹,则仅将所述需备份的数据块的指纹传输至备份存储服务器;若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器存有与所述需备份的数据块的指纹相同的指纹的情况下,则仅将所述需备份的数据块的指纹传输至备份存储服务器,若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹的情况下,则将所述需备份的数据块及其指纹传输至备份存储服务器。
53.这样,通过求模将备份过程中可能需要使用到的数据块的指纹下载并存储到本地指纹文件中,在备份过程中,通过对需备份的数据块计算指纹并求模,在编号与求模结果相同的本地指纹文件中,查找是否存在与需备份的数据块的指纹相同的指纹,进而判断指纹是否存在于备份存储服务器中,就达到了快速查询指纹、减少网络来回延迟、提高备份效率的效果。
54.在一个实施例中,在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹,包括:
55.获取编号与求模结果相同的所述本地指纹文件里依次排序后指纹;在依次排序的指纹里,通过二分查找的方式,确定是否存在与所述需备份的数据块的指纹相同的指纹。
56.二分查找也叫折中查找,它是一种效率较高的查找方法,但是使用二分查找的前提就是所查找的序列必须是有序的,所以在通过系统调用mmap的方式,分别将每个本地指纹文件读写映射至虚拟内存后,需分别对每个本地指纹文件里的指纹进行快速排序,在排序后的指纹里进行二分查找就大幅提高了查找的性能。
57.基于此,在查找是否存在与所述需备份的数据块的指纹相同的指纹之前,所述方法还包括:
58.通过系统调用mmap的方式,分别将每个本地指纹文件读写映射至虚拟内存,在所述虚拟内存里,对每个本地指纹文件里的指纹排序;在每个本地指纹文件读写映射至虚拟内存后并完成排序后,通过系统调用mumap的方式,关闭读写映射。
59.mmap为一种内存映射文件的方法,在将本地指纹文件映射至虚拟内存后,进程就可以像访问普通内存一样对本地指纹文件进行访问,不必再调用read(),write()等操作,大大提高了指纹的查询效率。
60.为了更好地理解上述方法,以下详细阐述一个本技术备份方法的应用实例。
61.目前,在重复数据删除系统中,指纹(fingerprint)为数据块(chunk)的密码散列函数值(如md5或sha-1),存于备份存储服务器的指纹数据库中。代理端(agent)备份过程中,需频繁向备份存储服务器(storaged)查询数据块的指纹是否存在,当指纹不存在时才传输该数据块与指纹至备份存储服务器,若存在,则仅传输指纹至备份存储服务器。
62.随着各行各业的业务系统数据量逐年增长,备份窗口(backup window)处理数据量也随之增长。重复数据删除的备份系统的性能如何满足备份窗口成了技术挑战。
63.本实施例的主要内容,结合图3进行说明:
64.步骤s301至步骤s302:在本次备份前,代理端根据本次备份类型,确定要下载的指纹位于的备份集:
65.若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹;在上次全量备份后至本次备份前依次历经差异备份和增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经多次增量备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上次增量备份之外的增量备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经差异备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经增量备份,或者未历经增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次全量备份以来的增量备份的数据块涉及的指纹;在上次全量备份后至本次备份前历经差异备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的最后一次差异备份和最后一次差异备份以来的增量备份的数据块涉及的指纹;
66.步骤s303至步骤s307:从备份存储服务器,一边下载指纹fi,一边求模qi=fimodc,分区存储至代理端本地文件系统的c个文件,每个文件以qi的值命名;
67.步骤s308至步骤s311:代理端通过系统调用mmap分别读写映射每个本地指纹文件至虚拟内存,并分别对每个本地指纹文件的指纹快速排序,排序完成后mumap关闭映射;
68.步骤s312至步骤s315:代理端通过mmap分别读映射每个排序后的指纹文件至虚拟内存;备份过程中,代理端每1块数据,计算指纹fi,求模qi=fimodc查找到文件qi;
69.步骤s316至步骤s321:代理端在文件qi中,二分查找指纹fi,根据重删类型:
70.若重删类型为全局重删,则远程查找备份存储服务器的指纹数据库确定该指纹是否存在于指纹数据库中;
71.若重删类型为局部重删,则无需远程查找备份存储服务器的指纹数据库,即可确定该指纹不存在于指纹数据库中;
72.若指纹存在于备份存储服务器的指纹数据库,则代理端仅传输指纹至备份存储服务器;否则,代理端传输数据块和指纹至备份存储服务器。
73.本实施例中,通过在本次备份前,代理端将上一次全备份以来源数据产生的备份集涉及的指纹下载至代理端本地文件系统,并求模分区(round-robin partitioning)存储于多个mmap文件(通过mmap读写映射到虚拟内存的本地指纹文件),并快速排序每个mmap文
件。备份过程中,指纹求模查出分区文件即存储于哪个本地指纹文件,并于该文件中二分查找该指纹,与现有技术相比,至少具有以下优点:
74.1.指纹缓存文件为只读查找,查询线程无锁访问(所有的线程都可以在不停顿的状态下持续执行)。
75.2.当指纹不存在于本地缓存文件时,无需远程查找指纹数据库,即可确定该指纹不存在于指纹数据库中,从而避免网络来回延迟。
76.3.当指纹存在于本地缓存文件时,若为全局重删,则远程查找指纹数据库确定该指纹是否存在于指纹数据库中;若为局部重删,无需远程查找指纹数据库,即可确定该指纹不存在于指纹数据库中。
77.4.快速排序和二分查找皆作用于连续内存,每条指纹16byte,x86_64架构每个cache line为64byte,即正好容纳4条指纹。mmap将文件按内存页(通常为4kib)对齐映射至内存中,每页正好容纳256条指纹。如此,查找指纹高效利用cache line,相对树形或hash结构大幅提升查找性能。
78.5.因mmap,当遇到系统内存紧张,指纹占用只读内存将被操作系统自动回收,规避oom造成业务系统不稳定。
79.6.求模分区结合二分查找,相比二分查找,时间复杂度从o(lgn)降低至o(lg(n/c))
80.假设源数据为1tib,每块数据64kib,128个分区,按1ge网络tcp来回延迟0.2毫秒(因代理端与备份存储服务器以tcp协议交互),内存延迟16纳秒:
81.n=1tib/64kib=240/(64*210)=224
82.m=nlog2(n/c)=224*log2(224/128)=17*224
83.其中,n为总块数,m=17*224为本地查找指纹次数,估计耗时16*17*224纳秒=4.6秒,相比之下:
84.若无本地缓存,批量64条指纹查找1次,备份存储服务器查找耗时等同于本地查找(实际应慢于本地查找),则0.2/64*17*224毫秒+4.6秒=895.6秒。本实施例性能提高19300%
85.若本地缓存至树结构,即便不考虑其因内存不连续而无法高效利用cache line的耗时,至少16*n*log2(n)纳秒=16*224*log2(224)=6.4秒。本实施性能提高39%,所以本实施例达到了快速查询指纹、减少网络来回延迟、提高备份效率的效果。
86.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
87.在一个实施例中,如图4所示,提供了一种备份装置,应用于代理端,包括:
88.指纹下载模块401,用于本次备份前,若本次备份类型为全量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的备份的数据块涉及的指纹;若本次备份
类型为差异备份,则从备份存储服务器下载上次差异备份以及上次差异备份以来的增量备份的数据块涉及的指纹;若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及除上一次增量备份之外的增量备份的数据块涉及的指纹;
89.指纹存储模块402,用于以本地文件系统中的本地指纹文件的数量为除数,对于下载下来的指纹进行求模,以求模的结果对每个所述本地指纹文件进行编号,将下载下来的指纹,存储至编号与指纹的求模结果相同的本地指纹文件;
90.指纹文件确定模块403,用于本次备份过程中,对于每个需备份的数据块计算指纹,以所述本地文件系统中的所述本地指纹文件的数量为除数,对计算得到的指纹进行求模,根据求模的结果,确定编号与求模结果相同的所述本地指纹文件;
91.指纹查找模块404,用于在编号与求模结果相同的所述本地指纹文件中,查找是否存在与所述需备份的数据块的指纹相同的指纹;
92.传输模块405,用于若根据所述查找的结果,确定本地指纹文件存有与所述需备份的数据块的指纹相同的指纹,则仅将所述需备份的数据块的指纹传输至备份存储服务器;
93.传输模块405,还用于若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器存有与所述需备份的数据块的指纹相同的指纹的情况下,则仅将所述需备份的数据块的指纹传输至备份存储服务器;
94.传输模块405,还用于若根据所述查找的结果,确定本地指纹文件未存有与所述需备份的数据块的指纹相同的指纹,且在备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹的情况下,则将所述需备份的数据块及其指纹传输至备份存储服务器。
95.在一个实施例中,指纹下载模块401,还用于在上次全量备份后至本次备份前历经差异备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次差异备份的数据块涉及的指纹。
96.在一个实施例中,指纹下载模块401,还用于在上次全量备份后至本次备份前历经增量备份,或者未历经增量备份的情况下,若本次备份类型为差异备份,则从备份存储服务器下载上次全量备份以来的增量备份的数据块涉及的指纹。
97.在一个实施例中,指纹下载模块401,还用于在上次全量备份后至本次备份前历经差异备份的情况下,若本次备份为增量备份,则从备份存储服务器下载上次全量备份以及上次全量备份以来的最后一次差异备份和最后一次差异备份以来的增量备份的数据块涉及的指纹。
98.在一个实施例中,指纹查找模块404,还用于获取编号与求模结果相同的所述本地指纹文件里依次排序后指纹;在依次排序的指纹里,通过二分查找的方式,确定是否存在与所述需备份的数据块的指纹相同的指纹。
99.在一个实施例中,所述装置还包括系统调用mmap模块,用于通过系统调用mmap的方式,分别将每个本地指纹文件读写映射至虚拟内存,在所述虚拟内存里,对每个本地指纹文件里的指纹排序;在每个本地指纹文件读写映射至虚拟内存后并完成排序后,通过系统调用mumap的方式,关闭读写映射。
100.在一个实施例中,传输模块405,还用于若重删类型为全局重删,则查找备份存储服务器,以确定所述备份存储服务器是否存在与所述需备份的数据块的指纹相同的指纹;
101.若重删类型为局部重删时,则在本地指纹文件未存有与所述需备份的数据块的指
纹相同的指纹的时候,直接确定所述备份存储服务器未存有与所述需备份的数据块的指纹相同的指纹。
102.关于备份装置的具体限定可以参见上文中对于备份方法的限定,在此不再赘述。上述备份装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
103.在一个实施例中,提供了一种代理端,其内部结构图可以如图5所示。该代理端包括通过系统总线连接的处理器、存储器和网络接口。其中,该代理端的处理器用于提供计算和控制能力。该代理端的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该代理端的数据库用于存储备份数据。该代理端的网络接口用于与外部的终端通过网络连接通信。该代理端还包括输入输出接口,输入输出接口是处理器与外部设备之间交换信息的连接电路,它们通过总线与处理器相连,简称i/o接口。该计算机程序被处理器执行时以实现一种备份方法。
104.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
105.在一个实施例中,提供了一种代理端,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各个方法实施例中的步骤。
106.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
107.在一个实施例中,提供了一种计算机程序产品,其上存储有计算机程序,所述计算机程序被处理器执行上述各个方法实施例中的步骤。
108.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
109.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
110.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
111.以上的实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不
能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。