CN112306962B - 计算机集群系统中的文件拷贝方法、装置及存储介质 - Google Patents

计算机集群系统中的文件拷贝方法、装置及存储介质 Download PDF

Info

Publication number
CN112306962B
CN112306962B CN201910684789.XA CN201910684789A CN112306962B CN 112306962 B CN112306962 B CN 112306962B CN 201910684789 A CN201910684789 A CN 201910684789A CN 112306962 B CN112306962 B CN 112306962B
Authority
CN
China
Prior art keywords
node
identifier
file
state
nodes
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
Application number
CN201910684789.XA
Other languages
English (en)
Other versions
CN112306962A (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201910684789.XA priority Critical patent/CN112306962B/zh
Publication of CN112306962A publication Critical patent/CN112306962A/zh
Application granted granted Critical
Publication of CN112306962B publication Critical patent/CN112306962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种计算机集群系统中的文件拷贝方法及装置,属于计算机技术领域。在本申请中,第一节点可以接收第二节点发送的备份文件和拷贝任务文件,之后,第一节点根据该拷贝任务文件,从主节点中获取多个目标节点的节点信息,并根据多个目标节点的节点信息,从多个目标节点中选择未完成拷贝的第三节点,将备份文件拷贝至第三节点。其中,拷贝任务文件用于指示第一节点将备份文件拷贝至其他节点。也即,在本申请中,已完成拷贝的节点可以在将备份文件拷贝至其他节点的同时,使其他节点也同时具备了拷贝文件的功能,这样,所有已完成拷贝节点可以并行的向未完成拷贝的节点进行文件拷贝,提升了计算机集群系统中拷贝文件的效率,节约了拷贝时间。

Description

计算机集群系统中的文件拷贝方法、装置及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种计算机集群系统中的文件拷贝方法、装置及计算机可读存储介质。
背景技术
随着计算机技术在生活中的广泛应用,有些场景下需要计算机具有很强的运算能力。这时往往采用计算机集群技术,集中几十台甚至上百台计算机的运算能力,以形成计算机集群系统来满足运算需求。在计算机集群系统中,每台计算机可以称为一个节点。在应用中,经常需要将某个节点中的文件拷贝到系统中的其他多个节点中,在这种情况下,保证文件拷贝的效率非常重要。
在现有技术中,存储有源文件的主节点可以将源文件拆分为多个文件块,并将拆分后的多个文件块以并发的形式拷贝至目标节点。其中,目标节点是指该计算机集群系统中除主节点之外的其他节点中的任一节点。在将多个文件块拷贝至目标节点之后,主节点可以继续按照前述方法将源文件拷贝至其他未拷贝的节点。以此类推,直至文件被拷贝至所有节点为止。例如,如果该计算机集群系统中有N个节点,通过现有技术会进行N-1次的循环拷贝。
然而,在计算机集群系统中,通常会有几十甚至上百节点。在这种情况下,主节点依次将源文件拆分后拷贝至其他节点,将会导致整体拷贝效率低下。
发明内容
本申请实施例提供了一种计算机集群系统中的文件拷贝方法、装置及存储介质,解决了在计算机集群系统中,将文件拷贝至多个节点效率低的问题。所述技术方案如下:
一方面,提供了一种计算机集群系统中的文件拷贝方法,所述方法包括:
第一节点接收第二节点发送的备份文件和拷贝任务文件,所述拷贝任务文件用于指示所述第一节点将所述备份文件拷贝至其他节点,所述第二节点是指所述计算机集群系统中的主节点或已完成所述备份文件的拷贝的从节点,所述主节点是指存储有所述备份文件的源文件的节点;
根据所述拷贝任务文件,从所述主节点中获取多个目标节点的节点信息,所述多个目标节点是指从所述计算机集群系统包括的多个从节点中选择的需要进行文件拷贝的从节点;
根据所述多个目标节点的节点信息,从所述多个目标节点中除所述第一节点和所述第二节点之外的剩余节点中选择第三节点,将所述备份文件和所述拷贝任务文件拷贝至所述第三节点,所述第三节点是指当前还未完成所述备份文件的拷贝的节点。
可选地,多个目标节点的节点信息包括所述多个目标节点的节点标识和每个节点标识对应的状态标识;
所述根据所述多个目标节点的节点信息,从所述多个目标节点中除所述第一节点和所述第二节点之外的剩余节点中选择第三节点,包括:
从所述多个目标节点的节点标识所对应的状态标识中查找对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的至少一个节点标识;
其中,所述第一状态标识用于指示对应的节点标识所标识的节点当前已完成所述备份文件的拷贝,所述第二状态标识用于指示对应的节点标识所标识的节点对所述备份文件拷贝失败,所述第三状态标识用于指示对应的节点标识所标识的节点为其他已完成所述备份文件的拷贝的节点选择的待拷贝节点;
从所述至少一个节点标识中选择一个节点标识,将选择的节点标识所标识的节点作为所述第三节点。
可选地,所述将选择的节点标识所标识的节点作为所述第三节点之后,还包括:
向所述主节点发送第一节点状态更新消息,以使所述主节点根据所述第一节点状态更新消息,将所述多个目标节点的节点信息中所述第三节点的节点标识对应的状态标识更新为所述第三状态标识,所述第一节点状态更新消息中携带所述第三节点的节点标识和所述第三状态标识。
可选地,所述根据所述拷贝任务文件,从所述主节点中获取多个目标节点的节点信息之前,还包括:
根据所述备份文件生成第一校验码;
从所述主节点中获取第二校验码,所述第二校验码是所述主节点根据所述备份文件的源文件生成的校验码;
如果所述第一校验码和所述第二校验码相同,则执行所述根据所述拷贝任务文件,从所述主节点中获取多个目标节点的节点信息的步骤。
可选地,所述执行所述根据所述拷贝任务文件,从所述主节点中获取多个目标节点的节点信息的步骤之前,还包括:
向所述主节点发送第二节点状态更新消息,以使所述主节点根据所述第二节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第一状态标识,所述第二节点状态更新消息携带所述第一节点的节点标识和所述第一状态标识。
可选地,所述从所述主节点中获取第二校验码之后,还包括:
如果所述第一校验码和所述第二校验码不相同,则向所述主节点发送第三节点状态更新消息,以使所述主节点根据所述第三节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第二状态标识,所述第三节点状态更新消息携带所述第一节点的节点标识和所述第二状态标识。
另一方面,提供了一种计算机集群系统中的文件拷贝装置,应用于第一节点,所述装置包括:
接收模块,用于接收第二节点发送的备份文件和拷贝任务文件,所述拷贝任务文件用于指示所述第一节点将所述备份文件拷贝至其他节点,所述第二节点是指计算机集群系统中的主节点或已完成所述备份文件的拷贝的节点,所述主节点是指存储有所述备份文件的源文件的节点;
第一获取模块,用于根据所述拷贝任务文件,从所述主节点中获取多个目标节点的节点信息,所述多个目标节点是指从所述计算机集群系统包括的多个从节点中选择的需要进行文件拷贝的从节点;
拷贝模块,用于根据所述多个目标节点的节点信息,从所述多个目标节点中除所述第一节点和所述第二节点之外的剩余节点中选择第三节点,将所述备份文件和所述拷贝任务文件拷贝至所述第三节点,所述第三节点是指当前还未完成所述备份文件的拷贝的节点。
可选地,多个目标节点的节点信息包括所述多个目标节点的节点标识和每个节点标识对应的状态标识;
所述拷贝模块包括:
查找子模块,用于从所述多个目标节点的节点标识所对应的状态标识中查找对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的至少一个节点标识;
其中,所述第一状态标识用于指示对应的节点标识所标识的节点当前已完成所述备份文件的拷贝,所述第二状态标识用于指示对应的节点标识所标识的节点对所述备份文件拷贝失败,所述第三状态标识用于指示对应的节点标识所标识的节点为其他已完成所述备份文件的拷贝的节点选择的待拷贝节点;
选择子模块,用于从所述至少一个节点标识中选择一个节点标识,将选择的节点标识所标识的节点作为所述第三节点。
可选地,所述拷贝模块还包括:
发送子模块,用于向所述主节点发送第一节点状态更新消息,以使所述主节点根据所述第一节点状态更新消息,将所述多个目标节点的节点信息中所述第三节点的节点标识对应的状态标识更新为所述第三状态标识,所述第一节点状态更新消息中携带所述第三节点的节点标识和所述第三状态标识。
可选地,所述装置还包括:
生成模块,用于根据所述备份文件生成第一校验码;
第二获取模块,用于从所述主节点中获取第二校验码,所述第二校验码是所述主节点根据所述备份文件的源文件生成的校验码;
触发模块,用于如果所述第一校验码和所述第二校验码相同,则触发所述第一获取模块根据所述拷贝任务文件,从所述主节点中获取多个目标节点的节点信息。
可选地,所述装置还包括:
第一发送模块,用于向所述主节点发送第二节点状态更新消息,以使所述主节点根据所述第二节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第一状态标识,所述第二节点状态更新消息携带所述第一节点的节点标识和所述第一状态标识。
可选地,所述装置还包括:
第二发送模块,用于如果所述第一校验码和所述第二校验码不相同,向所述主节点发送第三节点状态更新消息,以使所述主节点根据所述第三节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第二状态标识,所述第三节点状态更新消息携带所述第一节点的节点标识和所述第二状态标识。
另一方面,提供了一种文件拷贝装置,所述文件拷贝装置包括处理器、通信接口、存储器和通信总线;
其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器用于存放计算机程序;
所述处理器用于执行所述存储器上所存放的程序,以实现前述提供的文件拷贝方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述提供的文件拷贝方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,第一节点可以接收第二节点发送的备份文件和拷贝任务文件,之后,第一节点根据该拷贝任务文件从主节点中获取多个目标节点的节点信息,并根据该多个目标节点的节点信息,从多个目标节点中除第一节点和第二节点之外的剩余节点中选择第三节点,将备份文件拷贝至第三节点。其中,拷贝任务文件用于指示第一节点将备份文件拷贝至其他节点。由此可见,在本申请实施例中,已完成备份文件的拷贝的节点可以在将该备份文件拷贝至其他节点的同时,使其他节点也同时具备将备份文件拷贝至剩余节点的功能,这样,所有已经完成备份文件的拷贝的节点可以并行的向未完成备份文件的拷贝的节点进行文件拷贝,提升了计算机集群系统中拷贝文件的效率,节约了拷贝时间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算机集群系统的架构图;
图2是本申请实施例提供的一种计算机集群系统汇总的文件拷贝方法的流程图;
图3是采用本申请实施例提供的文件拷贝方法进行文件拷贝的效果示意图;
图4是本申请实施例提供的一种文件拷贝装置的结构示意图;
图5是本申请实施例提供的一种拷贝模块的结构示意图;
图6是本申请实施例提供的另一种文件拷贝装置的结构示意图;
图7是本申请实施例提供的一种用于进行文件拷贝的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的系统架构予以介绍。
图1是本申请实施例提供的一种计算机集群系统的架构图。如图1所示,该系统中包括主节点101和多个从节点102。其中,主节点101可以与多个从节点102进行通信,并且,多个从节点102中的任意两个从节点之间也均可以进行通信。
需要说明的是,主节点101可以是指该计算机集群系统中存储有源文件的节点。其中,主节点101可以将存储的源文件的备份文件和拷贝任务文件拷贝至其他从节点。另外,在本申请实施例中,该主节点101中还可以存储有多个目标节点的节点信息。其中,该多个目标节点是指主节点指定的要向其上拷贝备份文件的从节点。并且,该主节点101可以根据其他从节点102发送的节点状态更新消息来对多个目标节点的节点信息进行更新和维护。
多个从节点102即为上述的多个目标节点,其中,多个从节点102中的每个从节点102可以接收由主节点101或者是其他从节点102发送的备份文件和拷贝任务文件,并根据接收到的拷贝任务文件继续向其他从节点102拷贝该备份文件。
另外,图1中仅是以从节点102的数量为3个进行举例说明,但是,这并不构成对计算机集群系统中的从节点数量的限制。
接下来对本申请实施例提供的文件拷贝方法进行介绍。
图2是本申请实施例提供的一种应用于图1所示的计算机集群系统中的文件拷贝方法的流程图,以图1中多个目标节点中的任一未完成拷贝的节点为例来对本申请实施例的实现过程进行说明。其中,为了便于描述,将该未完成拷贝的节点称为第一节点,如图2所示,该方法包括以下步骤:
步骤201:接收第二节点发送的备份文件和拷贝任务文件,该拷贝任务文件指示第一节点将备份文件拷贝至其他节点。
在本申请实施例中,第一节点可以是指主节点在该计算机集群系统中指定的多个目标节点中当前还未完成备份文件的拷贝的从节点。其中,备份文件是指主节点中存储的待拷贝的源文件的备份文件。另外,第二节点可以是指主节点,也可以是指该计算机集群系统中当前已经完成备份文件的拷贝的节点。多个目标节点可以是用户通过主节点从计算机集群系统的多个从节点中选择的需要进行文件拷贝的节点。例如,假设计算机集群系统中有100个从节点,用户想要将该备份文件拷贝至其中的部分从节点上,则用户可以通过主节点选择部分从节点,此时,选择的部分从节点即为上述的多个目标节点。
需要说明的是,拷贝任务文件可以是一个脚本文件。该脚本文件中包含有用于指示节点将备份文件拷贝至其他节点的运行脚本。换句话说,通过运行该拷贝任务文件,第一节点即可以实现将接收到的备份文件拷贝至其他节点,也即,第一节点具备了将备份文件拷贝至其他节点的功能。
步骤202:根据备份文件生成第一校验码。
当接收到第二节点发送的备份文件和拷贝任务文件之后,第一节点可以根据该备份文件生成第一校验码,以对该备份文件进行校验。
示例性地,第一节点可以根据MD5(Message Digest,信息摘要)算法对该备份文件进行处理,从而得到该备份文件的MD5码,将该MD5码作为该备份文件的第一校验码。
可选地,在一些可能的情况下,第一节点也可以根据其他算法来对该备份文件进行处理,从而得到能够表征该备份文件的文件内容的特征码,并将该特征码作为第一校验码。
步骤203:从主节点中获取第二校验码,该第二校验码是主节点根据备份文件的源文件生成的校验码。
第一节点在接收到备份文件之后,可以从主节点中获取第二校验码。该第二校验码是主节点根据备份文件的源文件生成的校验码。
需要说明的是,第一节点可以向主节点发送校验码获取请求,该校验码获取请求中可以携带有备份文件所对应的源文件的文件标识。主节点中可以存储有文件标识与校验码之间的映射关系。其中,该映射关系中的校验码均是基于主节点中存储的对应的文件标识所标识的源文件生成的。基于此,在接收到该校验码获取请求之后,可以获取根据该源文件的文件标识,获取该源文件对应的第二校验码。其中,文件标识可以是指文件名称等用于标识文件的信息。
值得注意的是,在本申请实施例中,第一校验码和第二校验码均是采用相同的算法确定得到的。例如,如果第二校验码是根据MD5算法对源文件进行处理得到的,则第一节点在生成第一校验码时,也需要通过MD5算法来对备份文件进行处理。
在获取到第一校验码和第二校验码之后,第一节点可以将第一校验码和第二校验码进行比较,以此来验证备份文件与源文件是否相同。
需要说明的是,在本申请实施例中,步骤202和步骤203可以同时执行,也可以先执行步骤202,再执行步骤203。或者,也可以先执行步骤203,再执行步骤202。本申请实施例不对步骤202和步骤203的执行顺序进行限定。
步骤204:如果第一校验码和第二校验码相同,则根据拷贝任务文件,从主节点中获取多个目标节点的节点信息。
在得到第一校验码和第二校验码之后,第一节点可以将第一校验码和第二校验码进行比较,如果两个校验码相同,则说明当前接收到的备份文件与主节点中存储的源文件是相同,也即,备份文件在拷贝过程中并未出现错误,此时,则可以确定备份文件拷贝成功。在这种情况下,第一节点可以根据拷贝任务文件,继续将该备份文件拷贝至其他节点。
由前述步骤201中的介绍可知,拷贝任务文件是一个能够使第一节点执行拷贝任务的脚本文件。基于此,第一节点可以通过运行该拷贝任务文件,首先获取主节点中存储的多个目标节点的节点信息。其中,该多个目标节点的节点信息包括多个目标节点的节点标识和每个节点标识对应的状态标识。每个节点标识可以用于唯一标识多个目标节点中的一个节点。每个节点标识可以对应一个状态标识,并且每个节点标识对应的状态标识可以用于指示相应节点是否已完成拷贝,还可以用于指示相应节点是否拷贝失败。
可选地,状态标识可以包括第一状态标识、第二状态标识和第三状态标识。其中,第一状态标识可以用于指示对应的节点标识所标识的节点中当前已完成备份文件的拷贝。也即,若某个节点标识对应的状态标识为第一状态标识,则说明备份文件已经被成功的拷贝至该节点标识所对应的节点中。第二状态标识用于指示对应的节点标识所标识的节点对备份文件拷贝失败。也即,如果某个节点标识对应的状态标识为第二状态标识,则说明在向这个节点标识所对应的节点中拷贝备份文件时失败了。第三状态标识用于指示对应的节点标识所标识的节点为其他已完成备份文件的拷贝的节点选择的待拷贝节点。也即,如果某个节点标识对应的状态标识为第三状态标识,则说明已经有其他拷贝成功的节点将该节点标识所对应的节点选择为了待拷贝对象。
需要说明的是,在本申请实施例中,如果某个节点的状态不为上述介绍的三种状态中的任一种状态,则该节点的节点标识对应的状态标识可以为第四状态标,或者,对应的状态标识可以为空。
步骤205:根据多个目标节点的节点信息,从多个目标节点中除第一节点和第二节点之外的剩余节点中选择第三节点,将备份文件和拷贝任务文件拷贝至第三节点。
在获取到多个目标节点的节点信息之后,第一节点可以从该多个目标节点的节点信息中查找对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的节点标识。也即,第一节点可以从多个节点中查找当前还未被拷贝过备份文件且也没有被其他节点确定为待拷贝对象的节点。在查找到对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的节点标识之后,第一节点可以从查找到的节点标识中随机选择一个节点标识,并将选择的节点标识对应的节点作为第三节点。该第三节点也就是第一节点对应的待拷贝对象,也即,第一节点接下来要将备份文件拷贝至该第三节点。
在确定第三节点之后,第一节点可以将备份文件拷贝至第三节点。其中,为了使第三节点在接收到备份文件的同时,也能具备拷贝文件的功能,第一节点在将备份文件拷贝至第三节点时,可以将前述的拷贝任务文件也发送至第三节点。这样,第三节点则可以参照第一节点的操作将备份文件继续拷贝至其他节点。
值得注意的是,在本申请实施例中,上述步骤204和步骤205可以均是通过运行拷贝任务文件来实现的。换句话说,该拷贝任务文件中包含有用于执行上述步骤204和步骤205的脚本信息。
需要说明的是,在确定第三节点之后,将备份文件拷贝至第三节点之前,第一节点还可以向主节点发送第一节点状态更新消息,该第一节点状态更新消息中携带第三节点的节点标识和第三状态标识。主节点在接收到该第一节点状态更新消息之后,可以从多个目标节点的节点标识中查找第三节点的节点标识,并将第三节点的节点标识对应的状态标识更新为第三状态标识。这样,其他节点在获取到该多个目标节点的节点信息时,即可以根据该状态标识获悉该第三节点已经被选择,从而可以避免不同的节点选择的待拷贝对象重复的问题。
另外,在本申请实施例中,当第一节点确定第一校验码和第二校验码相同时,说明备份文件已成功拷贝至第一节点,此时,第一节点还可以向主节点发送第二节点状态更新消息。该第二节点状态更新消息中可以携带有第一节点的节点标识和第一状态标识。主节点在接收到该第二节点状态更新消息之后,可以从存储的多个目标节点的节点标识中查找第一节点的节点标识,并将第一节点的节点标识对应的状态标识更新为第一状态标识。这样,后续其他节点在获取到该多个目标节点的节点信息之后,根据第一节点的节点标识对应的第一状态标识,即可以获知第一节点已完成备份文件的拷贝,也即,备份文件已经被成功拷贝至第一节点。在这种情况下,其他节点就不会再向第一节点拷贝备份文件,避免了重复向某个节点拷贝备份文件的问题。
可选地,在本申请实施例中,如果第一节点通过比较第一校验码和第二校验码,确定第一校验码和第二校验码并不相同,则可以说明向第一节点拷贝的备份文件出现了错误,也即,第二节点向第一节点拷贝备份文件失败。在这种情况下,为了避免错误的备份文件进一步地传播,第一节点可以不执行将备份文件拷贝至其他节点的操作。同时,第一节点可以主动向主节点发送第三节点状态更新消息。该第三节点状态更新消息中可以携带第一节点的节点标识和第二状态标识。主节点在接收到该第三节点状态更新消息之后,可以从多个目标节点的节点标识中查找第一节点的节点标识,并将第一节点的节点标识对应的状态标识更新为第二状态标识。这样,后续其他节点在获取到多个目标节点的节点信息之后,根据第一节点的节点标识对应的第二状态标识,即可以获知向第一节点拷贝备份文件失败,这样,其他节点即可以不再将第一节点选择为待拷贝对象,从而避免多次拷贝失败造成的传输资源的浪费。
需要说明的是,在本申请实施例中,步骤202和步骤203是可选地步骤。也就是说,第一节点也可以不执行步骤202和步骤203。在这种情况下,第一节点执行步骤201之后,可以直接执行根据拷贝任务文件,从除第一节点和所第二节点之外的剩余节点中选择第三节点,将备份文件拷贝至第三节点的步骤。
图3示出了采用本申请实施例提供的文件拷贝方法进行文件拷贝的效果示意图。如图3所示,假设该计算机集群系统中包括主节点M和多个从节点。主节点M可以首先将源文件的备份文件和拷贝任务文件拷贝至从节点A。拷贝成功之后,从节点A即具备了拷贝文件的功能,接下来,主节点M和从节点A可以同时向其他节点拷贝文件。如图3中所示,主节点M可以继续向节点B拷贝备份文件和拷贝任务文件。与此同时,从节点A可以向从节点C拷贝备份文件和拷贝任务文件。在拷贝成功之后,从节点B和从节点C也具备了拷贝文件的功能,接下来,主节点M、从节点A、从节点B和从节点C可以同时向其他节点拷贝文件,以此类推。由此可见,通过本申请实施例提供的文件拷贝方法进行文件拷贝,相较于相关技术中由主节点依次向每个节点拷贝,可以提升拷贝的效率,缩短拷贝时间。
在本申请实施例中,第一节点可以接收第二节点发送的备份文件和拷贝任务文件,之后,第一节点根据该拷贝任务文件,从主节点中获取多个目标节点的节点信息,根据该多个目标节点的节点信息从除第一节点和第二节点之外的剩余节点中选择第三节点,并将备份文件拷贝和拷贝任务文件拷贝至第三节点。其中,拷贝任务文件用于指示第一节点将备份文件拷贝至其他节点。由此可见,在本申请实施例中,已经存储有备份文件的节点可以在将该备份文件拷贝至其他节点的同时,使其他节点也同时具备将备份文件拷贝至剩余节点的功能,这样,所有已经存储有备份文件的节点可以并行的向未存储有备份文件的节点进行文件拷贝,提升了计算机集群系统中拷贝文件的效率,节约了拷贝时间。并且,在本申请实施例中,可以由主节点来存储并维护需要进行文件拷贝的所有节点的节点信息,这样,各个从节点即可以在主节点的节点信息指导下,将备份文件拷贝到指定的节点中。
接下来对本申请实施例提供的文件拷贝装置进行介绍。
参见图4,本申请实施例提供了一种文件拷贝装置400,该装置可以应用于图1所示的计算机集群系统中多个目标节点中任一未完成拷贝的节点中,该装置400包括:
接收模块401,用于接收第二节点发送的备份文件和拷贝任务文件,拷贝任务文件用于指示第一节点将备份文件拷贝至其他节点,第二节点是指主节点或已存储有备份文件的节点,主节点是指存储有备份文件的源文件的节点;
第一获取模块402,用于根据拷贝任务文件,从主节点中获取多个目标节点的节点信息,多个目标节点是指从计算机集群系统包括的多个从节点中选择的需要进行文件拷贝的从节点;
拷贝模块403,用于根据多个目标节点的节点信息,从多个目标节点中除第一节点和第二节点之外的剩余节点中选择第三节点,将备份文件和拷贝任务文件拷贝至第三节点,第三节点是指当前还未完成备份文件的拷贝的节点。
可选地,多个目标节点的节点信息包括多个目标节点的节点标识和每个节点标识对应的状态标识;
参见图5,拷贝模块403包括:
查找子模块4031,用于从多个目标节点的节点标识所对应的状态标识中查找对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的至少一个节点标识;
其中,第一状态标识用于指示对应的节点标识所标识的节点中当前已存储有备份文件,第二状态标识用于指示对应的节点标识所标识的节点对备份文件拷贝失败,第三状态标识用于指示对应的节点标识所标识的节点为其他存储有备份文件的节点选择的待拷贝节点;
选择子模块4032,用于从至少一个节点标识中选择一个节点标识,将选择的节点标识所标识的节点作为第三节点。
可选地,拷贝模块403还包括:
发送子模块,用于向主节点发送第一节点状态更新消息,以使主节点根据第一节点状态更新消息,将多个目标节点的节点信息中第三节点的节点标识对应的状态标识更新为第三状态标识,第一节点状态更新消息中携带第三节点的节点标识和第三状态标识。
可选地,参见图6,该装置400还包括:
生成模块404,用于根据备份文件生成第一校验码;
第二获取模块405,用于从主节点中获取第二校验码,第二校验码是主节点根据备份文件的源文件生成的校验码;
触发模块406,用于如果第一校验码和第二校验码相同,则触发第一获取模块根据拷贝任务文件,从主节点中获取多个目标节点的节点信息。
可选地,该装置400还包括:
第一发送模块,用于向主节点发送第二节点状态更新消息,以使主节点根据第二节点状态更新消息,将多个目标节点的节点信息中第一节点的节点标识对应的状态标识更新为第一状态标识,第二节点状态更新消息携带第一节点的节点标识和第一状态标识。
可选地,该装置400还包括:
第二发送模块,用于如果第一校验码和第二校验码不相同,向主节点发送第三节点状态更新消息,以使主节点根据第三节点状态更新消息,将多个目标节点的节点信息中第一节点的节点标识对应的状态标识更新为第二状态标识,第三节点状态更新消息携带第一节点的节点标识和第二状态标识。
综上所述,在本申请实施例中,第一节点可以接收第二节点发送的备份文件和拷贝任务文件,之后,第一节点根据该拷贝任务文件从主节点中获取多个目标节点的节点信息,并根据该多个目标节点的节点信息,从多个目标节点中除第一节点和第二节点之外的剩余节点中选择第三节点,并将备份文件拷贝至第三节点。其中,拷贝任务文件用于指示第一节点将备份文件拷贝至其他节点。由此可见,在本申请实施例中,已经存储有备份文件的节点可以在将该备份文件拷贝至其他节点的同时,使其他节点也同时具备将备份文件拷贝至剩余节点的功能,这样,所有已经存储有备份文件的节点可以并行的向未存储有备份文件的节点进行文件拷贝,提升了计算机集群系统中拷贝文件的效率,节约了拷贝时间。
需要说明的是:上述实施例提供的文件拷贝装置在拷贝文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件拷贝装置与文件拷贝方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是本申请实施例提供的计算机集群系统中的用于进行文件拷贝的服务器700的结构示意图。上述图2所示的实施例中的第一节点的功能即可以通过图7中所示的服务器来实现。该服务器可以是后台服务器集群中的服务器。具体来讲:
服务器700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本申请的各种实施例,服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的文件拷贝方法的指令。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述图2所示实施例提供的文件拷贝方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图2所示实施例提供的文件拷贝方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种计算机集群系统中的文件拷贝方法,其特征在于,应用于第一节点,所述方法包括:
接收第二节点发送的备份文件和拷贝任务文件,所述拷贝任务文件用于指示所述第一节点将所述备份文件拷贝至其他节点,所述拷贝任务文件为脚本文件,所述第二节点是指所述计算机集群系统中的主节点或已完成所述备份文件的拷贝的从节点,所述主节点是指存储有所述备份文件的源文件的节点,所述主节点中存储有多个目标节点的节点信息;所述多个目标节点的节点信息包括所述多个目标节点的节点标识和每个节点标识对应的状态标识;
通过运行所述拷贝任务文件,执行下述步骤:
从所述主节点中获取多个目标节点的节点信息,所述多个目标节点是指从所述计算机集群系统包括的多个从节点中选择的需要进行文件拷贝的从节点;
从所述多个目标节点的节点标识所对应的状态标识中查找对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的至少一个节点标识;其中,所述第一状态标识用于指示对应的节点标识所标识的节点已完成所述备份文件的拷贝,所述第二状态标识用于指示对应的节点标识所标识的节点对所述备份文件拷贝失败,所述第三状态标识用于指示对应的节点标识所标识的节点为其他已完成所述备份文件的拷贝的节点选择的待拷贝节点;
从所述至少一个节点标识中选择一个节点标识,将选择的节点标识所标识的节点作为第三节点,向所述主节点发送第一节点状态更新消息,以使所述主节点根据所述第一节点状态更新消息,将所述多个目标节点的节点信息中所述第三节点的节点标识对应的状态标识更新为所述第三状态标识,所述第一节点状态更新消息中携带所述第三节点的节点标识和所述第三状态标识,将所述备份文件和所述拷贝任务文件拷贝至所述第三节点,所述第三节点是指当前还未完成所述备份文件的拷贝的节点。
2.根据权利要求1所述的方法,其特征在于,所述从所述主节点中获取多个目标节点的节点信息之前,还包括:
根据所述备份文件生成第一校验码;
从所述主节点中获取第二校验码,所述第二校验码是所述主节点根据所述备份文件的源文件生成的校验码;
如果所述第一校验码和所述第二校验码相同,则执行所述从所述主节点中获取多个目标节点的节点信息的步骤。
3.根据权利要求2所述的方法,其特征在于,所述执行所述从所述主节点中获取多个目标节点的节点信息的步骤之前,还包括:
向所述主节点发送第二节点状态更新消息,以使所述主节点根据所述第二节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第一状态标识,所述第二节点状态更新消息携带所述第一节点的节点标识和所述第一状态标识。
4.根据权利要求2所述的方法,其特征在于,所述从所述主节点中获取第二校验码之后,还包括:
如果所述第一校验码和所述第二校验码不相同,则向所述主节点发送第三节点状态更新消息,以使所述主节点根据所述第三节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第二状态标识,所述第三节点状态更新消息携带所述第一节点的节点标识和所述第二状态标识。
5.一种计算机集群系统中的文件拷贝装置,其特征在于,应用于第一节点,所述装置包括:
接收模块,用于接收第二节点发送的备份文件和拷贝任务文件,所述拷贝任务文件用于指示所述第一节点将所述备份文件拷贝至其他节点,所述拷贝任务文件为脚本文件,所述第二节点是指所述计算机集群系统中的主节点或已完成所述备份文件的拷贝的从节点,所述主节点是指存储有所述备份文件的源文件的节点,所述主节点中存储有多个目标节点的节点信息;所述多个目标节点的节点信息包括所述多个目标节点的节点标识和每个节点标识对应的状态标识;
第一获取模块,用于通过运行所述拷贝任务文件,执行从所述主节点中获取多个目标节点的节点信息,所述多个目标节点是指从所述计算机集群系统包括的多个从节点中选择的需要进行文件拷贝的从节点;
拷贝模块,用于通过运行所述拷贝任务文件,执行根据所述多个目标节点的节点信息,从所述多个目标节点中除所述第一节点和所述第二节点之外的剩余节点中选择第三节点,将所述备份文件和所述拷贝任务文件拷贝至所述第三节点,所述第三节点是指当前还未完成所述备份文件的拷贝的节点;
所述拷贝模块包括:
查找子模块,用于从所述多个目标节点的节点标识所对应的状态标识中查找对应的状态标识不为第一状态标识、第二状态标识和第三状态标识的至少一个节点标识;
其中,所述第一状态标识用于指示对应的节点标识所标识的节点当前已完成所述备份文件的拷贝,所述第二状态标识用于指示对应的节点标识所标识的节点对所述备份文件拷贝失败,所述第三状态标识用于指示对应的节点标识所标识的节点为其他已完成所述备份文件的拷贝的节点选择的待拷贝节点;
选择子模块,用于从所述至少一个节点标识中选择一个节点标识,将选择的节点标识所标识的节点作为所述第三节点;
所述拷贝模块还包括:
发送子模块,用于向所述主节点发送第一节点状态更新消息,以使所述主节点根据所述第一节点状态更新消息,将所述多个目标节点的节点信息中所述第三节点的节点标识对应的状态标识更新为所述第三状态标识,所述第一节点状态更新消息中携带所述第三节点的节点标识和所述第三状态标识。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
生成模块,用于根据所述备份文件生成第一校验码;
第二获取模块,用于从所述主节点中获取第二校验码,所述第二校验码是所述主节点根据所述备份文件的源文件生成的校验码;
触发模块,用于如果所述第一校验码和所述第二校验码相同,则触发所述第一获取模块从所述主节点中获取多个目标节点的节点信息。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一发送模块,用于向所述主节点发送第二节点状态更新消息,以使所述主节点根据所述第二节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第一状态标识,所述第二节点状态更新消息携带所述第一节点的节点标识和所述第一状态标识。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二发送模块,用于如果所述第一校验码和所述第二校验码不相同,向所述主节点发送第三节点状态更新消息,以使所述主节点根据所述第三节点状态更新消息,将所述多个目标节点的节点信息中所述第一节点的节点标识对应的状态标识更新为所述第二状态标识,所述第三节点状态更新消息携带所述第一节点的节点标识和所述第二状态标识。
9.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一项方法的步骤。
CN201910684789.XA 2019-07-26 2019-07-26 计算机集群系统中的文件拷贝方法、装置及存储介质 Active CN112306962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910684789.XA CN112306962B (zh) 2019-07-26 2019-07-26 计算机集群系统中的文件拷贝方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910684789.XA CN112306962B (zh) 2019-07-26 2019-07-26 计算机集群系统中的文件拷贝方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN112306962A CN112306962A (zh) 2021-02-02
CN112306962B true CN112306962B (zh) 2024-02-23

Family

ID=74329779

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910684789.XA Active CN112306962B (zh) 2019-07-26 2019-07-26 计算机集群系统中的文件拷贝方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN112306962B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115102966A (zh) * 2022-06-01 2022-09-23 咪咕视讯科技有限公司 节点管理方法、装置、设备与计算机可读存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101483577A (zh) * 2008-01-11 2009-07-15 佳能株式会社 数据共享系统、数据共享方法及信息处理装置
US7801911B1 (en) * 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
CN103546546A (zh) * 2013-09-30 2014-01-29 蓝盾信息安全技术股份有限公司 一种大规模集群分发文件的方法
JP2014038485A (ja) * 2012-08-16 2014-02-27 Nec Corp 情報処理システム、データバックアップ方法、データバックアッププログラム
CN104142871A (zh) * 2013-05-10 2014-11-12 中国电信股份有限公司 用于数据备份的方法、装置和分布式文件系统
CN105487943A (zh) * 2015-12-09 2016-04-13 浪潮电子信息产业股份有限公司 一种自动向集群服务器各节点拷贝文件的方法
CN105518641A (zh) * 2014-05-05 2016-04-20 华为技术有限公司 点对点数据复制方法、设备和系统以及主节点切换方法、设备和系统
CN106372221A (zh) * 2016-09-07 2017-02-01 华为技术有限公司 一种文件同步的方法、设备及系统
CN106598762A (zh) * 2016-12-29 2017-04-26 上海理想信息产业(集团)有限公司 一种消息同步方法及系统
CN108696595A (zh) * 2018-05-28 2018-10-23 郑州云海信息技术有限公司 分布式集群数据同步方法、主节点、从节点、系统及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014020735A1 (ja) * 2012-08-02 2014-02-06 富士通株式会社 データ処理方法、情報処理装置およびプログラム

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801911B1 (en) * 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
CN101483577A (zh) * 2008-01-11 2009-07-15 佳能株式会社 数据共享系统、数据共享方法及信息处理装置
JP2014038485A (ja) * 2012-08-16 2014-02-27 Nec Corp 情報処理システム、データバックアップ方法、データバックアッププログラム
CN104142871A (zh) * 2013-05-10 2014-11-12 中国电信股份有限公司 用于数据备份的方法、装置和分布式文件系统
CN103546546A (zh) * 2013-09-30 2014-01-29 蓝盾信息安全技术股份有限公司 一种大规模集群分发文件的方法
CN105518641A (zh) * 2014-05-05 2016-04-20 华为技术有限公司 点对点数据复制方法、设备和系统以及主节点切换方法、设备和系统
CN105487943A (zh) * 2015-12-09 2016-04-13 浪潮电子信息产业股份有限公司 一种自动向集群服务器各节点拷贝文件的方法
CN106372221A (zh) * 2016-09-07 2017-02-01 华为技术有限公司 一种文件同步的方法、设备及系统
CN106598762A (zh) * 2016-12-29 2017-04-26 上海理想信息产业(集团)有限公司 一种消息同步方法及系统
CN108696595A (zh) * 2018-05-28 2018-10-23 郑州云海信息技术有限公司 分布式集群数据同步方法、主节点、从节点、系统及介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A proximity-aware interest-clustered P2P file sharing system;Shen H等;IEEE Transactions on Parallel and Distributed Systems;第26卷(第6期);全文 *
基于Pick-KX算法的分布式存储系统设计与实现;方伟;中国优秀硕士论文全文库 信息科技辑;全文 *
基于分布式的远程复制系统研究;叶斌等;微处理机(第04期);全文 *
蒂利等.云环境下的软件测试 迁移与执行.科学技术文献出版社,2015,第49页第2段. *

Also Published As

Publication number Publication date
CN112306962A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
US9779153B2 (en) Data transfer between storage systems using data fingerprints
US9367301B1 (en) Dynamic update of a distributed message processing system
US9917884B2 (en) File transmission method, apparatus, and distributed cluster file system
CN111399764B (zh) 数据存储方法、读取方法、装置、设备及存储介质
CN110427386B (zh) 数据处理方法、装置及计算机存储介质
CN111258726B (zh) 任务调度方法和装置
US11663170B2 (en) Method for associating data between a plurality of blockchain networks and apparatus thereof
CN110971702A (zh) 服务调用方法、装置、计算机设备及存储介质
US7849355B2 (en) Distributed object sharing system and method thereof
CN111338834B (zh) 数据存储方法和装置
WO2016116013A1 (zh) 软件升级方法和系统
CN112306962B (zh) 计算机集群系统中的文件拷贝方法、装置及存储介质
CN113434283B (zh) 服务调度方法及装置、服务器、计算机可读存储介质
CN113535262A (zh) 一种代理节点的启动控制方法、装置、设备及存储介质
CN110798358B (zh) 分布式服务标识方法、装置、计算机可读介质及电子设备
CN110798492B (zh) 数据存储方法及装置、数据处理系统
CN111092956A (zh) 资源同步方法、装置、存储介质及设备
CN109992447B (zh) 数据复制方法、装置及存储介质
CN111444148A (zh) 基于MapReduce的数据传输方法和装置
CN111367869A (zh) 镜像文件处理方法、装置、存储介质及电子设备
CN113051245A (zh) 用于迁移数据的方法、装置及系统
CN114327673B (zh) 一种任务启动方法、装置、电子设备及存储介质
CN112764897B (zh) 任务请求的处理方法、装置、系统及计算机可读存储介质
CN111147226A (zh) 数据存储方法、装置及存储介质
WO2021082538A1 (zh) 会话控制处理方法、装置、设备及介质

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