CN104317716B - 分布式节点间的数据传输方法及分布式节点设备 - Google Patents
分布式节点间的数据传输方法及分布式节点设备 Download PDFInfo
- Publication number
- CN104317716B CN104317716B CN201410598754.1A CN201410598754A CN104317716B CN 104317716 B CN104317716 B CN 104317716B CN 201410598754 A CN201410598754 A CN 201410598754A CN 104317716 B CN104317716 B CN 104317716B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- node
- cpu
- destination node
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式节点间的数据传输方法及分布式节点设备,用以在尽量减少占用的CPU资源的前提下,提高数据传输的安全性。该方法为:源节点的CPU获得待写入数据以及校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同,通过目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器中;源节点的CPU通过目的节点的网络IO设备获取目的节点的非易失性存储器中、已经写入的数据中的设定长度的数据,该设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据;源节点的CPU确定从目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式节点间的数据传输方法及分布式节点设备。
背景技术
目前,分布式存储***中,数据分布于多个分布式节点,为了保证数据的可靠性,数据采用多副本的保存方式,即一份数据需要保存在多个分布式节点,这就导致分布式节点之间需要频繁进行大量的数据拷贝。如图1所示的分布式存储***中,将分布式节点A中的数据的副本保存至分布式节点C中,将分布式节点B中的数据的副本保存至分布式节点D中。
为了达到高端存储所要求的吞吐量和低延时的要求,普通以太网在进行数据传输时,发送端和接收端均需要中央处理器(CPU)参与数据的搬移,且需要操作***在内核态和用户态之间进行频繁上下文切换。无限带宽(Infiniband,简称IB)网络则可以提供远程直接数据获取(RDMA)技术,采用RDMA技术在发送端和接收端进行数据传输过程中无需CPU的参与,极大的提高了数据传输的速度。
RDMA技术允许数据从一个计算机内存直接传输到另一个计算机内存,基本原理如图2所示,CPU无需参与数据传输过程(图2中的步骤2和步骤4),仅需参与数据传输前期的控制(图2中的步骤1)和数据传输完成之后的通知过程(图2中的步骤5)。
RDMA在节点之间主要有以下几种通信操作:发送(Send)操作、写(Write)操作、读(Read)操作和原子(Atomic)操作。各通信操作的数据传输均是由IB硬件完成,数据发送和数据接收过程中主机无需参与,但在发起数据传输和完成数据传输后的处理上有所不同,具体如图3所示。
其中,发送操作按照步骤1~4执行,发送操作中在发起数据传输过程和接收数据之前需要发送端和接收端的主机参与协商,并且在发送数据和接收数据完成时,发送端和接收端都需要一个通知消息(Notify)来通知主机中的应用;
写操作按照步骤1~4执行,接收端的主机无需进行任何操作,也就是说接收端主机不需要参与数据传输过程,也无需参与数据传输之前的协商和数据传输完成之后的通知过程,而发送端主机需要参与数据发送之前的通知和数据发送完成之后的通知过程;
读操作按照步骤1~4执行,接收端从发送端读取数据,发送端无需参与整个数据传输过程,也无需参与数据读取之前的通知和数据读取完成之后的通知过程,而接收端需要发起读操作,并在数据读取完成之后需要通知主机;
原子(Atomic)操作按照步骤1~3执行,原子操作中一端需要传输64比特(bite)的数据到对端,并对对端固定位置的64bite数据进行操作,例如原子增加、原子减小或原子替换的操作,此时接收端无需参数数据传输过程,而发送端需要进行通知操作。
在现有的分布式***中,分布式节点之间需要传输数据时,一般采用如图4所示的流程,具体如下:
发送端准备需要发送的缓存(Buff)信息(如缓存区的地址、长度、权限等),并将Buff信息通过RDMA的发送操作发送到接收端,并硬件通知应用消息已成功发送;
接收端硬件收到通知消息后,通知本端应用根据发送端的Buff信息发起一次RDMA读操作,接收端硬件完成读操作,将位于发送端的内存中的数据读取到本端的内存中,并通知接收端应用;
接收端应用接收到通知消息后,确定数据已经成功写入非易失性存储器,发送已读取到数据的应答消息给发送端;
发送端硬件接收到应答消息后,通知本端的应用,本端应用获得该应答消息后确定对端已经成功读取到数据,可以通知客户端输入输出完成。
该过程中,接收端CPU需要参与数据传输的控制和通知,接收端和发送端之间需要进行多次交互才能完成数据传输过程,且该交互过程无法确定数据是否完全备份至接收端的非易失性存储器,如果在数据备份不完全的情况下,***发起后续的数据处理过程,会影响***的安全性。
发明内容
本发明实施例提供一种分布式节点间的数据传输方法及分布式节点设备,用以在减少占用的CPU资源的前提下,提高数据传输的安全性。
本发明实施例提供的具体技术方案如下:
第一方面,提供了一种分布式节点间的数据传输方法,包括:
源节点的中央处理器CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同;
所述源节点的CPU通过目的节点的网络输入输出IO设备将所述待写入数据写入所述目的节点的非易失性存储器中;
所述源节点的CPU通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,所述设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据;
所述源节点的CPU确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
结合第一方面,在第一种可能的实现方式中,所述源节点的中央处理器CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,包括:
所述源节点的CPU获得待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位,在所述待写入的原始数据末端增加所述标记位,将增加所述标记位后得到的数据作为所述待写入数据,将所述标记位作为所述校验数据;
所述源节点的CPU确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功,包括:
所述源节点的CPU确定所述标记位包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
结合第一方面,在第二种可能的实现方式中,所述源节点的CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,包括:
所述源节点的CPU获得待写入的原始数据,将所述待写入的原始数据作为所述待写入数据,将所述待写入的原始数据中的从所述待写入的原始数据末端向前的设定长度的数据部分作为所述校验数据;
所述源节点的CPU确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功,包括:
所述源节点的CPU确定所述标记位包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述校验数据中的同一位置对应的字节的内容相同,确定数据备份成功。
结合第一方面至第二种可能的实现方式中的任意一种,在第三种可能的实现方式中,所述源节点的CPU通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中已经写入的数据中的、设定长度的数据,所述设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据,包括:
所述源节点的CPU将远程直接数据获取方式中的原子操作或者读操作发送给所述源节点的网络IO设备,所述原子操作或所述读操作用于指示获取已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据;
所述源节点的网络IO设备将所述原子操作或所述读操作传输给所述目的节点的网络IO设备;
所述源节点的CPU接收所述目的节点的网络IO设备发来的、根据所述原子操作或所述读操作获取的、所述目的节点的非易失性存储器中已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据。
结合第一方面至第二种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述源节点的CPU通过目的节点的网络输入输出IO设备将所述待写入数据写入所述目的节点的非易失性存储器中,包括:
所述源节点的CPU将所述待写入数据传输给所述源节点的网络IO设备;
所述源节点的网络IO设备将所述待写入数据传输给所述目的节点的网络IO设备,由所述目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器。
第二方面,本发明提供了一种分布式节点设备,包括中央处理器CPU和存储器;
所述CPU用于读取存储器中的程序执行以下步骤:
获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同,通过目的节点的网络输入输出IO设备将所述待写入数据写入所述目的节点的非易失性存储器中,通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,所述设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据,确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
结合第二方面,在第一种可能的实现方式中,还包括内存,用于保存待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位;
所述CPU具体用于:
从所述内存中获得所述待写入的原始数据以及所述标记位,在所述待写入的原始数据末端增加所述标记位,将增加所述标记位后得到的数据作为所述待写入数据,将所述标记位作为所述校验数据;
获取所述设定长度的数据后,确定所述标记位包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
结合第二方面,在第二种可能的实现方式中,还包括内存,用于保存待写入的原始数据;
所述CPU具体用于:
从所述内存中获取所述待写入的原始数据,将所述待写入的原始数据作为所述待写入数据,获取所述待写入的原始数据中的从所述待写入的原始数据末端向前的设定长度的数据部分设置为所述校验数据;
获取所述设定长度的数据后,确定所述校验数据包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述校验数据中的同一位置对应的字节的内容相同,确定数据备份成功。
结合第二方面至第二种可能的实现方式中的任意一种,在第三种可能的实现方式中,所述CPU具体用于:
将远程直接数据获取方式中的原子操作或者读操作发送给所述分布式节点设备的网络IO设备,所述原子操作或所述读操作用于指示获取已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据,由所述分布式节点设备的网络IO设备将所述原子操作或所述读操作传输给所述目的节点的网络IO设备;
接收所述目的节点的网络IO设备发来的、根据所述原子操作或所述读操作获取的、所述目的节点的非易失性存储器中已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据。
结合第二方面至第二种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述CPU具体用于:
将所述待写入数据传输给所述分布式节点设备的网络IO设备,由所述分布式节点设备的网络IO设备将所述待写入数据传输给所述目的节点的网络IO设备,由所述目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器。
基于上述技术方案,本发明实施例中,源节点的CPU通过目的节点的网络IO设备直接操作目的节点的非易失性存储器,无需目的节点的CPU参与,将该待写入数据写入目的节点的非易失性存储器中,源节点的CPU通过目的节点的网络IO设备直接操作目的节点的非易失性存储器,无需目的节点的CPU参与,获取目的节点的非易失性存储器中已经写入的数据中的、从该已经写入的数据末端向前的设定长度的数据,通过将获取的该设定长度的数据与源节点的CPU获取的校验数据比较,确定数据是否备份完全,整个数据传输过程由源节点单向控制,无需目的节点的CPU参与,在尽量减少占用的CPU资源的前提下,提高数据传输的安全性。
附图说明
图1为现有的分布式存储***架构示意图;
图2为现有的RDMA原理示意图;
图3为现有的各种RDMA通信操作示意图;
图4为现有的分布式节点之间的数据传输流程示意图;
图5为本发明实施例中分布式***中数据传输方法流程示意图;
图6为本发明实施例中主备节点之间数据传输方法流程示意图;
图7为本发明实施中主备节点之间保存数据的过程示意图;
图8本发明实施例中客户端在主节点和备节点中保存数据的方法流程示意图;
图9为本发明实施例中客户端在主节点和备节点中保存数据过程示意图;
图10为本发明实施例中分布式节点设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
以下实施例中,分布式***中的每个保存数据的主节点都预先指定一个备节点,该备节点用于保存该主节点所保存的数据的副本。数据在分布式***中存储要求满足分别在主节点和备节点上保存成功。
以下各实施例中,分布式节点的非易失性存储器满足可以被网络输入输出(IO)设备通过网络接口直接访问。例如,分布式节点的非易失性存储器(如PCIe NVRAM)可以被采用PCIe接口的网络设备(如Infiniband、RoCE设备)直接访问。
本发明实施例中,如图5所示,分布式***中数据传输的详细方法流程如下:
步骤501:源节点的CPU获得待写入数据以及用于验证该待写入数据是否备份完全的校验数据,该校验数据与该待写入数据中的从该待写入数据末端向前的设定长度的数据部分相同。
其中,源节点的CPU获得待写入数据以及校验数据,包括但不限于以下两种具体实现方式:
第一种,源节点的CPU获得待写入的原始数据以及预设的用于验证该原始数据是否备份完全的、具有设定长度的标记位,在该待写入的原始数据末端增加该标记位,将增加该标记位后得到的数据作为所述待写入数据,将该标记位作为校验数据。
其中,标记位的长度为预先指定,且标记位的每个比特位的值也是预先设置。例如,预先指定标记位的长度为64比特。
第二种,源节点的CPU获得待写入的原始数据,将该待写入的原始数据作为所述待写入数据,获取该待写入的原始数据中从该待写入的原始数据末端向前的设定长度的数据部分作为校验数据。
具体地,获得的待写入数据中包含元数据和除元数据之外的其它数据,该元数据用于描述其它数据的结构。
步骤502:源节点的CPU通过目的节点的网络IO设备将该待写入数据写入该目的节点的非易失性存储器中。
具体地,源节点的CPU将所述待写入数据传输给源节点的网络IO设备,由源节点的网络IO设备将所述待写入数据传输给目的节点的网络IO设备,由目的节点的网络IO设备将所述待写入数据写入目的节点的非易失性存储器。
步骤503:源节点的CPU通过目的节点的网络IO设备获取目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,该设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据。
具体地,源节点的CPU将远程直接数据获取方式中的原子操作或者读操作发送给源节点的网络IO设备,该原子操作或该读操作用于指示获取已经写入的数据中的从该已经写入的数据末端向前的设定长度的数据,由源节点的网络IO设备将该原子操作或该读操作传输给目的节点的网络IO设备;
源节点的CPU接收目的节点的网络IO设备发来的、根据该原子操作或该读操作获取的、目的节点的非易失性存储器中已经写入的数据中的、从该已经写入的数据末端向前的该设定长度的数据。
具体地,根据校验数据的长度从目的节点的非易失性存储器中获取该设定长度的数据,即获取的该设定长度的数据的长度与校验数据的长度相同。
其中,远程直接数据获取方式中的读操作定义为:源节点的CPU发起读取数据的指令,该读取数据的指令中可以携带需要获取的数据的特征,例如,数据长度、数据存储位置的指示信息等;该指令经源节点的网络IO设备传输给目的节点的网络IO设备,目的节点的网络IO设备根据该指令直接从目的端设备的非易失性存储器中获取所指示获取的数据,整个过程无需目的节点的CPU参与。
其中,远程直接数据获取方式中的原子操作中读取数据的过程与读操作的执行过程相同,区别在于,原子操作的整个执行过程不会被中断。
步骤504:源节点的CPU确定从目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
优选地,源节点的CPU从目的节点的非易失性存储器获取的所述设定长度的数据后,确定所述标记位包含的字节数与所述设定长度的数据包含的字节数相同,且所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
该实施例中,源节点的CPU通过目的节点的网络IO设备直接操作目的节点的非易失性存储器,无需目的节点的CPU参与,将该待写入数据写入目的节点的非易失性存储器中,源节点的CPU通过目的节点的网络IO设备直接操作目的节点的非易失性存储器,无需目的节点的CPU参与,获取目的节点的非易失性存储器中已经写入的数据中的从该已经写入的数据末端向前的设定长度的数据,通过将获取的该设定长度的数据与源节点的CPU获取的校验数据比较,确定数据是否备份完全,整个数据传输过程由源节点单向控制,无需目的节点的CPU参与,在尽量减少占用的CPU资源的前提下,提高数据传输的安全性。
本发明实施例中,源节点可以为主节点,目的节点可以为备节点;源节点也可以为客户端,目的节点为主节点或备节点。
以下根据数据备份应用场景的不同,提供两个实施例对数据传输的过程进行具体说明。
第一实施例中,如图6所示,分布式***中主备节点之间进行数据传输的详细方法流程如下:
步骤601:主节点的CPU获得待写入数据以及用于验证该待写入数据是否备份完全的校验数据,该校验数据与该待写入数据中的从该待写入数据末端向前的设定长度的数据部分相同,通过备节点的网络IO设备将待写入数据写入备节点的非易失性存储器中。
在一个具体实施方式中,主节点的CPU接收写入数据的请求,根据该写入数据的请求获得待写入的原始数据。例如,主节点的CPU可以从该写入数据的请求中获取待写入的原始数据,或者,主节点的CPU可以根据写入数据的请求所指示的存储位置获取待写入的原始数据。
具体地,获得待写入的原始数据后,有以下两种具体实施方式:
第一种,主节点的CPU将获得待写入的原始数据作为待写入数据,获取所述待写入的原始数据中的从该待写入的原始数据末端向前的设定长度的数据部分作为校验数据;
第二种,主节点的CPU获取的待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位后,在该待写入的原始数据末端增加该标记位,将增加该标记位后得到的数据作为待写入数据,将该标记位作为校验数据。
例如,在待写入的原始数据末端增加预设的长度为64比特的标记位。
一个具体实施中,主节点的CPU获取自身的非易失性存储器中可以存放数据的起始位置,将起始位置作为该主节点的非易失性存储器中的第一数据存放位置;主节点的CPU获取备节点的非易失性存储器中可以存放数据的起始位置,将该起始位置作为该备节点的非易失性存储器中的第二数据存放位置。
其中,非易失性存储器可以是任意一种具有可持久保存、断电不丢失特性的存储介质,例如,NVDIMM、NVRAM、SSD等。
步骤602:主节点的CPU通过备节点的网络IO设备获取备节点的非易失性存储器中、已经写入的数据中的设定长度的数据,该设定长度的数据为从该已经写入的数据末端向前的设定长度的数据。
具体地,主节点的CPU获取待写入数据占用的存储空间大小,通过备节点的网络IO设备直接获取备节点的非易失性存储器中、以第二数据存放位置为起始位置确定的存储空间大小的数据中、从该数据末端向前的设定长度的数据。
具体地,主节点的CPU通过远程直接数据获取方式中的原子操作或者读操作,无需备节点的CPU参与,经由备节点的网络IO设备直接从备节点的非易失性存储器中获取以第二数据存放位置为起始位置确定的所述存储空间大小的数据中的、从该数据末端向前的设定长度的数据。其中,原子操作的优势在于可以保证主节点的访问不受备节点的影响。
其中,原子操作可以刷新传输通路(例如PCIe通路)上的缓存,保证传输通路上的缓存数据不影响待写入数据安全到达备节点的非易失性存储器。
步骤603:主节点CPU确定从备节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
具体地,主节点的CPU确定从备节点获取的该设定长度的数据与标记位不相同时,进入异常处理。
该实施例中,主节点的CPU通过备节点的网络IO设备直接操作备节点的非易失性存储器,无需备节点的CPU参与,将该待写入数据写入备节点的非易失性存储器中,主节点的CPU通过备节点的网络IO设备直接操作备节点的非易失性存储器获取该非易失性存储器已经写入的数据中从该已经写入的数据末端向前的设定长度的数据,通过比较从备节点获取的该设定长度的数据与校验数据,确定数据是否备份完全,整个数据传输过程由主节点单向控制,无需备节点的CPU参与,在尽量减少占用的CPU资源的前提下,验证数据是否备份完全,提高数据传输的安全性。
以下结合图7所示,通过一个具体实施例对第一实施例提供的数据传输过程进行说明。
步骤1:主节点A的CPU在获取的原始数据末端增加标记位,将增加标记位后得到的数据作为待写入数据。
步骤2:主节点A的CPU将自身内存(memory)中的待写入数据写入自身的非易失性存储器(NVRAM)中;主节点A的网络IO设备的Infiniband(IB)硬件经PCIe通路从自身的内存(memory)中获取待写入数据,将该待写入数据发送给备节点B的网络IO设备的Infiniband(IB)硬件,备节点B的网络IO设备的Infiniband硬件经PCIe通路将该待写入数据写入备节点B的非易失性存储器(NVRAM)。
步骤3:主节点A的CPU通过主节点A的网络IO设备的IB硬件经备节点B的网络IO设备的IB硬件,从该备节点B的非易失性存储器中获取步骤2保存的数据中的从该数据末端向前的与标记位长度一致的数据,保存至主节点A的内存中。
其中,步骤3的操作可以在步骤2的操作触发之后即时进行,与步骤2中的数据写入过程是否完成无关。只要步骤3返回成功,则可以确保步骤2是成功的。
步骤4:主节点A的CPU将步骤3获取的与标记位长度一致的数据与标记位进行比较,判断是否成功备份数据,如果两者不相同,则说明数据传输过程出现异常,需要进入异常处理如重新进行传输等;如果两者相同,说明数据传输成功,可以进行后续的操作。
第二实施例中,如图8所示,分布式***中客户端向主节点和备节点备份数据的详细方法流程如下:
步骤801:客户端的CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同,通过主节点的网络IO设备,按照第一数据存放位置将待写入数据直接写入主节点的非易失性存储器。
在一个具体实施方式中,客户端的CPU接收写入数据的请求,根据该写入数据的请求获得待写入的原始数据。例如,客户端的CPU可以从该写入数据的请求中获取待写入的原始数据,或者,客户端的CPU可以根据写入数据的请求所指示的存储位置获取待写入的原始数据。
具体地,获得待写入的原始数据后,有以下两种具体实施方式:
第一种,客户端的CPU将获得待写入的原始数据作为待写入数据,获取该待写入的原始数据中的从该待写入的原始数据末端向前的设定长度的数据部分作为校验数据;
第二种,客户端的CPU在获得的待写入的原始数据获得待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位,在所述待写入的原始数据末端增加标记位,将增加该标记位后得到的数据作为待写入数据,将所述标记位作为所述校验数据。
具体地,客户端的CPU获取主节点的非易失性存储器中可以存放数据的起始位置,将起始位置作为该主节点的非易失性存储器中的第一数据存放位置信息。
其中,客户端的CPU将待写入数据传输给客户端的网络IO设备,由客户端的网络IO设备将该待写入数据传输给主节点的网络IO设备,主节点的网络IO设备按照第一数据存放位置将待写入数据直接写入主节点的非易失性存储器中。
步骤802:客户端的CPU通过备节点的网络IO设备,按照第二数据存放位置将待写入数据直接写入备节点的非易失性存储器。
具体地,客户端的CPU获取备节点的非易失性存储器中可以存放数据的起始位置,将该起始位置作为该备节点的非易失性存储器中的第二数据存放位置信息。
其中,客户端的CPU将待写入数据传输给客户端的网络IO设备,由客户端的网络IO设备将该待写入数据传输给备节点的网络IO设备,备节点的网络IO设备按照第二数据存放位置将待写入数据直接写入备节点的非易失性存储器中。
步骤803:客户端的CPU获取待写入数据占用的存储空间大小,通过主节点的网络IO设备直接获取主节点的非易失性存储器中、以第一数据存放位置为起始位置确定的该存储空间大小的数据中、从该数据末端向前的设定长度的第一数据,以及通过备节点的网络IO设备直接获取备节点的非易失性存储器中、以第二数据存放位置为起始位置确定的该存储空间大小的数据中、从该数据末端向前的设定长度的第二数据。
具体地,客户端的CPU通过远程直接数据获取方式中的原子操作或者读操作,无需主节点的CPU参与,经由主节点的网络IO设备直接从主节点的非易失性存储器中获取第一数据。
类似地,客户端的CPU通过远程直接数据获取方式中的原子操作或者读操作,无需备节点的CPU参与,经由备节点的网络IO设备直接从备节点的非易失性存储器中获取第二数据。
其中,原子操作的优势在于可以保证主节点的访问不受备节点的影响。
步骤804:客户端的CPU确定第一数据与校验数据相同且第二数据与校验数据相同时,确定数据备份成功。
具体地,客户端的CPU确定第一数据与校验数据不相同和/或第二数据与校验数据不相同时,进入异常处理。
以下结合图9所示,通过一个具体实施例对第二实施例提供的数据传输过程进行举例说明。
步骤1:客户端的CPU在获取的原始数据末端增加标记位,将增加标记位后得到的数据作为待写入数据,将该待写入数据保存至内存中。
步骤2:客户端的CPU获取自身内存中的待写入数据,将该待写入数据发送给主节点A的网络IO设备的IB硬件和备节点B的网络IO设备的IB硬件;主节点A的网络IO设备的IB硬件经PCIe通路将该待写入数据写入自身的非易失性存储器(NVRAM)中;备节点B的网络IO设备的IB硬件经PCIe通路将该待写入数据写入自身的非易失性存储器(NVRAM)中。
步骤3:客户端的CPU通过RDMA原子操作或读操作经主节点A的网络IO设备的IB硬件从该主节点A的非易失性存储器中获取步骤2保存的数据中的从该数据末端向前的设定长度的第一数据,并保存至内存;以及通过RDMA原子操作或读操作经备节点B的网络IO设备的IB硬件从该备节点B的非易失性存储器中获取步骤2保存的数据中的从该数据末端向前的设定长度的第二数据,并保存至内存。客户端的CPU根据从主节点A获取的第一数据、从备节点B获取的第二数据以及标记位判断是否成功备份数据,并根据判断结果进行处理。
该实施例中,客户端的CPU通过主节点的网络IO设备直接从主节点的非易失性存储器中获取第一数据,以及通过备节点的网络IO设备直接从备节点的非易失性存储器中获取第二数据,通过比较第一数据、第二数据与校验数据,确定数据是否在主节点和备节点备份成功。整个数据传输过程由客户端单向控制,避免了控制端与主备节点之间的多次交互,整个数据备份过程中都无需主节点和备节点的CPU参与,简化分布式节点之间的数据传输过程,降低分布式节点之间的数据传输时延,在尽量减少占用的CPU资源的前提下,验证数据是否备份完全,提高数据传输的安全性。
基于同一发明构思,本发明第四实施例中,还提供了一种分布式节点设备,该分布式节点设备的具体实施可参见上述各实施例中源节点的描述,该源节点具体可以为主节点或客户端,重复之处不再赘述,如图10所示,该分布式节点设备主要包括CPU1001和存储器1002,其中,CPU1001用于读取存储器1002中的程序,按照程序执行以下步骤:
获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同,通过目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器中,通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,该设定长度的数据为从所述已经写入的数据末端的向前设定长度的数据,确定从所述目的节点获取的所述设定长度的数据与所述校验数据一致时,确定数据备份成功。
在一个具体实施中,还包括内存1003,用于保存待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位;
所述CPU1001具体用于:
从所述内存中获得所述待写入的原始数据以及所述标记位,在所述待写入的原始数据末端增加所述标记位,将增加所述标记位后得到的数据作为所述待写入数据,将所述标记位作为所述校验数据;
获取所述设定长度的数据后,确定所述标记位包含的字节数与所述设定长度的数据包含的字节数相同,且所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
在另一个具体实施中,还包括内存1003,用于保存待写入的原始数据;
所述CPU1001具体用于:
从所述内存中获取所述待写入的原始数据,将所述待写入的原始数据作为所述待写入数据,获取所述待写入的原始数据中的从所述待写入的原始数据末端向前的设定长度的数据部分设置为所述校验数据;
获取所述设定长度的数据后,确定所述标记位包含的字节数与所述设定长度的数据包含的字节数相同,且所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
优选地,所述CPU1001具体用于:
将远程直接数据获取方式中的原子操作或者读操作发送给所述分布式节点设备的网络IO设备,所述原子操作或所述读操作用于指示获取已经写入的数据中的、从该已经写入的数据末端向前的所述设定长度的数据,由所述分布式节点设备的网络IO设备将所述原子操作或所述读操作传输给所述目的节点的网络IO设备;
接收所述目的节点的网络IO设备发来的、根据所述原子操作或所述读操作获取的、所述目的节点的非易失性存储器中已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据。
优选地,所述CPU1001具体用于:
将所述待写入数据传输给所述分布式节点设备的网络IO设备,由所述分布式节点设备的网络IO设备将所述待写入数据传输给所述目的节点的网络IO设备,由所述目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种分布式节点间的数据传输方法,其特征在于,应用于分布式存储***中,包括:
源节点的中央处理器CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同;
所述源节点的CPU通过目的节点的网络输入输出IO设备将所述待写入数据写入所述目的节点的非易失性存储器中;
所述源节点的CPU通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,所述设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据;
所述源节点的CPU确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
2.如权利要求1所述的方法,其特征在于,所述源节点的中央处理器CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,包括:
所述源节点的CPU获得待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位,在所述待写入的原始数据末端增加所述标记位,将增加所述标记位后得到的数据作为所述待写入数据,将所述标记位作为所述校验数据;
所述源节点的CPU确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功,包括:
所述源节点的CPU确定所述标记位包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
3.如权利要求1所述的方法,其特征在于,所述源节点的CPU获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,包括:
所述源节点的CPU获得待写入的原始数据,将所述待写入的原始数据作为所述待写入数据,获取所述待写入的原始数据中的从所述待写入的原始数据末端向前的设定长度的数据部分作为所述校验数据;
所述源节点的CPU确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功,包括:
所述源节点的CPU确定所述校验数据包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述校验数据中的同一位置对应的字节的内容相同,确定数据备份成功。
4.如权利要求1、2或3所述的方法,其特征在于,所述源节点的CPU通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,所述设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据,包括:
所述源节点的CPU将远程直接数据获取方式中的原子操作或者读操作发送给所述源节点的网络IO设备,所述原子操作或所述读操作用于指示获取已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据;
所述源节点的网络IO设备将所述原子操作或所述读操作传输给所述目的节点的网络IO设备;
所述源节点的CPU接收所述目的节点的网络IO设备发来的、根据所述原子操作或所述读操作获取的、所述目的节点的非易失性存储器中已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据。
5.如权利要求1、2或3所述的方法,其特征在于,所述源节点的CPU通过目的节点的网络输入输出IO设备将所述待写入数据写入所述目的节点的非易失性存储器中,包括:
所述源节点的CPU将所述待写入数据传输给所述源节点的网络IO设备;
所述源节点的网络IO设备将所述待写入数据传输给所述目的节点的网络IO设备,由所述目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器。
6.一种分布式节点设备,其特征在于,应用于分布式存储***中,包括中央处理器CPU和存储器;
所述CPU用于读取存储器中的程序执行以下步骤:
获得待写入数据以及用于验证所述待写入数据是否备份完全的校验数据,所述校验数据与所述待写入数据中的从所述待写入数据末端向前的设定长度的数据部分相同,通过目的节点的网络输入输出IO设备将所述待写入数据写入所述目的节点的非易失性存储器中,通过所述目的节点的网络IO设备获取所述目的节点的非易失性存储器中、已经写入的数据中的、设定长度的数据,所述设定长度的数据为从所述已经写入的数据末端向前的设定长度的数据,确定从所述目的节点获取的所述设定长度的数据与所述校验数据相同时,确定数据备份成功。
7.如权利要求6所述的设备,其特征在于,还包括内存,用于保存待写入的原始数据以及预设的用于验证所述原始数据是否备份完全的、具有设定长度的标记位;
所述CPU具体用于:
从所述内存中获得所述待写入的原始数据以及所述标记位,在所述待写入的原始数据末端增加所述标记位,将增加所述标记位后得到的数据作为所述待写入数据,将所述标记位作为所述校验数据;
获取所述设定长度的数据后,确定所述标记位包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述标记位中的同一位置对应的字节的内容相同,确定数据备份成功。
8.如权利要求6所述的设备,其特征在于,还包括内存,用于保存待写入的原始数据;
所述CPU具体用于:
从所述内存中获取所述待写入的原始数据,将所述待写入的原始数据作为所述待写入数据,获取所述待写入的原始数据中的从所述待写入的原始数据末端向前的设定长度的数据部分设置为所述校验数据;
获取所述设定长度的数据后,确定所述校验数据包含的字节数与从所述目的节点获取的所述设定长度的数据包含的字节数相同,且从所述目的节点获取的所述设定长度的数据的每个字节的内容均与所述校验数据中的同一位置对应的字节的内容相同,确定数据备份成功。
9.如权利要求6、7或8所述的设备,其特征在于,所述CPU具体用于:
将远程直接数据获取方式中的原子操作或者读操作发送给所述分布式节点设备的网络IO设备,所述原子操作或所述读操作用于指示获取已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据,由所述分布式节点设备的网络IO设备将所述原子操作或所述读操作传输给所述目的节点的网络IO设备;
接收所述目的节点的网络IO设备发来的、根据所述原子操作或所述读操作获取的、所述目的节点的非易失性存储器中已经写入的数据中的、从所述已经写入的数据末端向前的所述设定长度的数据。
10.如权利要求6、7或8所述的设备,其特征在于,所述CPU具体用于:
将所述待写入数据传输给所述分布式节点设备的网络IO设备,由所述分布式节点设备的网络IO设备将所述待写入数据传输给所述目的节点的网络IO设备,由所述目的节点的网络IO设备将所述待写入数据写入所述目的节点的非易失性存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410598754.1A CN104317716B (zh) | 2014-10-30 | 2014-10-30 | 分布式节点间的数据传输方法及分布式节点设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410598754.1A CN104317716B (zh) | 2014-10-30 | 2014-10-30 | 分布式节点间的数据传输方法及分布式节点设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104317716A CN104317716A (zh) | 2015-01-28 |
CN104317716B true CN104317716B (zh) | 2017-10-24 |
Family
ID=52372951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410598754.1A Active CN104317716B (zh) | 2014-10-30 | 2014-10-30 | 分布式节点间的数据传输方法及分布式节点设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317716B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453460B (zh) * | 2015-08-12 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 一种文件分发方法、装置和*** |
CN106445409A (zh) * | 2016-09-13 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种分布式块存储的数据写入方法及装置 |
CN107592361B (zh) * | 2017-09-20 | 2020-05-29 | 郑州云海信息技术有限公司 | 一种基于双ib网络的数据传输方法、装置、设备 |
CN108494817B (zh) * | 2018-02-08 | 2022-03-04 | 华为技术有限公司 | 数据传输方法、相关装置及*** |
CN110691062B (zh) * | 2018-07-06 | 2021-01-26 | 浙江大学 | 一种数据写入方法、装置及其设备 |
CN110955734B (zh) * | 2020-02-13 | 2020-08-21 | 北京一流科技有限公司 | 逻辑节点的分布式签名决策***及其方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188569A (zh) * | 2006-11-16 | 2008-05-28 | 饶大平 | 在网络上构建数据量子空间的方法及分布式文件存储*** |
CN101577716A (zh) * | 2009-06-10 | 2009-11-11 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080243858A1 (en) * | 2006-08-01 | 2008-10-02 | Latitude Broadband, Inc. | Design and Methods for a Distributed Database, Distributed Processing Network Management System |
-
2014
- 2014-10-30 CN CN201410598754.1A patent/CN104317716B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188569A (zh) * | 2006-11-16 | 2008-05-28 | 饶大平 | 在网络上构建数据量子空间的方法及分布式文件存储*** |
CN101577716A (zh) * | 2009-06-10 | 2009-11-11 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和*** |
Non-Patent Citations (2)
Title |
---|
RDMA技术的研究与应用;刘天华等;《沈阳师范大学学报(自然科学版)》;20060430;第24卷(第2期);第185-188页 * |
工程设备CAN总线控制***设计;沈冬祥等;《微计算机信息》;20080131;第24卷(第1-2期);第50-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104317716A (zh) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
CN107209644B (zh) | 一种数据处理方法以及NVMe存储器 | |
CN110770710B (zh) | 用于控制数据加速的装置和方法 | |
US20190163364A1 (en) | System and method for tcp offload for nvme over tcp-ip | |
US10891253B2 (en) | Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks | |
US9727503B2 (en) | Storage system and server | |
CN108701004A (zh) | 一种数据处理的***、方法及对应装置 | |
US10026442B2 (en) | Data storage mechanism using storage system determined write locations | |
CN109964215B (zh) | 具有环形缓冲区镜像的远程直接存储器访问数据通信中的流控制 | |
US10116746B2 (en) | Data storage method and network interface card | |
CN105556930A (zh) | 针对远程存储器访问的nvm express控制器 | |
CN110659151B (zh) | 数据校验方法及装置,存储介质 | |
CN111930676A (zh) | 多处理器间的通信方法、装置、***及存储介质 | |
WO2019057005A1 (zh) | 数据校验的方法、装置以及网卡 | |
US9946721B1 (en) | Systems and methods for managing a network by generating files in a virtual file system | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
CN110837479A (zh) | 数据处理方法、相关设备及计算机存储介质 | |
US11809290B2 (en) | Storage system and storage queue processing following port error | |
EP3542519B1 (en) | Faster data transfer with remote direct memory access communications | |
US9619336B2 (en) | Managing production data | |
WO2022156376A1 (zh) | 一种目标地址的预取方法、***、设备及介质 | |
US10564847B1 (en) | Data movement bulk copy operation | |
KR101255265B1 (ko) | 솔리드 스테이트 드라이브 테스터에서 에러 발생장치 | |
US9715477B2 (en) | Shared-bandwidth multiple target remote copy | |
CN115129509B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |