CN111258815A - 适用于基于哈希的多节点备份系统的数据备份方法及装置 - Google Patents

适用于基于哈希的多节点备份系统的数据备份方法及装置 Download PDF

Info

Publication number
CN111258815A
CN111258815A CN202010047195.0A CN202010047195A CN111258815A CN 111258815 A CN111258815 A CN 111258815A CN 202010047195 A CN202010047195 A CN 202010047195A CN 111258815 A CN111258815 A CN 111258815A
Authority
CN
China
Prior art keywords
data
backup
hash
remote server
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010047195.0A
Other languages
English (en)
Other versions
CN111258815B (zh
Inventor
赵靖荣
陈鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orca Data Technology Xian Co Ltd
Original Assignee
Orca Data Technology Xian Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orca Data Technology Xian Co Ltd filed Critical Orca Data Technology Xian Co Ltd
Priority to CN202010047195.0A priority Critical patent/CN111258815B/zh
Publication of CN111258815A publication Critical patent/CN111258815A/zh
Application granted granted Critical
Publication of CN111258815B publication Critical patent/CN111258815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种适用于基于哈希的多节点备份系统的数据备份方法,所述方法包括:遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器;将不存在于远端服务器的数据块在本地保存为作业文件;根据作业文件并发地进行多个目标复制备份数据的复制。本发明避免了不必要的数据传输,极大地提升了复制的效率。复制的粒度从整个目标复制备份数据减小为了单独的数据块,避免了大量重复的数据查询和数据传输。

Description

适用于基于哈希的多节点备份系统的数据备份方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种适用于基于哈希的多节点备份系统的数据备份方法。
背景技术
在基于哈希的备份系统中,根据不同的切片算法,备份的原始数据会被切分成许多个数据切片。这些数据切片和他们对应的哈希值会被分散地存储在备份系统的数据节点中,并最终组织成一个默克尔(Merkel)树的形式来保存。在备份系统中,查询到哈希值的存在就意味着它所关联的数据块的存在。如图1所示,多个备份Merkel树可能会引用相同的数据块;但是,数据块本身只会被系统存储一次,所以备份系统具有高效的磁盘利用率。
备份系统的一种主要的容灾方法就是远程复制,它允许用户把目标复制备份数据从一个源备份服务器(即源数据节点)复制到另一个目的备份服务器(目的数据节点,也可以称为远端服务器或远端备份服务器)。当源备份服务器发生了任何导致数据丢失或数据不可用错误时,用户可以从远端备份服务器将数据恢复回来。图2示出了目前远程复制功能的实现流程,在图2中,n大于0,为源备份服务器存储节点的数目,m大于0,为目的备份服务器存储节点的数目。
在当前的远程复制功能实现中,当预设的复制时间到达或者用户手动触发了数据复制的时候,源系统的控制节点会为每一个需要复制的备份客户端创建一个复制会话,它们会被用于复制这个客户端的目标复制备份数据到远端服务器。不同的备份系统,可能会有不同的可并发执行的复制会话数目限制。
虽然当前的实现方式简单并满足了复制功能的需要,但是它还是具有以下的缺陷以至于大大地影响了复制的性能,具体地:
1、工作量在集群中是不平衡的,如图2所示,所有的复制会话都是在集群的控制节点上创建并运行的。这就对控制节点的CPU和内存性能提出了很高的性能要求,可能会成为性能瓶颈。
2、数据块的复制会分为两步:第一步是从源数据节点到源控制节点;第二步是源控制节点到远端服务器。其中的第一步是不必要且费时的;同时,也增加了复制出错的概率。
3、站在数据去重的角度上,多个复制会话互相独立地工作会导致一定程度的冗余工作量。例如:对于那些支持源端数据去重的备份系统来说,在真实数据被复制到目的备份服务器之前,源数据节点会先通过一条查询命令来查看这块数据的哈希是否在远端服务器已经存在了。如果哈希已经存在了,那么对应的数据块也是存在的,也就不需要再把整个数据块给发送到远端服务器。但是,在现有技术中,多个复制会话会独立地处理他们自己的备份,如果某些数据块(哈希)被多个备份引用的话,他们可能会被查询多次。更糟糕的情况会发生在那些依赖服务器端去重的产品上,因为大量的重复数据传输会造成功能耗时急剧增加。
综上所述,目前复制实现方式具有以下缺点:所有工作都是在源端控制节点上执行的,导致复制效率低下。控制节点上的CPU繁忙度将非常高,成为复制效果的瓶颈。而存储节点上计算能力被完全地浪费。多个复制会话相互独立的执行,无法避免冗余的数据查询和传输。源端数据节点和源端控制节点间的数据传输是不必要的,将导致额外的复制时间和增加复制失败的可能性。因此,目前急需一种数据备份方法来解决上述问题。
发明内容
本发明实施例提供一种适用于基于哈希的多节点备份系统的数据备份方法,用以解决现有技术中的上述至少一个问题。
本发明实施例提供一种适用于基于哈希的多节点备份系统的数据备份方法,在数据节点中执行以下处理:
遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器;
将不存在于远端服务器的数据块在本地保存为作业文件;
根据作业文件并发地进行多个目标复制备份数据的复制。
本发明实施例还提供一种适用于基于哈希的多节点备份系统的数据备份装置,设置于数据节点中,包括:
统计记录模块,用于遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器;
保存模块,用于将不存在于远端服务器的数据块在本地保存为作业文件;
复制模块,用于根据作业文件并发地进行多个目标复制备份数据的复制。
本发明实施例还提供一种适用于基于哈希的多节点备份系统的数据备份装置,设置于数据节点中,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现上述适用于基于哈希的多节点备份系统的数据备份方法的步骤。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有信息传递的实现程序,程序被处理器执行时实现上述适用于基于哈希的多节点备份系统的数据备份方法的步骤。
采用本发明实施例,避免了不必要的数据传输,极大地提升了复制的效率。复制的粒度从整个目标复制备份数据减小为了单独的数据块,避免了大量重复的数据查询和数据传输。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是现有技术的多个备份引用相同的数据块的示意图;
图2是现有技术的远程复制功能实现的示意图;
图3是本发明实施例的适用于基于哈希的多节点备份系统的数据备份方法的流程图;
图4是本发明实施例的特定数据结构的示意图;
图5是本发明实施例的作业文件的结构的示意图;
图6是本发明实施例的新复制功能实现的示意图;
图7是本发明实施例的用于目的服务器端垃圾回收中的新的哈希记录标志位的示意图;
图8是本发明实施例的安排各个源服务器的复制时间以避免相互干扰的示意图;
图9是本发明装置实施例一的适用于基于哈希的多节点备份系统的数据备份装置的示意图;
图10是本发明装置实施例二的适用于基于哈希的多节点备份系统的数据备份装置的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
方法实施例
根据本发明的实施例,提供了一种适用于基于哈希的多节点备份系统的数据备份方法,包括确定数据块是否需要被传输的数据挖掘的步骤(步骤301和步骤302)和数据复制(步骤303)的步骤,可用于优化基于哈希的多节点备份系统之间的数据复制。本发明实施例的所有处理均是在数据节点中执行,具体地,在基于哈希的备份系统中,备份会被组织成一颗Merkel树,所有的数据切片会被均匀的存储在多个数据节点中。那么,自然地,数据复制就应该从源数据节点发起,而不是控制节点。当所有的数据块被传输到目的服务器后,代表被复制的目标复制备份数据的Merkel树也就自动地建立起来了。
图3是本发明实施例的适用于基于哈希的多节点备份系统的数据备份方法的流程图,如图3所示,根据本发明实施例的适用于基于哈希的多节点备份系统的数据备份方法具体包括:
步骤301,遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器;
步骤302,将不存在于远端服务器的数据块在本地保存为作业文件;
步骤303,根据作业文件并发地进行多个目标复制备份数据的复制。
以下结合附图,对本发明实施例的上述各个步骤进行详细说明。
在步骤301中,为了方便遍历各个目标复制备份数据,可以预先对计划要复制到远端服务器的目标复制备份数据进行编号,并基于编号遍历本地存储的目标复制备份数据。此外,如图4所示,还可以采用预定数据结构记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器,其中,预定数据结构的键为数据块的哈希,键的键值为哈希引用对象,哈希引用对象采用一个比特标志位标识哈希及其对应的数据块是否已经存在于远端服务器,采用一个比特位图标识哪些目标复制备份数据引用了该数据块,在一个比特位图的长度不足以记录下所有引用了同一数据块的目标复制备份数据时,采用指针指向对应的下一个哈希引用对象。在本发明实施例中,对于被目标复制备份数据所引用的数据块,如果当前还没有以其哈希为键的数据存储于统计数据中时,向远端服务器发送哈希是否存在查询消息(即下述哈希是否存在消息(is_hash_present)),并根据查询结果对该数据块进行统计,其中,如果该哈希值已经存在于远端服务器,则属于该数据块下层的所有子孙数据块也存在于远端服务器,则根据查询结果对该数据块下层的的子孙数据块进行统计。
具体地,图4展示了的预定数据结构即Map数据结构,Map数据结构将用来记录统计数据,并被保存在缓存中。其中,数据结构的键是数据块的哈希,而值是一个名为哈希引用对象(hash_ref_obj)的数据结构,它包含以下信息,如图4所示,struct hash_ref_obj{bitis_present_on_target_server;bitmap backups_bitmap;hash_ref_obj*next;};具体地:
1、一个一比特长度的标志位,用来表示一个哈希及它对应的数据块是否已经存在于远端服务器。对于每一个被该备份所引用的数据块,如果当前还没有以它的哈希为键的数据存放于统计数据中,需要发送一条哈希是否存在消息(is_hash_present)到远端服务器去查询该哈希是否已经存在。特别地,如果一个数据块已经被证实在远端服务器是存在的,那么基于Merkel树的特性,在Merkel树结构中,属于该数据块下层的所有子孙数据块也一定是存在的,所以,这些子孙数据块的查询结果可以直接被放入到统计数据中。
2、一个比特位图,用于记录哪些备份引用了这个数据块。根据不同的系统规模,该比特位图会有不同的长度。例如,32字节长度的位图可以最多表示有256个备份引用了某一个数据块。
3、指向下一个哈希引用对象(hash_ref_obj)数据结构的指针。这个指针主要用于在超大规模的系统中,一个比特位图的长度不足以记录下所有引用了同一数据块的备份时使用。
需要说明的是,上述处理可以在多个目标复制备份数据上并发地执行。
在步骤302中,作业文件包括:哈希及其对应的可变字节长度的备份引用位图,其中,备份引用位图为引用该数据块的目标复制备份数据的比特位图。
也就是说,在步骤302中,一旦遍历并查询完成,只有那些被确认了不存在于远端服务器的数据块记录会被保存成作业文件,保存在各个数据节点上。图5展示了作业文件的格式。在作业文件中,上述的比特位图的长度会根据真实的引用情况被调整。例如,如果一个数据块被8个备份所引用,那么1个字节的比特位图就足够了。作业文件的大小不会影响服务器的性能。以32个字节长的比特位图为例,520MB的文件就可以存储十亿条记录。
在步骤303中,根据作业文件并发地进行多个目标复制备份数据的复制具体包括:
在作业文件中保存传输失败的数据块记录,也就是说,1.不把对应于传输失败的数据块的记录从作业文件中删除,并读取该数据块的备份引用位图backups_bitmap,并将备份引用位图backups_bitmap以广播的形式发送到其他数据节点;
当接收到广播后,根据接收到的备份引用位图backups_bitmap,根据公式1更新本地预先设置的忽略匹配位skip_match_bits的值:
skip_match_bits=skip_match_bits│backups_bitmap 公式1;
其中,skip_match_bits表示忽略匹配位,backups_bitmap表示备份引用位图;
在根据作业文件发送某一数据块前,根据公式2对该数据块的备份引用位图与忽略匹配位进行比较:
still_referred_by_other_backups=(~(backups_bitmap&skip_match_bits))&backups_bitmap公式2;
其中,still_referred_by_other_backups表示仍然被其他备份引用;
如果比较结果still_referred_by_other_backups不等于零,则正常传输该数据块,否则,不传输该数据块;也就是说,如果比较结果still_referred_by_other_backups不等于零,说明这个数据块不仅是被已经发生传输错误的备份所引用,还被其他有效的备份所引用。那么这个数据块,就会被正常的传输。否则,复制过程就会跳过这个数据块,因为它只被发生错误的备份所引用,已经不需要再复制它了。
将复制失败的目标复制备份数据反馈给用户。如果将目标复制备份数据进行了编号,可以将复制失败的目标复制备份数据的编号反馈给用户。
在步骤303之后,成功地传输了所有的数据块表示整个复制过程是成功的。如果有收尾工作的话,例如封装备份,更新数据库等,就可以随之进行了。如果复制发生了错误,复制失败的备份的编号会被通知给用户。
图6展示了新的复制功能的实现。基于某些现有的负载均衡算法,远端备份服务器会合理地分配目的数据节点给源数据节点进行连接并发送数据。在图6中,用实线框住的hx代表远端服务器上已经存在此哈希,不需要再次复制哈希对应的数据块到远端服务器,用虚线框住的hx代表远端服务器不存在此哈希,需要复制哈希对应的数据块到远端服务器。
在步骤303中,可以在N+1天根据作业文件并发地进行多个目标复制备份数据的复制,其中,在第N天完成作业文件的保存。
具体地,在支持源端去重的备份系统中,为了进一步提高复制功能的用户体验和降低复制所需时间,上述数据挖掘算法还可以从整个复制过程中剥离出来。数据挖掘的过程可以在比预设的复制开始时间至少提前一天进行。为了使以下描述清晰易理解,假设数据挖掘已经在第N天完成,并且预设的复制时间是在第(N+1)天。两者的时间间隔可以根据具体的生产环境相应地调整。如果两次复制之间都有大量的新数据产生,数据计算过程无法在一天之内完成,用户可以延长时间间隔到两天及以上,并相应地调整计划复制时间。
这里,需要讨论一个特别的场景。几乎所有的基于哈希的备份系统都支持垃圾回收功能,它用来回收那些被已经过期的,无效的数据占用的磁盘空间。因为垃圾回收机制会改变目的复制服务器上的数据,所以如何正确地安排垃圾回收和数据挖掘的执行次序是至关重要的。为了保证查询结果的准确性,本方案会遵守以下原则:
1、在第N天,在远端服务器上的垃圾回收完成后,再向远端服务器发送查询消息。也就是说,在第N天,只有当目的服务器上的垃圾回收完成后,源存储节点才会发送is_hash_present(哈希是否存在)消息到目的服务器查询数据块的存在与否。否则,在垃圾回收中删除的数据块会导致之前的查询结果无效。
2、由于在源数据节点上针对每个备份执行数据挖掘算法的时间和真正的数据复制之间有一天的时间间隔,如果目的服务器上的某些数据块在查询当日是有效的,而在复制当日是过期的话,这样也会造成查询结果的不准确,导致该复制的数据没有被复制,这样会造成数据丢失。因此,目的备份服务器上的垃圾回收机制也要有相应的措施来处理这种情况。
了解垃圾回收是如何工作的有助于更好地理解本专利是如何处理以上两种场景的。首先,垃圾回收会为每个哈希值设置一个初始化值为零的引用计数,它代表了这个哈希以及它对应的数据块被备份数据引用的次数;然后,它会遍历每一个处于有效状态的备份数据,增加它所引用的每个哈希的引用计数。最后,那些引用计数为零的,也就是没有被任何有效备份所引用的哈希及其数据块占用的空间将会被回收重用。上述工作可能会被重复执行,直到没有零引用的哈希存在。
为了保证在第N天得到的查询结果在真实数据复制发生当日,也就是第(N+1)天,还是有效的,为每一个哈希记录引入了一个名为“StillValidOnReplication”(复制时仍然有效)的新标志位。在目的备份服务器执行这个特殊垃圾回收的时候,为那些将会在第(N+1)天过期而成为无效的备份单独计数。如果一个哈希记录只被这些即将过期的备份所引用,那么它的“StillValidOnReplication”标志位会被设置为零,意味着该哈希在复制发生时是无效的。因此在被源端查询时,该哈希会返回不存在,因此需要再次传输。但是对应的数据块并不会被回收,毕竟当前他们还是有效的。最终,只有那些在第(N+1)天,也就是复制发生的当天,仍然有效的哈希记录的StillValidOnReplication(复制时仍然有效)标志位才会被设置为1。图7展示了一种可行的哈希记录数据结构。具体处理步骤如下:
步骤1,将记录的哈希设置一个复制时仍然有效标志位;
步骤2,在第N天执行垃圾回收操作时,将在N+1天即将过期而成为无效目标复制备份数据的进行特殊计数;
步骤3,根据特殊计数,如果一个记录的哈希只被在N+1天即将过期的目标复制备份数据所引用时,将复制时仍然有效标志位设置为零;
步骤4,在接收到哈希是否存在查询消息时,如果复制时仍然有效标志位为零,则返回哈希不存在消息,否则,回复哈希存在消息;
步骤5,在垃圾回收完成后,发送垃圾回收完成通知。
从上面的处理可以看出,有了这个提前计算的标志位,当源端存储节点查询哈希对应的数据块在复制当日是否已经存在的时候,目的服务器会根据这一标志位返回结果。
当所有的目的服务器都执行完了特殊垃圾回收,所有的源端服务器会得到通知,开始并行的进行查询工作。在第(N+1)天,预定的复制工作将在所有的源端数据节点上,根据生成的工作文件并行地展开。
对于那些在数据挖掘查询后才新创建的备份,仍然可以按照原有的方式进行复制。
如果用户有多台源服务器连接到同一台目的备份服务器,为了避免相互干扰,推荐的最佳方式时以一种合理的方式安排各个源服务器的复制时间。图8展示了一种可行的安排方式。
综上,借助于本发明实施例的技术方案:
避免了不必要的数据传输,极大地提升了复制的效率。备份数据块将会在源端数据节点和目的端数据节点间直接传输,源端控制节点将不再是性能瓶颈。
复制的粒度从整个备份数据减小为了单独的数据块。通过数据挖掘查询,会找到那些被多个备份共享的数据块,这些共享数据块只会被查询和传输一次,避免了大量重复的数据查询和数据传输。
用于为每个源端数据节点产生作业文件的数据挖掘算法可以从复制过程中剥离出来,减少复制所需时间,为用户提供更好的使用体验。
传输数据的查询结果是准确的。可能会影响查询准确性的多个场景,比如垃圾回收,都被考虑到了。
装置实施例一
根据本发明的实施例,提供了一种适用于基于哈希的多节点备份系统的数据备份装置,设置于数据节点中,包括确定数据块是否需要被传输的数据挖掘的模块(统计记录模块90和保存模块92)和复制模块94,可用于优化基于哈希的多节点备份系统之间的数据复制。本发明实施例的所有处理均是在数据节点中执行,具体地,在基于哈希的备份系统中,备份会被组织成一颗Merkel树,所有的数据切片会被均匀的存储在多个数据节点中。那么,自然地,数据复制就应该从源数据节点发起,而不是控制节点。当所有的数据块被传输到目的服务器后,代表被复制的目标复制备份数据的Merkel树也就自动地建立起来了。
图9是本发明装置实施例一的适用于基于哈希的多节点备份系统的数据备份装置的示意图,如图9所示,根据本发明实施例的适用于基于哈希的多节点备份系统的数据备份装置具体包括:
统计记录模块90,用于遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及所述数据块是否存在于远端服务器;
保存模块92,用于将不存在于远端服务器的数据块在本地保存为作业文件;
复制模块94,用于根据所述作业文件并发地进行多个目标复制备份数据的复制。
以下结合附图,对本发明实施例的上述各个步骤进行详细说明。
在保存模块92中,为了方便遍历各个目标复制备份数据,可以预先对计划要复制到远端服务器的目标复制备份数据进行编号,并基于编号遍历本地存储的目标复制备份数据。此外,如图4所示,还可以采用预定数据结构记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器,其中,预定数据结构的键为数据块的哈希,键的键值为哈希引用对象,哈希引用对象采用一个比特标志位标识哈希及其对应的数据块是否已经存在于远端服务器,采用一个比特位图标识哪些目标复制备份数据引用了该数据块,在一个比特位图的长度不足以记录下所有引用了同一数据块的目标复制备份数据时,采用指针指向对应的下一个哈希引用对象。在本发明实施例中,对于被目标复制备份数据所引用的数据块,如果当前还没有以其哈希为键的数据存储于统计数据中时,向远端服务器发送哈希是否存在查询消息(即下述哈希是否存在消息(is_hash_present)),并根据查询结果对该数据块进行统计,其中,如果该哈希值已经存在于远端服务器,则属于该数据块下层的所有子孙数据块也存在于远端服务器,则根据查询结果对该数据块下层的子孙数据块进行统计。
具体地,图4展示了的预定数据结构即Map数据结构,Map数据结构将用来记录统计数据,并被保存在缓存中。其中,数据结构的键是数据块的哈希,而值是一个名为哈希引用对象(hash_ref_obj)的数据结构,它包含以下信息:
1、一个一比特长度的标志位,用来表示一个哈希及它对应的数据块是否已经存在于远端服务器。对于每一个被该备份所引用的数据块,如果当前还没有以它的哈希为键的数据存放于统计数据中,需要发送一条哈希是否存在消息(is_hash_present)到远端服务器去查询该哈希是否已经存在。特别地,如果一个数据块已经被证实在远端服务器是存在的,那么基于Merkel树的特性,在Merkel树结构中,属于该数据块下层的所有子孙数据块也一定是存在的,所以,这些子孙数据块的查询结果可以直接被放入到统计数据中。
2、一个比特位图,用于记录哪些备份引用了这个数据块。根据不同的系统规模,该比特位图会有不同的长度。例如,32字节长度的位图可以最多表示有256个备份引用了某一个数据块。
3、指向下一个哈希引用对象(hash_ref_obj)数据结构的指针。这个指针主要用于在超大规模的系统中,一个比特位图的长度不足以记录下所有引用了同一数据块的备份时使用。
需要说明的是,上述处理可以在多个目标复制备份数据上并发地执行。
在保存模块92中,作业文件包括:哈希及其对应的可变字节长度的备份引用位图,其中,备份引用位图为引用该数据块的目标复制备份数据的比特位图。
也就是说,在保存模块92中,一旦遍历并查询完成,只有那些被确认了不存在于远端服务器的数据块记录会被保存成作业文件,保存在各个数据节点上。图5展示了作业文件的格式。在作业文件中,上述的比特位图的长度会根据真实的引用情况被调整。例如,如果一个数据块被8个备份所引用,那么1个字节的比特位图就足够了。作业文件的大小不会影响服务器的性能。以32个字节长的比特位图为例,520MB的文件就可以存储十亿条记录。
在复制模块94中,根据作业文件并发地进行多个目标复制备份数据的复制具体包括:
在作业文件中保存传输失败的数据块记录,也就是说,1.不把对应于传输失败的数据块的记录从作业文件中删除,并读取该数据块的备份引用位图backups_bitmap,并将备份引用位图backups_bitmap以广播的形式发送到其他数据节点;
当接收到广播后,根据接收到的备份引用位图backups_bitmap,根据公式1更新本地预先设置的忽略匹配位skip_match_bits的值:
skip_match_bits=skip_match_bits│backups_bitmap 公式1;
其中,skip_match_bits表示忽略匹配位,backups_bitmap表示备份引用位图;
在根据作业文件发送某一数据块前,根据公式2对该数据块的备份引用位图与忽略匹配位进行比较:
still_referred_by_other_backups=(~(backups_bitmap&skip_match_bits))&backups_bitmap公式2;
其中,still_referred_by_other_backups表示仍然被其他备份引用;
如果比较结果still_referred_by_other_backups不等于零,则正常传输该数据块,否则,不传输该数据块;也就是说,如果比较结果still_referred_by_other_backups不等于零,说明这个数据块不仅是被已经发生传输错误的备份所引用,还被其他有效的备份所引用。那么这个数据块,就会被正常的传输。否则,复制过程就会跳过这个数据块,因为它只被发生错误的备份所引用,已经不需要再复制它了。
将复制失败的目标复制备份数据反馈给用户。如果将目标复制备份数据进行了编号,可以将复制失败的目标复制备份数据的编号反馈给用户。
复制模块94成功地传输了所有的数据块表示整个复制过程是成功的。如果有收尾工作的话,例如封装备份,更新数据库等,就可以随之进行了。如果复制发生了错误,复制失败的备份的编号会被通知给用户。
图6展示了新的复制功能的实现。基于某些现有的负载均衡算法,远端备份服务器会合理地分配目的数据节点给源数据节点进行连接并发送数据。在图6中,用实线框住的hx代表远端服务器上已经存在此哈希,不需要再次复制哈希对应的数据块到远端服务器,用虚线框住的hx代表远端服务器不存在此哈希,需要复制哈希对应的数据块到远端服务器。
在复制模块94中,可以在N+1天根据作业文件并发地进行多个目标复制备份数据的复制,其中,在第N天完成作业文件的保存。
具体地,在支持源端去重的备份系统中,为了进一步提高复制功能的用户体验和降低复制所需时间,上述数据挖掘算法还可以从整个复制过程中剥离出来。数据挖掘的过程可以在比预设的复制开始时间至少提前一天进行。为了使以下描述清晰易理解,假设数据挖掘已经在第N天完成,并且预设的复制时间是在第(N+1)天。两者的时间间隔可以根据具体的生产环境相应地调整。如果两次复制之间都有大量的新数据产生,数据计算过程无法在一天之内完成,用户可以延长时间间隔到两天及以上,并相应地调整计划复制时间。
这里,需要讨论一个特别的场景。几乎所有的基于哈希的备份系统都支持垃圾回收功能,它用来回收那些被已经过期的,无效的数据占用的磁盘空间。因为垃圾回收机制会改变目的复制服务器上的数据,所以如何正确地安排垃圾回收和数据挖掘的执行次序是至关重要的。为了保证查询结果的准确性,本方案会遵守以下原则:
1、在第N天,在远端服务器上的垃圾回收完成后,再向远端服务器发送查询消息。也就是说,在第N天,只有当目的服务器上的垃圾回收完成后,源存储节点才会发送is_hash_present(哈希是否存在)消息到目的服务器查询数据块的存在与否。否则,在垃圾回收中删除的数据块会导致之前的查询结果无效。
2、由于在源数据节点上针对每个备份执行数据挖掘算法的时间和真正的数据复制之间有一天的时间间隔,如果目的服务器上的某些数据块在查询当日是有效的,而在复制当日是过期的话,这样也会造成查询结果的不准确,导致该复制的数据没有被复制,这样会造成数据丢失。因此,目的备份服务器上的垃圾回收机制也要有相应的措施来处理这种情况。
了解垃圾回收是如何工作的有助于更好地理解本专利是如何处理以上两种场景的。首先,垃圾回收会为每个哈希值设置一个初始化值为零的引用计数,它代表了这个哈希以及它对应的数据块被备份数据引用的次数;然后,它会遍历每一个处于有效状态的备份数据,增加它所引用的每个哈希的引用计数。最后,那些引用计数为零的,也就是没有被任何有效备份所引用的哈希及其数据块占用的空间将会被回收重用。上述工作可能会被重复执行,直到没有零引用的哈希存在。
为了保证在第N天得到的查询结果在真实数据复制发生当日,也就是第(N+1)天,还是有效的,本发明实施例的装置还包括一个回收模块,回收模块为每一个哈希记录引入了一个名为“StillValidOnReplication”(复制时仍然有效)的新标志位。在目的备份服务器执行这个特殊垃圾回收的时候,为那些将会在第(N+1)天过期而成为无效的备份单独计数。如果一个哈希记录只被这些即将过期的备份所引用,那么它的“StillValidOnReplication”标志位会被设置为零,意味着该哈希在复制发生时是无效的。因此在被源端查询时,该哈希会返回不存在,因此需要再次传输。但是对应的数据块并不会被回收,毕竟当前他们还是有效的。最终,只有那些在第(N+1)天,也就是复制发生的当天,仍然有效的哈希记录的StillValidOnReplication(复制时仍然有效)标志位才会被设置为1。图7展示了一种可行的哈希记录数据结构,回收模块具体用于:
将记录的哈希设置一个复制时仍然有效标志位;
在第N天执行垃圾回收操作时,将在N+1天即将过期而成为无效目标复制备份数据的进行特殊计数;
根据特殊计数,如果一个记录的哈希只被在N+1天即将过期的目标复制备份数据所引用时,将复制时仍然有效标志位设置为零;
在接收到哈希是否存在查询消息时,如果复制时仍然有效标志位为零,则返回哈希不存在消息,否则,回复哈希存在消息;
在垃圾回收完成后,发送垃圾回收完成通知。
从上面的处理可以看出,有了这个提前计算的标志位,当源端存储节点查询哈希对应的数据块在复制当日是否已经存在的时候,目的服务器会根据这一标志位返回结果。
当所有的目的服务器都执行完了特殊垃圾回收,所有的源端服务器会得到通知,开始并行的进行查询工作。在第(N+1)天,预定的复制工作将在所有的源端数据节点上,根据生成的工作文件并行地展开。
对于那些在数据挖掘查询后才新创建的备份,仍然可以按照原有的方式进行复制。
如果用户有多台源服务器连接到同一台目的备份服务器,为了避免相互干扰,推荐的最佳方式时以一种合理的方式安排各个源服务器的复制时间。图8展示了一种可行的安排方式。
综上,借助于本发明实施例的技术方案:
避免了不必要的数据传输,极大地提升了复制的效率。备份数据块将会在源端数据节点和目的端数据节点间直接传输,源端控制节点将不再是性能瓶颈。
复制的粒度从整个备份数据减小为了单独的数据块。通过数据挖掘查询,会找到那些被多个备份共享的数据块,这些共享数据块只会被查询和传输一次,避免了大量重复的数据查询和数据传输。
用于为每个源端数据节点产生作业文件的数据挖掘算法可以从复制过程中剥离出来,减少复制所需时间,为用户提供更好的使用体验。
传输数据的查询结果是准确的。可能会影响查询准确性的多个场景,比如垃圾回收,都被考虑到了。
装置实施例二
本发明实施例提供一种适用于基于哈希的多节点备份系统的数据备份装置,设置于数据节点中,如图10所示,包括:存储器1010、处理器1020及存储在所述存储器1010上并可在所述处理器1020上运行的计算机程序,所述计算机程序被所述处理器1020执行时实现如下方法步骤:
步骤301,遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器;
步骤302,将不存在于远端服务器的数据块在本地保存为作业文件;
步骤303,根据作业文件并发地进行多个目标复制备份数据的复制。
以下结合附图,对本发明实施例的上述各个步骤进行详细说明。
在步骤301中,为了方便遍历各个目标复制备份数据,可以预先对计划要复制到远端服务器的目标复制备份数据进行编号,并基于编号遍历本地存储的目标复制备份数据。此外,如图4所示,还可以采用预定数据结构记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器,其中,预定数据结构的键为数据块的哈希,键的键值为哈希引用对象,哈希引用对象采用一个比特标志位标识哈希及其对应的数据块是否已经存在于远端服务器,采用一个比特位图标识哪些目标复制备份数据引用了该数据块,在一个比特位图的长度不足以记录下所有引用了同一数据块的目标复制备份数据时,采用指针指向对应的下一个哈希引用对象。在本发明实施例中,对于被目标复制备份数据所引用的数据块,如果当前还没有以其哈希为键的数据存储于统计数据中时,向远端服务器发送哈希是否存在查询消息(即下述哈希是否存在消息(is_hash_present)),并根据查询结果对该数据块进行统计,其中,如果该哈希值已经存在于远端服务器,则属于该数据块下层的所有子孙数据块也存在于远端服务器,则根据查询结果对该数据块下层的子孙数据块进行统计。
具体地,图4展示了的预定数据结构即Map数据结构,Map数据结构将用来记录统计数据,并被保存在缓存中。其中,数据结构的键是数据块的哈希,而值是一个名为哈希引用对象(hash_ref_obj)的数据结构,它包含以下信息:
1、一个一比特长度的标志位,用来表示一个哈希及它对应的数据块是否已经存在于远端服务器。对于每一个被该备份所引用的数据块,如果当前还没有以它的哈希为键的数据存放于统计数据中,需要发送一条哈希是否存在消息(is_hash_present)到远端服务器去查询该哈希是否已经存在。特别地,如果一个数据块已经被证实在远端服务器是存在的,那么基于Merkel树的特性,在Merkel树结构中,属于该数据块下层的所有子孙数据块也一定是存在的,所以,这些子孙数据块的查询结果可以直接被放入到统计数据中。
2、一个比特位图,用于记录哪些备份引用了这个数据块。根据不同的系统规模,该比特位图会有不同的长度。例如,32字节长度的位图可以最多表示有256个备份引用了某一个数据块。
3、指向下一个哈希引用对象(hash_ref_obj)数据结构的指针。这个指针主要用于在超大规模的系统中,一个比特位图的长度不足以记录下所有引用了同一数据块的备份时使用。
需要说明的是,上述处理可以在多个目标复制备份数据上并发地执行。
在步骤302中,作业文件包括:哈希及其对应的可变字节长度的备份引用位图,其中,备份引用位图为引用该数据块的目标复制备份数据的比特位图。
也就是说,在步骤302中,一旦遍历并查询完成,只有那些被确认了不存在于远端服务器的数据块记录会被保存成作业文件,保存在各个数据节点上。图5展示了作业文件的格式。在作业文件中,上述的比特位图的长度会根据真实的引用情况被调整。例如,如果一个数据块被8个备份所引用,那么1个字节的比特位图就足够了。作业文件的大小不会影响服务器的性能。以32个字节长的比特位图为例,520MB的文件就可以存储十亿条记录。
在步骤303中,根据作业文件并发地进行多个目标复制备份数据的复制具体包括:
在作业文件中保存传输失败的数据块记录,也就是说,1.不把对应于传输失败的数据块的记录从作业文件中删除,并读取该数据块的备份引用位图backups_bitmap,并将备份引用位图backups_bitmap以广播的形式发送到其他数据节点;
当接收到广播后,根据接收到的备份引用位图backups_bitmap,根据公式1更新本地预先设置的忽略匹配位skip_match_bits的值:
skip_match_bits=skip_match_bits│backups_bitmap 公式1;
其中,skip_match_bits表示忽略匹配位,backups_bitmap表示备份引用位图;
在根据作业文件发送某一数据块前,根据公式2对该数据块的备份引用位图与忽略匹配位进行比较:
still_referred_by_other_backups=(~(backups_bitmap&skip_match_bits))&backups_bitmap公式2;
其中,still_referred_by_other_backups表示仍然被其他备份引用;
如果比较结果still_referred_by_other_backups不等于零,则正常传输该数据块,否则,不传输该数据块;也就是说,如果比较结果still_referred_by_other_backups不等于零,说明这个数据块不仅是被已经发生传输错误的备份所引用,还被其他有效的备份所引用。那么这个数据块,就会被正常的传输。否则,复制过程就会跳过这个数据块,因为它只被发生错误的备份所引用,已经不需要再复制它了。
将复制失败的目标复制备份数据反馈给用户。如果将目标复制备份数据进行了编号,可以将复制失败的目标复制备份数据的编号反馈给用户。
在步骤303之后,成功地传输了所有的数据块表示整个复制过程是成功的。如果有收尾工作的话,例如封装备份,更新数据库等,就可以随之进行了。如果复制发生了错误,复制失败的备份的编号会被通知给用户。
图6展示了新的复制功能的实现。基于某些现有的负载均衡算法,远端备份服务器会合理地分配目的数据节点给源数据节点进行连接并发送数据。在图6中,用实线框住的hx代表远端服务器上已经存在此哈希,不需要再次复制哈希对应的数据块到远端服务器,用虚线框住的hx代表远端服务器不存在此哈希,需要复制哈希对应的数据块到远端服务器。
在步骤303中,可以在N+1天根据作业文件并发地进行多个目标复制备份数据的复制,其中,在第N天完成作业文件的保存。
具体地,在支持源端去重的备份系统中,为了进一步提高复制功能的用户体验和降低复制所需时间,上述数据挖掘算法还可以从整个复制过程中剥离出来。数据挖掘的过程可以在比预设的复制开始时间至少提前一天进行。为了使以下描述清晰易理解,假设数据挖掘已经在第N天完成,并且预设的复制时间是在第(N+1)天。两者的时间间隔可以根据具体的生产环境相应地调整。如果两次复制之间都有大量的新数据产生,数据计算过程无法在一天之内完成,用户可以延长时间间隔到两天及以上,并相应地调整计划复制时间。
这里,需要讨论一个特别的场景。几乎所有的基于哈希的备份系统都支持垃圾回收功能,它用来回收那些被已经过期的,无效的数据占用的磁盘空间。因为垃圾回收机制会改变目的复制服务器上的数据,所以如何正确地安排垃圾回收和数据挖掘的执行次序是至关重要的。为了保证查询结果的准确性,本方案会遵守以下原则:
1、在第N天,在远端服务器上的垃圾回收完成后,再向远端服务器发送查询消息。也就是说,在第N天,只有当目的服务器上的垃圾回收完成后,源存储节点才会发送is_hash_present(哈希是否存在)消息到目的服务器查询数据块的存在与否。否则,在垃圾回收中删除的数据块会导致之前的查询结果无效。
2、由于在源数据节点上针对每个备份执行数据挖掘算法的时间和真正的数据复制之间有一天的时间间隔,如果目的服务器上的某些数据块在查询当日是有效的,而在复制当日是过期的话,这样也会造成查询结果的不准确,导致该复制的数据没有被复制,这样会造成数据丢失。因此,目的备份服务器上的垃圾回收机制也要有相应的措施来处理这种情况。
了解垃圾回收是如何工作的有助于更好地理解本专利是如何处理以上两种场景的。首先,垃圾回收会为每个哈希值设置一个初始化值为零的引用计数,它代表了这个哈希以及它对应的数据块被备份数据引用的次数;然后,它会遍历每一个处于有效状态的备份数据,增加它所引用的每个哈希的引用计数。最后,那些引用计数为零的,也就是没有被任何有效备份所引用的哈希及其数据块占用的空间将会被回收重用。上述工作可能会被重复执行,直到没有零引用的哈希存在。
为了保证在第N天得到的查询结果在真实数据复制发生当日,也就是第(N+1)天,还是有效的,为每一个哈希记录引入了一个名为“StillValidOnReplication”(复制时仍然有效)的新标志位。在目的备份服务器执行这个特殊垃圾回收的时候,为那些将会在第(N+1)天过期而成为无效的备份单独计数。如果一个哈希记录只被这些即将过期的备份所引用,那么它的“StillValidOnReplication”标志位会被设置为零,意味着该哈希在复制发生时是无效的。因此在被源端查询时,该哈希会返回不存在,因此需要再次传输。但是对应的数据块并不会被回收,毕竟当前他们还是有效的。最终,只有那些在第(N+1)天,也就是复制发生的当天,仍然有效的哈希记录的StillValidOnReplication(复制时仍然有效)标志位才会被设置为1。图7展示了一种可行的哈希记录数据结构。具体处理步骤如下:
步骤1,将记录的哈希设置一个复制时仍然有效标志位;
步骤2,在第N天执行垃圾回收操作时,将在N+1天即将过期而成为无效目标复制备份数据的进行特殊计数;
步骤3,根据特殊计数,如果一个记录的哈希只被在N+1天即将过期的目标复制备份数据所引用时,将复制时仍然有效标志位设置为零;
步骤4,在接收到哈希是否存在查询消息时,如果复制时仍然有效标志位为零,则返回哈希不存在消息,否则,回复哈希存在消息;
步骤5,在垃圾回收完成后,发送垃圾回收完成通知。
从上面的处理可以看出,有了这个提前计算的标志位,当源端存储节点查询哈希对应的数据块在复制当日是否已经存在的时候,目的服务器会根据这一标志位返回结果。
当所有的目的服务器都执行完了特殊垃圾回收,所有的源端服务器会得到通知,开始并行的进行查询工作。在第(N+1)天,预定的复制工作将在所有的源端数据节点上,根据生成的工作文件并行地展开。
对于那些在数据挖掘查询后才新创建的备份,仍然可以按照原有的方式进行复制。
如果用户有多台源服务器连接到同一台目的备份服务器,为了避免相互干扰,推荐的最佳方式时以一种合理的方式安排各个源服务器的复制时间。图8展示了一种可行的安排方式。
综上,借助于本发明实施例的技术方案:
避免了不必要的数据传输,极大地提升了复制的效率。备份数据块将会在源端数据节点和目的端数据节点间直接传输,源端控制节点将不再是性能瓶颈。
复制的粒度从整个备份数据减小为了单独的数据块。通过数据挖掘查询,会找到那些被多个备份共享的数据块,这些共享数据块只会被查询和传输一次,避免了大量重复的数据查询和数据传输。
用于为每个源端数据节点产生作业文件的数据挖掘算法可以从复制过程中剥离出来,减少复制所需时间,为用户提供更好的使用体验。
传输数据的查询结果是准确的。可能会影响查询准确性的多个场景,比如垃圾回收,都被考虑到了。
装置实施例三
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传输的实现程序,所述程序被处理器1020执行时实现如下方法步骤:
步骤301,遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器;
步骤302,将不存在于远端服务器的数据块在本地保存为作业文件;
步骤303,根据作业文件并发地进行多个目标复制备份数据的复制。
以下结合附图,对本发明实施例的上述各个步骤进行详细说明。
在步骤301中,为了方便遍历各个目标复制备份数据,可以预先对计划要复制导远端服务器的目标复制备份数据进行编号,并基于编号遍历本地存储的目标复制备份数据。此外,如图4所示,还可以采用预定数据结构记录各个目标复制备份数据所引用的数据块以及数据块是否存在于远端服务器,其中,预定数据结构的键为数据块的哈希,键的键值为哈希引用对象,哈希引用对象采用一个比特标志位标识哈希及其对应的数据块是否已经存在于远端服务器,采用一个比特位图标识哪些目标复制备份数据引用了该数据块,在一个比特位图的长度不足以记录下所有引用了同一数据块的目标复制备份数据时,采用指针指向对应的下一个哈希引用对象。在本发明实施例中,对于被目标复制备份数据所引用的数据块,如果当前还没有以其哈希为键的数据存储于统计数据中时,向远端服务器发送哈希是否存在查询消息(即下述哈希是否存在消息(is_hash_present)),并根据查询结果对该数据块进行统计,其中,如果该哈希值已经存在于远端服务器,则属于该数据块下层的所有子孙数据块也存在于远端服务器,则根据查询结果对该数据块下层的子孙数据块进行统计。
具体地,图4展示了的预定数据结构即Map数据结构,Map数据结构将用来记录统计数据,并被保存在缓存中。其中,数据结构的键是数据块的哈希,而值是一个名为哈希引用对象(hash_ref_obj)的数据结构,它包含以下信息:
1、一个一比特长度的标志位,用来表示一个哈希及它对应的数据块是否已经存在于远端服务器。对于每一个被该备份所引用的数据块,如果当前还没有以它的哈希为键的数据存放于统计数据中,需要发送一条哈希是否存在消息(is_hash_present)到远端服务器去查询该哈希是否已经存在。特别地,如果一个数据块已经被证实在远端服务器是存在的,那么基于Merkel树的特性,在Merkel树结构中,属于该数据块下层的所有子孙数据块也一定是存在的,所以,这些子孙数据块的查询结果可以直接被放入到统计数据中。
2、一个比特位图,用于记录哪些备份引用了这个数据块。根据不同的系统规模,该比特位图会有不同的长度。例如,32字节长度的位图可以最多表示有256个备份引用了某一个数据块。
3、指向下一个哈希引用对象(hash_ref_obj)数据结构的指针。这个指针主要用于在超大规模的系统中,一个比特位图的长度不足以记录下所有引用了同一数据块的备份时使用。
需要说明的是,上述处理可以在多个目标复制备份数据上并发地执行。
在步骤302中,作业文件包括:哈希及其对应的可变字节长度的备份引用位图,其中,备份引用位图为引用该数据块的目标复制备份数据的比特位图。
也就是说,在步骤302中,一旦遍历并查询完成,只有那些被确认了不存在于远端服务器的数据块记录会被保存成作业文件,保存在各个数据节点上。图5展示了作业文件的格式。在作业文件中,上述的比特位图的长度会根据真实的引用情况被调整。例如,如果一个数据块被8个备份所引用,那么1个字节的比特位图就足够了。作业文件的大小不会影响服务器的性能。以32个字节长的比特位图为例,520MB的文件就可以存储十亿条记录。
在步骤303中,根据作业文件并发地进行多个目标复制备份数据的复制具体包括:
在作业文件中保存传输失败的数据块记录,也就是说,1.不把对应于传输失败的数据块的记录从作业文件中删除,并读取该数据块的备份引用位图backups_bitmap,并将备份引用位图backups_bitmap以广播的形式发送到其他数据节点;
当接收到广播后,根据接收到的备份引用位图backups_bitmap,根据公式1更新本地预先设置的忽略匹配位skip_match_bits的值:
skip_match_bits=skip_match_bits│backups_bitmap 公式1;
其中,skip_match_bits表示忽略匹配位,backups_bitmap表示备份引用位图;
在根据作业文件发送某一数据块前,根据公式2对该数据块的备份引用位图与忽略匹配位进行比较:
still_referred_by_other_backups=(~(backups_bitmap&skip_match_bits))&backups_bitmap公式2;
其中,still_referred_by_other_backups表示仍然被其他备份引用;
如果比较结果still_referred_by_other_backups不等于零,则正常传输该数据块,否则,不传输该数据块;也就是说,如果比较结果still_referred_by_other_backups不等于零,说明这个数据块不仅是被已经发生传输错误的备份所引用,还被其他有效的备份所引用。那么这个数据块,就会被正常的传输。否则,复制过程就会跳过这个数据块,因为它只被发生错误的备份所引用,已经不需要再复制它了。
将复制失败的目标复制备份数据反馈给用户。如果将目标复制备份数据进行了编号,可以将复制失败的目标复制备份数据的编号反馈给用户。
在步骤303之后,成功地传输了所有的数据块表示整个复制过程是成功的。如果有收尾工作的话,例如封装备份,更新数据库等,就可以随之进行了。如果复制发生了错误,复制失败的备份的编号会被通知给用户。
图6展示了新的复制功能的实现。基于某些现有的负载均衡算法,远端备份服务器会合理地分配目的数据节点给源数据节点进行连接并发送数据。在图6中,用实线框住的hx代表远端服务器上已经存在此哈希,不需要再次复制哈希对应的数据块到远端服务器,用虚线框住的hx代表远端服务器不存在此哈希,需要复制哈希对应的数据块到远端服务器。
在步骤303中,可以在N+1天根据作业文件并发地进行多个目标复制备份数据的复制,其中,在第N天完成作业文件的保存。
具体地,在支持源端去重的备份系统中,为了进一步提高复制功能的用户体验和降低复制所需时间,上述数据挖掘算法还可以从整个复制过程中剥离出来。数据挖掘的过程可以在比预设的复制开始时间至少提前一天进行。为了使以下描述清晰易理解,假设数据挖掘已经在第N天完成,并且预设的复制时间是在第(N+1)天。两者的时间间隔可以根据具体的生产环境相应地调整。如果两次复制之间都有大量的新数据产生,数据计算过程无法在一天之内完成,用户可以延长时间间隔到两天及以上,并相应地调整计划复制时间。
这里,需要讨论一个特别的场景。几乎所有的基于哈希的备份系统都支持垃圾回收功能,它用来回收那些被已经过期的,无效的数据占用的磁盘空间。因为垃圾回收机制会改变目的复制服务器上的数据,所以如何正确地安排垃圾回收和数据挖掘的执行次序是至关重要的。为了保证查询结果的准确性,本方案会遵守以下原则:
1、在第N天,在远端服务器上的垃圾回收完成后,再向远端服务器发送查询消息。也就是说,在第N天,只有当目的服务器上的垃圾回收完成后,源存储节点才会发送is_hash_present(哈希是否存在)消息到目的服务器查询数据块的存在与否。否则,在垃圾回收中删除的数据块会导致之前的查询结果无效。
2、由于在源数据节点上针对每个备份执行数据挖掘算法的时间和真正的数据复制之间有一天的时间间隔,如果目的服务器上的某些数据块在查询当日是有效的,而在复制当日是过期的话,这样也会造成查询结果的不准确,导致该复制的数据没有被复制,这样会造成数据丢失。因此,目的备份服务器上的垃圾回收机制也要有相应的措施来处理这种情况。
了解垃圾回收是如何工作的有助于更好地理解本专利是如何处理以上两种场景的。首先,垃圾回收会为每个哈希值设置一个初始化值为零的引用计数,它代表了这个哈希以及它对应的数据块被备份数据引用的次数;然后,它会遍历每一个处于有效状态的备份数据,增加它所引用的每个哈希的引用计数。最后,那些引用计数为零的,也就是没有被任何有效备份所引用的哈希及其数据块占用的空间将会被回收重用。上述工作可能会被重复执行,直到没有零引用的哈希存在。
为了保证在第N天得到的查询结果在真实数据复制发生当日,也就是第(N+1)天,还是有效的,为每一个哈希记录引入了一个名为“StillValidOnReplication”(复制时仍然有效)的新标志位。在目的备份服务器执行这个特殊垃圾回收的时候,为那些将会在第(N+1)天过期而成为无效的备份单独计数。如果一个哈希记录只被这些即将过期的备份所引用,那么它的“StillValidOnReplication”标志位会被设置为零,意味着该哈希在复制发生时是无效的。因此在被源端查询时,该哈希会返回不存在,因此需要再次传输。但是对应的数据块并不会被回收,毕竟当前他们还是有效的。最终,只有那些在第(N+1)天,也就是复制发生的当天,仍然有效的哈希记录的StillValidOnReplication(复制时仍然有效)标志位才会被设置为1。图7展示了一种可行的哈希记录数据结构。具体处理步骤如下:
步骤1,将记录的哈希设置一个复制时仍然有效标志位;
步骤2,在第N天执行垃圾回收操作时,将在N+1天即将过期而成为无效目标复制备份数据的进行特殊计数;
步骤3,根据特殊计数,如果一个记录的哈希只被在N+1天即将过期的目标复制备份数据所引用时,将复制时仍然有效标志位设置为零;
步骤4,在接收到哈希是否存在查询消息时,如果复制时仍然有效标志位为零,则返回哈希不存在消息,否则,回复哈希存在消息;
步骤5,在垃圾回收完成后,发送垃圾回收完成通知。
从上面的处理可以看出,有了这个提前计算的标志位,当源端存储节点查询哈希对应的数据块在复制当日是否已经存在的时候,目的服务器会根据这一标志位返回结果。
当所有的目的服务器都执行完了特殊垃圾回收,所有的源端服务器会得到通知,开始并行的进行查询工作。在第(N+1)天,预定的复制工作将在所有的源端数据节点上,根据生成的工作文件并行地展开。
对于那些在数据挖掘查询后才新创建的备份,仍然可以按照原有的方式进行复制。
如果用户有多台源服务器连接到同一台目的备份服务器,为了避免相互干扰,推荐的最佳方式时以一种合理的方式安排各个源服务器的复制时间。图8展示了一种可行的安排方式。
综上,借助于本发明实施例的技术方案:
避免了不必要的数据传输,极大地提升了复制的效率。备份数据块将会在源端数据节点和目的端数据节点间直接传输,源端控制节点将不再是性能瓶颈。
复制的粒度从整个备份数据减小为了单独的数据块。通过数据挖掘查询,会找到那些被多个备份共享的数据块,这些共享数据块只会被查询和传输一次,避免了大量重复的数据查询和数据传输。
用于为每个源端数据节点产生作业文件的数据挖掘算法可以从复制过程中剥离出来,减少复制所需时间,为用户提供更好的使用体验。
传输数据的查询结果是准确的。可能会影响查询准确性的多个场景,比如垃圾回收,都被考虑到了。
本实施例所述计算机可读存储介质包括但不限于为:ROM、RAM、磁盘或光盘等。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种适用于基于哈希的多节点备份系统的数据备份方法,其特征在于,在数据节点中执行以下处理:
遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及所述数据块是否存在于远端服务器;
将不存在于远端服务器的数据块在本地保存为作业文件;
根据所述作业文件并发地进行多个目标复制备份数据的复制。
2.如权利要求1所述的方法,其特征在于,遍历本地存储的目标复制备份数据具体包括:
对计划要复制到远端服务器的目标复制备份数据进行编号,并基于所述编号遍历本地存储的目标复制备份数据。
3.如权利要求1所述的方法,其特征在于,统计并记录各个目标复制备份数据所引用的数据块以及所述数据块是否存在于远端服务器具体包括:
采用预定数据结构记录各个目标复制备份数据所引用的数据块以及所述数据块是否存在于远端服务器,其中,所述预定数据结构的键为数据块的哈希,所述键的键值为哈希引用对象,所述哈希引用对象采用一个比特标志位标识哈希及其对应的数据块是否已经存在于远端服务器,采用一个比特位图标识哪些目标复制备份数据引用了该数据块,在一个比特位图的长度不足以记录下所有引用了同一数据块的目标复制备份数据时,采用指针指向对应的下一个哈希引用对象。
4.如权利要求3所述的方法,其特征在于,采用预定数据结构统计各个目标复制备份数据所引用的数据块以及所述数据块是否存在于远端服务器具体包括:
对于被所述目标复制备份数据所引用的数据块,如果当前还没有以其哈希为键的数据存储于统计数据中时,向远端服务器发送哈希是否存在查询消息,并根据查询结果对该数据块进行统计,其中,如果该哈希值已经存在于所述远端服务器,则属于该数据块下层的所有子孙数据块也存在于所述远端服务器,则根据查询结果对该数据块下层的子孙数据块进行统计。
5.如权利要求1所述的方法,其特征在于,所述作业文件包括:哈希及其对应的可变字节长度的备份引用位图,其中,所述备份引用位图为引用该数据块的目标复制备份数据的比特位图。
6.如权利要求5所述的方法,其特征在于,根据所述作业文件并发地进行多个目标复制备份数据的复制具体包括:
在作业文件中保存传输失败的数据块记录,并读取该数据块的备份引用位图,并将所述备份引用位图以广播的形式发送到其他数据节点;
当接收到所述广播后,根据接收到的备份引用位图,根据公式1更新本地预先设置的忽略匹配位的值:
skip_match_bits=skip_match_bits│backups_bitmap 公式1;
其中,skip_match_bits表示忽略匹配位,backups_bitmap表示备份引用位图;
在根据作业文件发送某一数据块前,根据公式2对该数据块的备份引用位图与所述忽略匹配位进行比较:
still_referred_by_other_backups=(~(backups_bitmap&skip_match_bits))&backups_bitmap 公式2;
其中,still_referred_by_other_backups表示仍然被其他备份引用;
如果比较结果still_referred_by_other_backups不等于零,则正常传输该数据块,否则,不传输该数据块;
将复制失败的目标复制备份数据反馈给用户。
7.如权利要求1所述的方法,其特征在于,根据所述作业文件并发地进行多个目标复制备份数据的复制具体包括:
在N+1天根据所述作业文件并发地进行多个目标复制备份数据的复制,其中,在第N天完成作业文件的保存。
8.如权利要求4所述的方法,其特征在于,对于被所述目标复制备份数据所引用的数据块,如果当前还没有以其哈希为键的数据存储于统计数据中时,向远端服务器发送查询消息具体包括:
在第N天,在所述远端服务器上的垃圾回收完成后,再向所述远端服务器发送查询消息。
9.如权利要求3所述的方法,其特征在于,所述方法进一步包括:
将记录的哈希设置一个复制时仍然有效标志位;
在第N天执行垃圾回收操作时,将在N+1天即将过期而成为无效目标复制备份数据的进行特殊计数;
根据所述特殊计数,如果一个记录的哈希只被在N+1天即将过期的目标复制备份数据所引用时,将所述复制时仍然有效标志位设置为零;
在接收到哈希是否存在查询消息时,如果所述复制时仍然有效标志位为零,则返回哈希不存在消息,否则,回复哈希存在消息;
在垃圾回收完成后,发送垃圾回收完成通知。
10.一种适用于基于哈希的多节点备份系统的数据备份装置,其特征在于,设置于数据节点中,具体包括:
统计记录模块,用于遍历本地存储的目标复制备份数据,统计并记录各个目标复制备份数据所引用的数据块以及所述数据块是否存在于远端服务器;
保存模块,用于将不存在于远端服务器的数据块在本地保存为作业文件;
复制模块,用于根据所述作业文件并发地进行多个目标复制备份数据的复制。
11.一种适用于基于哈希的多节点备份系统的数据备份装置,其特征在于,设置于数据节点中,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9中任一项所述的适用于基于哈希的多节点备份系统的数据备份方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如权利要求1至9中任一项所述的适用于基于哈希的多节点备份系统的数据备份方法的步骤。
CN202010047195.0A 2020-01-16 2020-01-16 适用于基于哈希的多节点备份系统的数据备份方法及装置 Active CN111258815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010047195.0A CN111258815B (zh) 2020-01-16 2020-01-16 适用于基于哈希的多节点备份系统的数据备份方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010047195.0A CN111258815B (zh) 2020-01-16 2020-01-16 适用于基于哈希的多节点备份系统的数据备份方法及装置

Publications (2)

Publication Number Publication Date
CN111258815A true CN111258815A (zh) 2020-06-09
CN111258815B CN111258815B (zh) 2023-08-08

Family

ID=70947102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010047195.0A Active CN111258815B (zh) 2020-01-16 2020-01-16 适用于基于哈希的多节点备份系统的数据备份方法及装置

Country Status (1)

Country Link
CN (1) CN111258815B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112202910A (zh) * 2020-10-10 2021-01-08 上海威固信息技术股份有限公司 一种计算机分布式存储系统
CN112416879A (zh) * 2020-12-09 2021-02-26 成都傲梅科技有限公司 一种基于ntfs文件系统的块级数据去重方法
CN113722548A (zh) * 2021-08-30 2021-11-30 北京天空卫士网络安全技术有限公司 一种业务系统中引用关系的处理方法和装置
CN115269734A (zh) * 2022-09-27 2022-11-01 北京奥星贝斯科技有限公司 分布式数据库的存储管理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095843A (zh) * 2013-01-28 2013-05-08 刘海峰 一种基于版本矢量的数据备份方法及客户端
CN103116615A (zh) * 2013-01-28 2013-05-22 袁华强 一种基于版本矢量的数据索引方法及服务器
CN103873503A (zh) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 数据块备份系统及方法
WO2016107042A1 (zh) * 2014-12-30 2016-07-07 中兴通讯股份有限公司 数据增量备份方法、装置及nas设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103873503A (zh) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 数据块备份系统及方法
CN103095843A (zh) * 2013-01-28 2013-05-08 刘海峰 一种基于版本矢量的数据备份方法及客户端
CN103116615A (zh) * 2013-01-28 2013-05-22 袁华强 一种基于版本矢量的数据索引方法及服务器
WO2016107042A1 (zh) * 2014-12-30 2016-07-07 中兴通讯股份有限公司 数据增量备份方法、装置及nas设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
韩莹;杨秋格;沈洪雷;李姗姗;: "一种在去重备份系统中的源端去重算法" *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112202910A (zh) * 2020-10-10 2021-01-08 上海威固信息技术股份有限公司 一种计算机分布式存储系统
CN112416879A (zh) * 2020-12-09 2021-02-26 成都傲梅科技有限公司 一种基于ntfs文件系统的块级数据去重方法
CN112416879B (zh) * 2020-12-09 2023-08-04 成都傲梅科技有限公司 一种基于ntfs文件系统的块级数据去重方法
CN113722548A (zh) * 2021-08-30 2021-11-30 北京天空卫士网络安全技术有限公司 一种业务系统中引用关系的处理方法和装置
CN115269734A (zh) * 2022-09-27 2022-11-01 北京奥星贝斯科技有限公司 分布式数据库的存储管理方法及装置
CN115269734B (zh) * 2022-09-27 2022-11-29 北京奥星贝斯科技有限公司 分布式数据库的存储管理方法及装置

Also Published As

Publication number Publication date
CN111258815B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN111258815B (zh) 适用于基于哈希的多节点备份系统的数据备份方法及装置
US11120152B2 (en) Dynamic quorum membership changes
US9910736B2 (en) Virtual full backups
US10534768B2 (en) Optimized log storage for asynchronous log updates
US10437721B2 (en) Efficient garbage collection for a log-structured data store
JP4846156B2 (ja) 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法
US7680998B1 (en) Journaled data backup during server quiescence or unavailability
US8694472B2 (en) System and method for rebuilding indices for partitioned databases
US8285689B2 (en) Distributed file system and data block consistency managing method thereof
US7610314B2 (en) Online tablespace recovery for export
US9262280B1 (en) Age-out selection in hash caches
US8468135B2 (en) Optimizing data transmission bandwidth consumption over a wide area network
US11354065B2 (en) Cloud edition and retrieve
US9002800B1 (en) Archive and backup virtualization
US9251008B2 (en) Client object replication between a first backup server and a second backup server
CN112470112A (zh) 块存储系统的分布式副本
CN101393532A (zh) 从单实例数据归档和/或备份环境中去除数据的系统和方法
WO2017020576A1 (zh) 一种键值存储系统中文件压实的方法和装置
US11960363B2 (en) Write optimized, distributed, scalable indexing store
US11176111B2 (en) Distributed database management system with dynamically split B-tree indexes
US11853581B2 (en) Restoring a storage system using file relocation metadata
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
WO2022173652A1 (en) Reducing the impact of network latency during a restore operation
US20210117096A1 (en) Method, device and computer program product for backuping data
US20220245097A1 (en) Hashing with differing hash size and compression size

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A data backup method and device suitable for hash based multi node backup systems

Granted publication date: 20230808

Pledgee: Xi'an investment and financing Company limited by guarantee

Pledgor: Xi'an Okayun Data Technology Co.,Ltd.

Registration number: Y2024610000010

PE01 Entry into force of the registration of the contract for pledge of patent right