CN102693168B - 一种数据备份恢复的方法、系统和服务节点 - Google Patents
一种数据备份恢复的方法、系统和服务节点 Download PDFInfo
- Publication number
- CN102693168B CN102693168B CN201110069873.4A CN201110069873A CN102693168B CN 102693168 B CN102693168 B CN 102693168B CN 201110069873 A CN201110069873 A CN 201110069873A CN 102693168 B CN102693168 B CN 102693168B
- Authority
- CN
- China
- Prior art keywords
- data
- service node
- write
- backup
- client
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5683—Storage of data provided by user terminals, i.e. reverse caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据备份恢复的方法、系统和服务节点,在接收到发起备份数据的请求后,服务节点生成备份计划表,将备份计划表上传到集群公共存储块,服务节点根据备份计划表将需要备份的副本文件发送到目的节点,由目的节点进行合并操作;客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。通过上述方法和系统,能够在集群的复杂网络环境下,考虑各个服务节点的性能差异,完成冗余数据的备份和恢复,保证了数据的一致性、完整性,数据均衡分布。
Description
技术领域
本发明涉及云计算中分布式缓存系统领域,特别是指一种数据备份恢复的方法、系统和服务节点。
背景技术
云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。分布式缓存是云计算范畴中的一个领域,其作用是提供海量数据的分布式存储服务以及高速读写访问的能力。
在分布式缓存系统中,通常是由若干服务器节点和客户端互相连接构成,服务器节点也可简称为服务节点。其中,服务器节点负责数据的存储,客户端可以对服务器做数据的写入、读取、更新、删除等操作。一般来说写入的数据不可能只保存在单个服务器节点上,而是在多台节点上保存同一个数据的副本文件,互为备份。所述副本文件包含一条或多条数据记录,所述数据记录由键(Key)和值(Value)构成,Key相当于数据的索引,Value是Key所代表的数据内容。逻辑上Key和Value是一对一的关系。为了保障分布式缓存系统中数据的一致性,每条数据记录在实际存储时,还要加上一些属性信息。例如,版本号、时间戳等,所述属性信息存储在副本文件的数据记录中。在分布式缓存系统的集群(以下简称集群)中多台服务节点保存有同一份数据文件的多个数据副本文件,而如何在集群中的多个服务节点上,进行数据的备份和恢复是比较难以解决的问题,其核心在于如何能够在集群的复杂网络环境下,综合考虑各个服务节点的性能差异,完成冗余数据的备份和恢复,并且保证了数据的一致性、完整性、数据的均衡分布。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据备份恢复的方法、系统和服务节点,能够实现在无中心化的分布式缓存系统中数据的备份和恢复。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种数据备份恢复的方法,所述方法包括:
接收到发起备份数据的请求后,服务节点生成备份计划表,将备份计划表上传到集群公共存储块,服务节点根据备份计划表将需要备份的副本文件发送到目的节点,由目的节点进行合并操作;
客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。
其中,所述根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,还包括:如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。
其中,所述集群公共存储块位于服务节点中,其中的数据能够被集群中任意服务节点实时访问或修改。
其中,在所述发送需要备份的副本文件之前,还包括:各服务节点把需要备份的本地数据热备份到指定路径下。
其中,所述将需要备份的副本文件发送到目的节点,具体为:将需要备份的副本文件传输到集群外一个或者多个目的节点上。
其中,所述合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。
本发明还提供了一种数据备份恢复的系统,所述系统包括:服务节点、客户端和目的节点,其中,
所述服务节点,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送到目的节点进行合并操作,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后通知客户端;
所述客户端,用于将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,收到完成通知后,发送下一条数据记录的写数据请求,直至副本文件全部恢复。
其中,所述服务节点,还用于根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。
其中,所述目的节点进行合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。
本发明还提供了一种数据备份恢复系统的服务节点,所述服务节点,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送到目的节点进行合并操作,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后通知客户端。
其中,所述服务节点,还用于根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。
本发明所提供的数据备份恢复的方法、系统和服务节点,接收到发起备份数据的请求后,服务节点生成备份计划表,将备份计划表上传到集群公共存储块,服务节点根据备份计划表将需要备份的副本文件发送到目的节点,由目的节点进行合并操作;客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。能够在集群的复杂网络环境下,综合考虑各个服务节点的性能差异,完成冗余数据的备份和恢复,并且保证了数据的一致性、完整性、数据的均衡分布,综合来看上述方法是一种有效的、高度可靠的、保障分布式存储系统中数据一致性的数据备份恢复方案,创新地解决了分布式存储系统中数据备份恢复的技术问题。
附图说明
图1为本发明一种数据备份恢复的方法流程示意图;
图2为本发明一种数据备份的实施例的流程示意图;
图3为本发明一种数据合并的实施例的流程示意图;
图4为本发明一种数据恢复的实施例的流程示意图;
图5为本发明一种数据备份恢复的系统结构示意图。
具体实施方式
通常分布式缓存系统的集群中的数据备份分为两个步骤:第一步,导出;具体为把集群中一个数据文件的多个数据副本文件都导出到一个目的节点上。第二步,合并。具体为导出完成后,按照一定的数据合并算法把这些副本文件合并成一个数据文件,即把合并输出的数据文件保存下来,供以后数据恢复时使用。
进一步的,集群中的数据恢复具体为:导入。即通过客户端向集群中服务节点发送写数据请求,把数据文件中的数据记录依次逐个写入到分布式缓存系统中。
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
图1为本发明一种数据备份恢复的方法流程示意图,如图1所示,所述方法包括:
步骤101,接收到发起备份数据的请求后,服务节点生成备份计划表;
具体的,客户端根据需要发起备份数据的请求到任意一台服务节点,接收到备份数据请求的服务节点根据当前集群中数据的分布表,生成一张备份计划表。这个服务节点可以被称为备份计划生成节点。
步骤102,将备份计划表上传到集群公共存储块;
具体的,所述集群公共存储块位于服务节点中,其中的数据能够被集群中任意服务节点实时访问或修改。
进一步的,步骤102之后,所述方法还包括:目的节点监测到集群公共存储块中的备份计划表,置备份计划表为“使能”状态。
步骤103,服务节点根据备份计划表将需要备份的副本文件发送到目的节点;
进一步的,在所述发送需要备份的副本文件之前,还包括:各服务节点把需要备份的本地数据热备份到指定路径下。
具体的,集群中的所有服务节点都能够监测到所述公共存储块中备份计划表的任务使能状态,如果使能,各服务节点把需要备份的本地数据热备份到指定路径下,然后发送到目的节点。其中,所述数据的热备份,是指即使数据正在被更改的时候,服务节点还可以把某一时刻的数据完整地备份下来,不会毁坏数据。热备份的优点在于保障了客户端在更新集群中数据的同时,依然可以把集群中的数据备份下来。进一步的,服务节点将需要备份的副本文件发送到目的节点后还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为已发送。
所述将需要备份的副本文件发送到目的节点,具体为:将需要备份的副本文件传输到集群外一个或者多个目的节点上。这样能够保障目的节点上有足够的存储空间容纳备份数据。如果目的节点存储空间已满或者断链,可以指定别的目的节点继续进行备份。
步骤104,所述目的节点进行合并操作;
具体的,所述合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。这样能够保障数据的一致性。所述合并成一个最新副本的操作,具体包括:
步骤104a,打开第一份数据副本文件,从中获取一个数据记录,即一个Key和对应的一个Value;
步骤104b,打开其余的数据副本文件,从中获取步骤104a中Key对应的其他Value;
步骤104c,根据数据的版本号和时间戳最新的原则,比较同一个Key的所有副本Value,获取一个最新的Value副本;
步骤104d,将合并出来的Value写入到第一个数据副本文件中,并删除其余数据副本文件中的这条数据记录;
步骤104e,遍历第一份数据副本文件中的数据记录,按照步骤104a至步骤104d的操作,把其余数据副本文件中剩余的数据记录合并后写入到第一个数据副本文件中。
进一步的,所述目的节点进行合并操作之后,还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为“合并完成”;客户端轮询备份计划表中的“合并完成”状态,如果查询到“合并完成”则备份流程结束。
步骤105,客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点;
具体的,客户端打开合并后的副本文件,遍历其中的数据记录,取出一条数据记录,把该条记录附加到客户端要发送的写数据请求中,发送写数据请求给集群中的任意一个服务节点。
步骤106,服务节点根据负载均衡原则,生成数据分布表;
具体的,所述根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点的数据负载均衡。
步骤107,服务节点根据数据分布表将所述写数据请求发送到其他服务节点进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。
进一步的,步骤107中所述服务节点将所述数据记录根据数据分布表,发送到对应的服务节点进行写入操作之后,还包括:如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。
图2为本发明一种数据备份的实施例的流程示意图,如图2所示,所述流程包括:
步骤201,客户端发送数据备份请求给集群中的服务节点1,服务节点1根据当前集群中的数据分布表,生成一张备份计划表;
步骤202,服务节点1将本地的备份计划表上传到集群的公共存储块中;
步骤203,目的节点监测到集群公共存储块中的备份计划表,置备份计划表为“使能”状态;
步骤204,集群中的所有服务节点,轮询公共存储块中备份计划表的任务状态,如果使能,热备份本地数据到指定的数据目录中;
步骤205,集群中的所有服务节点将数据目录中的备份数据发送到目的节点,并且将备份计划表置位为“已发送”状态;
步骤206,目的节点轮询备份计划表的“副本是否齐备”状态,如果齐备,合并数据;
步骤207,目的节点合并完数据后,将备份计划表置位为“合并完成”状态;
步骤208,客户端轮询备份计划表中的“合并完成”状态,如果完成则备份流程结束。
图3为本发明一种数据合并的实施例的流程示意图,如图3所示,所述流程包括:
步骤301,打开集群中所有数据副本文件;
步骤302,遍历第一个数据副本文件,读取一个数据记录,数据记录由Key、Value、版本号、时间戳等组成;
步骤303,依次读取其余数据副本文件中的对应于同一个Key的数据记录;
步骤304,根据版本号、时间戳最新原则,从同一份数据记录的多个副本中选取最新的一个副本作为合并完成的数据记录;
步骤305,将合并完成的数据记录写入到第一个数据副本文件中;
步骤306,删除其余数据副本文件中对应该Key的数据记录;
步骤307,遍历完第一个数据副本文件中的所有数据记录后,遍历第二个数据副本文件按照步骤302至步骤306的操作将合并后的数据记录写入到第一个数据副本文件中,直到遍历完所有的数据副本文件。
图4为本发明一种数据恢复的实施例的流程示意图,如图4所示,所述流程包括:
步骤401,客户端打开备份的数据文件,取出一个数据记录,附加到客户端的写数据请求中,并把写数据请求发送到集群中的服务节点1上;
步骤402,集群中的服务节点接收到写数据请求后,根据负载均衡原则,生成一张数据分布表;
步骤403,数据分布表生成的服务节点根据当前的数据分布表把写数据请求发送到其它的服务节点上;
步骤404,接收到写数据请求的服务节点,本地存储请求中携带的数据记录,并返回相应的状态给数据分布表生成的服务节点;
步骤405,数据分布表生成的服务节点,即服务节点1返回状态码给客户端,如果写成功,客户端取出下一个数据记录,如果写入失败,客户端将该条数据记录存储在恢复失败链表中,每次发送写数据请求时,优先从恢复失败链表中去数据记录。
进一步的,每次客户端发送写数据请求前,都从恢复失败链表中或者备份数据文件中,取出下一条数据记录,重复步骤401至步骤405。直到备份数据文件中的所有数据记录全部恢复成功。
图5为本发明一种数据备份恢复的系统结构示意图,如图5所示,所述系统包括:服务节点51、客户端52和目的节点53,其中,
所述服务节点51,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送给目的节点53,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作,完成后通知客户端52;
具体的,客户端52根据需要发起备份数据的请求到任意一台服务节点51,接收到备份数据请求的服务节点51根据当前集群中数据的分布表,生成一张备份计划表。所述集群公共存储块位于服务节点51中,其中的数据能够被集群中任意服务节点51实时访问或修改。集群中的所有服务节点51都能够监测到所述公共存储块中备份计划表的任务使能状态,如果使能,各服务节点51把需要备份的本地数据热备份到指定路径下,然后发送到目的节点53。其中,所述数据的热备份,是指即使数据正在被更改的时候,服务节点51还可以把某一时刻的数据完整地备份下来,不会毁坏数据。热备份的优点在于保障了客户端在更新集群中数据的同时,依然可以把集群中的数据备份下来。所述服务节点51根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点51的数据负载均衡。进一步的,服务节点51将需要备份的副本文件发送到目的节点53后还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为已发送。
进一步的,所述服务节点51,还用于,在所述发送需要备份的副本文件之前,把需要备份的本地数据热备份到指定路径下。
进一步的,所述服务节点51,还用于根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端52重新发送写数据请求时,优先发送恢复失败链表中的数据记录。
所述客户端52,用于将合并后副本文件中的数据记录,通过写数据请求发送给服务节点51,收到完成通知后,发送下一条数据记录的写数据请求,直至副本文件全部恢复;
具体的,客户端52打开合并后的副本文件,遍历其中的数据记录,取出一条数据记录,把该条记录附加到客户端要发送的写数据请求中,发送写数据请求给集群中的任意一个服务节点51。所述根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点的数据负载均衡。
所述目的节点53,用于进行合并操作。
具体的,所述目的节点,具体为:集群外的一个或者多个目的节点。所述目的节点进行合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。
进一步的,所述目的节点53进行合并操作之后,还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为“合并完成”;客户端52轮询备份计划表中的“合并完成”状态,如果查询到“合并完成”则备份流程结束。
进一步的,所述目的节点53,还用于监测到集群公共存储块中的备份计划表,置备份计划表为“使能”状态。
本发明还公开了一种数据备份恢复的系统中的服务节点51,如图5所示:
所述服务节点51,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送给目的节点53,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作,完成后通知客户端52。
具体的,客户端52根据需要发起备份数据的请求到任意一台服务节点51,接收到备份数据请求的服务节点51根据当前集群中数据的分布表,生成一张备份计划表。所述集群公共存储块位于服务节点51中,其中的数据能够被集群中任意服务节点51实时访问或修改。集群中的所有服务节点51都能够监测到所述公共存储块中备份计划表的任务使能状态,如果使能,各服务节点51把需要备份的本地数据热备份到指定路径下,然后发送到目的节点53。其中,所述数据的热备份,是指即使数据正在被更改的时候,服务节点51还可以把某一时刻的数据完整地备份下来,不会毁坏数据。热备份的优点在于保障了客户端在更新集群中数据的同时,依然可以把集群中的数据备份下来。所述服务节点51根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点51的数据负载均衡。进一步的,服务节点51将需要备份的副本文件发送到目的节点53后还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为已发送。
进一步的,所述服务节点51,还用于,在所述发送需要备份的副本文件之前,把需要备份的本地数据热备份到指定路径下。
进一步的,所述服务节点51,还用于根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端52重新发送写数据请求时,优先发送恢复失败链表中的数据记录。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (9)
1.一种数据备份恢复的方法,其特征在于,所述方法包括:
接收到发起备份数据的请求后,服务节点生成备份计划表,将备份计划表上传到集群公共存储块,服务节点根据备份计划表将需要备份的副本文件发送到目的节点,由目的节点进行合并操作;
客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复;
其中,所述合并包括:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,将一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本;
合并完成后向集群公共存储块发送消息,修改备份计划表的任务使能状态。
2.根据权利要求1所述的方法,其特征在于,所述根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,还包括:如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送数据记录恢复失败链表中的数据记录。
3.根据权利要求1或2所述的方法,其特征在于,所述集群公共存储块位于服务节点中,所述集群公共存储块的数据能够被集群中任意服务节点实时访问或修改。
4.根据权利要求1或2所述的方法,其特征在于,在所述将需要备份的副本文件发送到目的节点之前,还包括:各服务节点把需要备份的本地数据热备份到指定路径下。
5.根据权利要求1或2所述的方法,其特征在于,所述将需要备份的副本文件发送到目的节点,具体为:将需要备份的副本文件传输到集群外一个或者多个目的节点上。
6.一种数据备份恢复的系统,其特征在于,所述系统包括:服务节点、客户端和目的节点,其中,
所述服务节点,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送到目的节点进行合并操作,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后通知客户端;
其中,所述合并包括:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,将一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本;且合并完成后向集群公共存储块发送消息,修改备份计划表的任务使能状态;
所述客户端,用于将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,收到完成通知后,发送下一条数据记录的写数据请求,直至副本文件全部恢复。
7.根据权利要求6所述的系统,其特征在于,所述服务节点,还用于根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送数据记录恢复失败链表中的数据记录。
8.一种数据备份恢复系统的服务节点,其特征在于,所述服务节点,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送到目的节点进行合并操作,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后通知客户端;
其中,所述合并包括:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,将一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本;且合并完成后向集群公共存储块发送消息,修改备份计划表的任务使能状态。
9.根据权利要求8所述的服务节点,其特征在于,所述服务节点,还用于根据数据分布表将数据记录通过写数据请求发送到其他服务节点上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送数据记录恢复失败链表中的数据记录。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110069873.4A CN102693168B (zh) | 2011-03-22 | 2011-03-22 | 一种数据备份恢复的方法、系统和服务节点 |
PCT/CN2011/078466 WO2012126232A1 (zh) | 2011-03-22 | 2011-08-16 | 一种数据备份恢复的方法、系统和服务节点 |
US14/006,674 US9286319B2 (en) | 2011-03-22 | 2011-08-16 | Method, system and serving node for data backup and restoration |
EP11861783.6A EP2687987B1 (en) | 2011-03-22 | 2011-08-16 | Method, system and serving node for data backup and recovery |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110069873.4A CN102693168B (zh) | 2011-03-22 | 2011-03-22 | 一种数据备份恢复的方法、系统和服务节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102693168A CN102693168A (zh) | 2012-09-26 |
CN102693168B true CN102693168B (zh) | 2014-12-31 |
Family
ID=46858642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110069873.4A Active CN102693168B (zh) | 2011-03-22 | 2011-03-22 | 一种数据备份恢复的方法、系统和服务节点 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9286319B2 (zh) |
EP (1) | EP2687987B1 (zh) |
CN (1) | CN102693168B (zh) |
WO (1) | WO2012126232A1 (zh) |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323466B2 (en) | 2011-04-27 | 2016-04-26 | Commvault Systems, Inc. | System and method for client policy assignment in a data storage system |
CN103873501B (zh) * | 2012-12-12 | 2017-07-18 | 华中科技大学 | 一种云备份系统及其数据备份方法 |
CN104572344B (zh) * | 2013-10-29 | 2018-10-30 | 杭州海康威视系统技术有限公司 | 一种多云间数据备份的方法和系统 |
CN103716384A (zh) * | 2013-12-17 | 2014-04-09 | 创新科存储技术(深圳)有限公司 | 跨数据中心实现云存储数据同步的方法和装置 |
CN104735110B (zh) * | 2013-12-23 | 2019-03-26 | 中国电信股份有限公司 | 元数据管理方法和系统 |
CN104765652B (zh) * | 2014-01-08 | 2018-12-04 | 中国移动通信集团浙江有限公司 | 一种数据备份和数据恢复方法及装置 |
US10545917B2 (en) | 2014-02-19 | 2020-01-28 | Snowflake Inc. | Multi-range and runtime pruning |
US10325032B2 (en) | 2014-02-19 | 2019-06-18 | Snowflake Inc. | Resource provisioning systems and methods |
CN104063294B (zh) * | 2014-07-07 | 2016-03-16 | 国家电网公司 | 一种Linux系统备份和恢复方法 |
CN105354108B (zh) * | 2014-08-22 | 2020-01-07 | 中兴通讯股份有限公司 | 一种数据备份方法及节点 |
CN105808449B (zh) * | 2014-12-31 | 2018-11-27 | 中国电信股份有限公司 | 一种用于虚拟机的虚拟存储映像版本管理方法和系统 |
CN104902009B (zh) * | 2015-04-27 | 2018-02-02 | 浙江大学 | 一种基于可擦除编码和链式备份的分布式存储系统 |
CN104954810B (zh) * | 2015-07-14 | 2018-04-24 | 电子科技大学 | 用于保证分布式视频流存储系统数据连续性的切换方法 |
US10007585B2 (en) | 2015-09-21 | 2018-06-26 | TigerIT Americas, LLC | Fault-tolerant methods, systems and architectures for data storage, retrieval and distribution |
CN105391755B (zh) * | 2015-09-30 | 2018-10-19 | 华为技术有限公司 | 一种分布式系统中数据处理方法、装置及系统 |
CN105701209A (zh) * | 2016-01-13 | 2016-06-22 | 广西师范大学 | 一种提高大数据上并行连接性能的负载平衡方法 |
US10437780B2 (en) | 2016-07-14 | 2019-10-08 | Snowflake Inc. | Data pruning based on metadata |
CN108123976B (zh) * | 2016-11-30 | 2020-11-20 | 阿里巴巴集团控股有限公司 | 集群间的数据备份方法、装置及系统 |
CN106776151A (zh) * | 2017-01-14 | 2017-05-31 | 郑州云海信息技术有限公司 | Samba集群tdb数据库记录备份方法、装置及系统 |
US10180801B2 (en) * | 2017-05-16 | 2019-01-15 | Veritas Technologies Llc | Systems and methods for load balancing backup data |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US11526470B2 (en) * | 2018-01-03 | 2022-12-13 | Salesforce, Inc. | Data validation for data record migrations |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10866864B2 (en) * | 2018-03-23 | 2020-12-15 | Veritas Technologies Llc | Systems and methods for backing-up an eventually-consistent database in a production cluster |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
CN109144783B (zh) * | 2018-08-22 | 2020-08-18 | 南京壹进制信息科技有限公司 | 一种分布式海量非结构化数据备份方法及系统 |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
CN109388481B (zh) * | 2018-09-21 | 2021-08-17 | 网易(杭州)网络有限公司 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
CN109766218A (zh) * | 2018-12-21 | 2019-05-17 | 中信百信银行股份有限公司 | 基于分布式存储的数据备份方法 |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) * | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
CN110968463B (zh) * | 2019-12-19 | 2022-08-30 | 北京五八信息技术有限公司 | 一种确定群组中各数据节点类型的方法及装置 |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
CN111581160A (zh) * | 2020-04-29 | 2020-08-25 | 上海中通吉网络技术有限公司 | 一种基于分布式文件管理系统的数据备份还原方法和系统 |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
CN112000618B (zh) * | 2020-08-07 | 2022-06-07 | 北京浪潮数据技术有限公司 | 集群节点的文件变动管理方法、装置、设备及存储介质 |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
CN112968914B (zh) * | 2021-05-18 | 2021-10-15 | 北京仁科互动网络技术有限公司 | 请求数据实时导入漏洞扫描器的系统、方法、设备及介质 |
CN114297004A (zh) * | 2021-12-31 | 2022-04-08 | 合肥同智机电控制技术有限公司 | 软件快速备份与恢复方法、系统及设备 |
CN114697353B (zh) * | 2022-05-27 | 2022-09-06 | 邹平市供电有限公司 | 一种分布式存储集群电网数据存储控制方法 |
CN116881049B (zh) * | 2023-07-21 | 2024-01-30 | 无锡隆云数字技术有限公司 | 一种云构架下基于终端和云主机的分布式数据备份方法 |
CN116881052B (zh) * | 2023-09-07 | 2023-11-24 | 上海凯翔信息科技有限公司 | 一种分布式存储的数据修复系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100359423B1 (en) * | 2002-01-04 | 2002-11-07 | Ncerti Co Ltd | Very high speed high capacity backup system and backup method thereof |
JP4153324B2 (ja) * | 2003-01-31 | 2008-09-24 | 松下電器産業株式会社 | 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム |
US7155465B2 (en) * | 2003-04-18 | 2006-12-26 | Lee Howard F | Method and apparatus for automatically archiving a file system |
US7249281B2 (en) * | 2003-07-28 | 2007-07-24 | Microsoft Corporation | Method and system for backing up and restoring data of a node in a distributed system |
US7730122B2 (en) * | 2004-12-09 | 2010-06-01 | International Business Machines Corporation | Authenticating a node requesting another node to perform work on behalf of yet another node |
JP4143611B2 (ja) * | 2005-02-04 | 2008-09-03 | インターナショナル・ビジネス・マシーンズ・コーポレーション | バックアップ生成装置、リカバリ処理装置、バックアップ生成方法、リカバリ処理方法、及びプログラム |
US7483927B2 (en) | 2005-12-01 | 2009-01-27 | International Business Machines Corporation | Method for merging metadata on files in a backup storage |
US7941404B2 (en) | 2006-03-08 | 2011-05-10 | International Business Machines Corporation | Coordinated federated backup of a distributed application environment |
CN100558080C (zh) * | 2006-12-12 | 2009-11-04 | 华为技术有限公司 | 集群消息传送方法及分布式集群系统 |
CN101394424B (zh) * | 2008-10-27 | 2011-11-09 | 中国科学院计算技术研究所 | 一种磁盘级网络数据备份的系统及方法 |
US20100257403A1 (en) | 2009-04-03 | 2010-10-07 | Microsoft Corporation | Restoration of a system from a set of full and partial delta system snapshots across a distributed system |
WO2010140264A1 (en) * | 2009-06-04 | 2010-12-09 | Hitachi,Ltd. | Storage subsystem and its data processing method, and computer system |
CN101808012B (zh) * | 2010-03-31 | 2012-07-18 | 重庆索伦互联网信息服务有限公司 | 一种云环境下的数据备份方法 |
-
2011
- 2011-03-22 CN CN201110069873.4A patent/CN102693168B/zh active Active
- 2011-08-16 US US14/006,674 patent/US9286319B2/en active Active
- 2011-08-16 EP EP11861783.6A patent/EP2687987B1/en active Active
- 2011-08-16 WO PCT/CN2011/078466 patent/WO2012126232A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP2687987B1 (en) | 2016-05-11 |
EP2687987A1 (en) | 2014-01-22 |
US9286319B2 (en) | 2016-03-15 |
EP2687987A4 (en) | 2015-04-01 |
CN102693168A (zh) | 2012-09-26 |
WO2012126232A1 (zh) | 2012-09-27 |
US20140025638A1 (en) | 2014-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102693168B (zh) | 一种数据备份恢复的方法、系统和服务节点 | |
CN101997911B (zh) | 一种数据迁移的方法及系统 | |
JP5539683B2 (ja) | 拡張可能な2次ストレージシステムと方法 | |
CN105190533B (zh) | 原位快照 | |
CN101996233B (zh) | 用于对经重复删除的数据进行复制的方法和系统 | |
CN101334797B (zh) | 一种分布式文件系统及其数据块一致性管理的方法 | |
CN101577735B (zh) | 一种接管故障元数据服务器的方法、装置及系统 | |
CN106021016A (zh) | 在快照之间的虚拟时间点访问 | |
JP2017216010A (ja) | 分散型データベースシステムのシステム全体のチェックポイント回避 | |
CN103548011A (zh) | 分布式存储环境中的异步复制 | |
CN102598020A (zh) | 用于改进的数据去重的装置、系统及方法 | |
CN103548010A (zh) | 分布式存储环境中的同步复制 | |
CN105706065A (zh) | 存储群集 | |
CN101986276B (zh) | 文件存储方法、文件恢复方法、系统及服务器 | |
CN102158540A (zh) | 分布式数据库实现系统及方法 | |
WO2018176265A1 (zh) | 分布式存储系统的访问方法和相关装置和相关系统 | |
CA2913036A1 (en) | Index update pipeline | |
CN102024016A (zh) | 一种分布式文件系统快速数据恢复的方法 | |
CN103516549B (zh) | 一种基于共享对象存储的文件系统元数据日志机制 | |
CN101888405A (zh) | 一种云计算的文件系统和数据处理方法 | |
CN102750322B (zh) | 一种机群文件系统分布式元数据一致性保证方法和系统 | |
CN104346373A (zh) | 分区日志队列同步管理方法及设备 | |
CN102833281A (zh) | 一种分布式自增计数的实现方法、装置及系统 | |
WO2015074392A1 (zh) | 一种存储单元的数据处理方法、设备及系统 | |
CN103023996A (zh) | 一种云数据存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |