分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法及分布式節(jié)點(diǎn)設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法及分布式節(jié)點(diǎn)設(shè)備,用以在盡量減少占用的CPU資源的前提下,提高數(shù)據(jù)傳輸?shù)陌踩?。該方法為:源?jié)點(diǎn)的CPU獲得待寫入數(shù)據(jù)以及校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同,通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)IO設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中;源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)IO設(shè)備獲取目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的設(shè)定長度的數(shù)據(jù),該設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù);源節(jié)點(diǎn)的CPU確定從目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
【專利說明】分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法及分布式節(jié)點(diǎn)設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法及分布式節(jié)點(diǎn)設(shè)備。
【背景技術(shù)】
[0002]目前,分布式存儲系統(tǒng)中,數(shù)據(jù)分布于多個(gè)分布式節(jié)點(diǎn),為了保證數(shù)據(jù)的可靠性,數(shù)據(jù)采用多副本的保存方式,即一份數(shù)據(jù)需要保存在多個(gè)分布式節(jié)點(diǎn),這就導(dǎo)致分布式節(jié)點(diǎn)之間需要頻繁進(jìn)行大量的數(shù)據(jù)拷貝。如圖1所示的分布式存儲系統(tǒng)中,將分布式節(jié)點(diǎn)A中的數(shù)據(jù)的副本保存至分布式節(jié)點(diǎn)C中,將分布式節(jié)點(diǎn)B中的數(shù)據(jù)的副本保存至分布式節(jié)點(diǎn)D中。
[0003]為了達(dá)到高端存儲所要求的吞吐量和低延時(shí)的要求,普通以太網(wǎng)在進(jìn)行數(shù)據(jù)傳輸時(shí),發(fā)送端和接收端均需要中央處理器(CPU)參與數(shù)據(jù)的搬移,且需要操作系統(tǒng)在內(nèi)核態(tài)和用戶態(tài)之間進(jìn)行頻繁上下文切換。無限帶寬(Infiniband,簡稱IB)網(wǎng)絡(luò)則可以提供遠(yuǎn)程直接數(shù)據(jù)獲取(RDMA)技術(shù),采用RDMA技術(shù)在發(fā)送端和接收端進(jìn)行數(shù)據(jù)傳輸過程中無需CPU的參與,極大的提高了數(shù)據(jù)傳輸?shù)乃俣取?br>
[0004]RDMA技術(shù)允許數(shù)據(jù)從一個(gè)計(jì)算機(jī)內(nèi)存直接傳輸?shù)搅硪粋€(gè)計(jì)算機(jī)內(nèi)存,基本原理如圖2所示,CPU無需參與數(shù)據(jù)傳輸過程(圖2中的步驟2和步驟4),僅需參與數(shù)據(jù)傳輸前期的控制(圖2中的步驟I)和數(shù)據(jù)傳輸完成之后的通知過程(圖2中的步驟5)。
[0005]RDMA在節(jié)點(diǎn)之間主要有以下幾種通信操作:發(fā)送(Send)操作、寫(Write)操作、讀(Read)操作和原子(Atomic)操作。各通信操作的數(shù)據(jù)傳輸均是由IB硬件完成,數(shù)據(jù)發(fā)送和數(shù)據(jù)接收過程中主機(jī)無需參與,但在發(fā)起數(shù)據(jù)傳輸和完成數(shù)據(jù)傳輸后的處理上有所不同,具體如圖3所示。
[0006]其中,發(fā)送操作按照步驟I?4執(zhí)行,發(fā)送操作中在發(fā)起數(shù)據(jù)傳輸過程和接收數(shù)據(jù)之前需要發(fā)送端和接收端的主機(jī)參與協(xié)商,并且在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)完成時(shí),發(fā)送端和接收端都需要一個(gè)通知消息(Notify)來通知主機(jī)中的應(yīng)用;
[0007]寫操作按照步驟I?4執(zhí)行,接收端的主機(jī)無需進(jìn)行任何操作,也就是說接收端主機(jī)不需要參與數(shù)據(jù)傳輸過程,也無需參與數(shù)據(jù)傳輸之前的協(xié)商和數(shù)據(jù)傳輸完成之后的通知過程,而發(fā)送端主機(jī)需要參與數(shù)據(jù)發(fā)送之前的通知和數(shù)據(jù)發(fā)送完成之后的通知過程;
[0008]讀操作按照步驟I?4執(zhí)行,接收端從發(fā)送端讀取數(shù)據(jù),發(fā)送端無需參與整個(gè)數(shù)據(jù)傳輸過程,也無需參與數(shù)據(jù)讀取之前的通知和數(shù)據(jù)讀取完成之后的通知過程,而接收端需要發(fā)起讀操作,并在數(shù)據(jù)讀取完成之后需要通知主機(jī);
[0009]原子(Atomic)操作按照步驟I?3執(zhí)行,原子操作中一端需要傳輸64比特(bite)的數(shù)據(jù)到對端,并對對端固定位置的64bite數(shù)據(jù)進(jìn)行操作,例如原子增加、原子減小或原子替換的操作,此時(shí)接收端無需參數(shù)數(shù)據(jù)傳輸過程,而發(fā)送端需要進(jìn)行通知操作。
[0010]在現(xiàn)有的分布式系統(tǒng)中,分布式節(jié)點(diǎn)之間需要傳輸數(shù)據(jù)時(shí),一般采用如圖4所示的流程,具體如下:
[0011]發(fā)送端準(zhǔn)備需要發(fā)送的緩存(BufT)信息(如緩存區(qū)的地址、長度、權(quán)限等),并將Buff信息通過RDMA的發(fā)送操作發(fā)送到接收端,并硬件通知應(yīng)用消息已成功發(fā)送;
[0012]接收端硬件收到通知消息后,通知本端應(yīng)用根據(jù)發(fā)送端的Buff信息發(fā)起一次RDMA讀操作,接收端硬件完成讀操作,將位于發(fā)送端的內(nèi)存中的數(shù)據(jù)讀取到本端的內(nèi)存中,并通知接收端應(yīng)用;
[0013]接收端應(yīng)用接收到通知消息后,確定數(shù)據(jù)已經(jīng)成功寫入非易失性存儲器,發(fā)送已讀取到數(shù)據(jù)的應(yīng)答消息給發(fā)送端;
[0014]發(fā)送端硬件接收到應(yīng)答消息后,通知本端的應(yīng)用,本端應(yīng)用獲得該應(yīng)答消息后確定對端已經(jīng)成功讀取到數(shù)據(jù),可以通知客戶端輸入輸出完成。
[0015]該過程中,接收端CPU需要參與數(shù)據(jù)傳輸?shù)目刂坪屯ㄖ?,接收端和發(fā)送端之間需要進(jìn)行多次交互才能完成數(shù)據(jù)傳輸過程,且該交互過程無法確定數(shù)據(jù)是否完全備份至接收端的非易失性存儲器,如果在數(shù)據(jù)備份不完全的情況下,系統(tǒng)發(fā)起后續(xù)的數(shù)據(jù)處理過程,會(huì)影響系統(tǒng)的安全性。
【發(fā)明內(nèi)容】
[0016]本發(fā)明實(shí)施例提供一種分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法及分布式節(jié)點(diǎn)設(shè)備,用以在減少占用的CPU資源的前提下,提高數(shù)據(jù)傳輸?shù)陌踩浴?br>
[0017]本發(fā)明實(shí)施例提供的具體技術(shù)方案如下:
[0018]第一方面,提供了一種分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法,包括:
[0019]源節(jié)點(diǎn)的中央處理器CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同;
[0020]所述源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)輸入輸出1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中;
[0021]所述源節(jié)點(diǎn)的CPU通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),所述設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù);
[0022]所述源節(jié)點(diǎn)的CPU確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
[0023]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述源節(jié)點(diǎn)的中央處理器CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),包括:
[0024]所述源節(jié)點(diǎn)的CPU獲得待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位,在所述待寫入的原始數(shù)據(jù)末端增加所述標(biāo)記位,將增加所述標(biāo)記位后得到的數(shù)據(jù)作為所述待寫入數(shù)據(jù),將所述標(biāo)記位作為所述校驗(yàn)數(shù)據(jù);
[0025]所述源節(jié)點(diǎn)的CPU確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功,包括:
[0026]所述源節(jié)點(diǎn)的CPU確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0027]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述源節(jié)點(diǎn)的CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),包括:
[0028]所述源節(jié)點(diǎn)的CPU獲得待寫入的原始數(shù)據(jù),將所述待寫入的原始數(shù)據(jù)作為所述待寫入數(shù)據(jù),將所述待寫入的原始數(shù)據(jù)中的從所述待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分作為所述校驗(yàn)數(shù)據(jù);
[0029]所述源節(jié)點(diǎn)的CPU確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功,包括:
[0030]所述源節(jié)點(diǎn)的CPU確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述校驗(yàn)數(shù)據(jù)中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0031]結(jié)合第一方面至第二種可能的實(shí)現(xiàn)方式中的任意一種,在第三種可能的實(shí)現(xiàn)方式中,所述源節(jié)點(diǎn)的CPU通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),所述設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),包括:
[0032]所述源節(jié)點(diǎn)的CPU將遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作發(fā)送給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,所述原子操作或所述讀操作用于指示獲取已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù);
[0033]所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述原子操作或所述讀操作傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備;
[0034]所述源節(jié)點(diǎn)的CPU接收所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備發(fā)來的、根據(jù)所述原子操作或所述讀操作獲取的、所述目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù)。
[0035]結(jié)合第一方面至第二種可能的實(shí)現(xiàn)方式中的任意一種,在第四種可能的實(shí)現(xiàn)方式中,所述源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)輸入輸出1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中,包括:
[0036]所述源節(jié)點(diǎn)的CPU將所述待寫入數(shù)據(jù)傳輸給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備;
[0037]所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器。
[0038]第二方面,本發(fā)明提供了一種分布式節(jié)點(diǎn)設(shè)備,包括中央處理器CPU和存儲器;
[0039]所述CPU用于讀取存儲器中的程序執(zhí)行以下步驟:
[0040]獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同,通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)輸入輸出1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中,通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),所述設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
[0041]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,還包括內(nèi)存,用于保存待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位;
[0042]所述CPU具體用于:
[0043]從所述內(nèi)存中獲得所述待寫入的原始數(shù)據(jù)以及所述標(biāo)記位,在所述待寫入的原始數(shù)據(jù)末端增加所述標(biāo)記位,將增加所述標(biāo)記位后得到的數(shù)據(jù)作為所述待寫入數(shù)據(jù),將所述標(biāo)記位作為所述校驗(yàn)數(shù)據(jù);
[0044]獲取所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0045]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,還包括內(nèi)存,用于保存待寫入的原始數(shù)據(jù);
[0046]所述CPU具體用于:
[0047]從所述內(nèi)存中獲取所述待寫入的原始數(shù)據(jù),將所述待寫入的原始數(shù)據(jù)作為所述待寫入數(shù)據(jù),獲取所述待寫入的原始數(shù)據(jù)中的從所述待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分設(shè)置為所述校驗(yàn)數(shù)據(jù);
[0048]獲取所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0049]結(jié)合第二方面至第二種可能的實(shí)現(xiàn)方式中的任意一種,在第三種可能的實(shí)現(xiàn)方式中,所述CPU具體用于:
[0050]將遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作發(fā)送給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,所述原子操作或所述讀操作用于指示獲取已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù),由所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述原子操作或所述讀操作傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備;
[0051]接收所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備發(fā)來的、根據(jù)所述原子操作或所述讀操作獲取的、所述目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù)。
[0052]結(jié)合第二方面至第二種可能的實(shí)現(xiàn)方式中的任意一種,在第四種可能的實(shí)現(xiàn)方式中,所述CPU具體用于:
[0053]將所述待寫入數(shù)據(jù)傳輸給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器。
[0054]基于上述技術(shù)方案,本發(fā)明實(shí)施例中,源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接操作目的節(jié)點(diǎn)的非易失性存儲器,無需目的節(jié)點(diǎn)的CPU參與,將該待寫入數(shù)據(jù)寫入目的節(jié)點(diǎn)的非易失性存儲器中,源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接操作目的節(jié)點(diǎn)的非易失性存儲器,無需目的節(jié)點(diǎn)的CPU參與,獲取目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從該已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),通過將獲取的該設(shè)定長度的數(shù)據(jù)與源節(jié)點(diǎn)的CPU獲取的校驗(yàn)數(shù)據(jù)比較,確定數(shù)據(jù)是否備份完全,整個(gè)數(shù)據(jù)傳輸過程由源節(jié)點(diǎn)單向控制,無需目的節(jié)點(diǎn)的CPU參與,在盡量減少占用的CPU資源的前提下,提高數(shù)據(jù)傳輸?shù)陌踩浴?br>
【專利附圖】
【附圖說明】
[0055]圖1為現(xiàn)有的分布式存儲系統(tǒng)架構(gòu)示意圖;
[0056]圖2為現(xiàn)有的RDMA原理示意圖;
[0057]圖3為現(xiàn)有的各種RDMA通信操作示意圖;
[0058]圖4為現(xiàn)有的分布式節(jié)點(diǎn)之間的數(shù)據(jù)傳輸流程示意圖;
[0059]圖5為本發(fā)明實(shí)施例中分布式系統(tǒng)中數(shù)據(jù)傳輸方法流程示意圖;
[0060]圖6為本發(fā)明實(shí)施例中主備節(jié)點(diǎn)之間數(shù)據(jù)傳輸方法流程示意圖;
[0061]圖7為本發(fā)明實(shí)施中主備節(jié)點(diǎn)之間保存數(shù)據(jù)的過程示意圖;
[0062]圖8本發(fā)明實(shí)施例中客戶端在主節(jié)點(diǎn)和備節(jié)點(diǎn)中保存數(shù)據(jù)的方法流程示意圖;
[0063]圖9為本發(fā)明實(shí)施例中客戶端在主節(jié)點(diǎn)和備節(jié)點(diǎn)中保存數(shù)據(jù)過程示意圖;
[0064]圖10為本發(fā)明實(shí)施例中分布式節(jié)點(diǎn)設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0065]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0066]以下實(shí)施例中,分布式系統(tǒng)中的每個(gè)保存數(shù)據(jù)的主節(jié)點(diǎn)都預(yù)先指定一個(gè)備節(jié)點(diǎn),該備節(jié)點(diǎn)用于保存該主節(jié)點(diǎn)所保存的數(shù)據(jù)的副本。數(shù)據(jù)在分布式系統(tǒng)中存儲要求滿足分別在主節(jié)點(diǎn)和備節(jié)點(diǎn)上保存成功。
[0067]以下各實(shí)施例中,分布式節(jié)點(diǎn)的非易失性存儲器滿足可以被網(wǎng)絡(luò)輸入輸出(1)設(shè)備通過網(wǎng)絡(luò)接口直接訪問。例如,分布式節(jié)點(diǎn)的非易失性存儲器(如PCIe NVRAM)可以被采用PCIe接口的網(wǎng)絡(luò)設(shè)備(如Infiniband、RoCE設(shè)備)直接訪問。
[0068]本發(fā)明實(shí)施例中,如圖5所示,分布式系統(tǒng)中數(shù)據(jù)傳輸?shù)脑敿?xì)方法流程如下:
[0069]步驟501:源節(jié)點(diǎn)的CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證該待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),該校驗(yàn)數(shù)據(jù)與該待寫入數(shù)據(jù)中的從該待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同。
[0070]其中,源節(jié)點(diǎn)的CPU獲得待寫入數(shù)據(jù)以及校驗(yàn)數(shù)據(jù),包括但不限于以下兩種具體實(shí)現(xiàn)方式:
[0071]第一種,源節(jié)點(diǎn)的CPU獲得待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證該原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位,在該待寫入的原始數(shù)據(jù)末端增加該標(biāo)記位,將增加該標(biāo)記位后得到的數(shù)據(jù)作為所述待寫入數(shù)據(jù),將該標(biāo)記位作為校驗(yàn)數(shù)據(jù)。
[0072]其中,標(biāo)記位的長度為預(yù)先指定,且標(biāo)記位的每個(gè)比特位的值也是預(yù)先設(shè)置。例如,預(yù)先指定標(biāo)記位的長度為64比特。
[0073]第二種,源節(jié)點(diǎn)的CPU獲得待寫入的原始數(shù)據(jù),將該待寫入的原始數(shù)據(jù)作為所述待寫入數(shù)據(jù),獲取該待寫入的原始數(shù)據(jù)中從該待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分作為校驗(yàn)數(shù)據(jù)。
[0074]具體地,獲得的待寫入數(shù)據(jù)中包含元數(shù)據(jù)和除元數(shù)據(jù)之外的其它數(shù)據(jù),該元數(shù)據(jù)用于描述其它數(shù)據(jù)的結(jié)構(gòu)。
[0075]步驟502:源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將該待寫入數(shù)據(jù)寫入該目的節(jié)點(diǎn)的非易失性存儲器中。
[0076]具體地,源節(jié)點(diǎn)的CPU將所述待寫入數(shù)據(jù)傳輸給源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)傳輸給目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入目的節(jié)點(diǎn)的非易失性存儲器。
[0077]步驟503:源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),該設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)。
[0078]具體地,源節(jié)點(diǎn)的CPU將遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作發(fā)送給源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,該原子操作或該讀操作用于指示獲取已經(jīng)寫入的數(shù)據(jù)中的從該已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),由源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將該原子操作或該讀操作傳輸給目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備;
[0079]源節(jié)點(diǎn)的CPU接收目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備發(fā)來的、根據(jù)該原子操作或該讀操作獲取的、目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從該已經(jīng)寫入的數(shù)據(jù)末端向前的該設(shè)定長度的數(shù)據(jù)。
[0080]具體地,根據(jù)校驗(yàn)數(shù)據(jù)的長度從目的節(jié)點(diǎn)的非易失性存儲器中獲取該設(shè)定長度的數(shù)據(jù),即獲取的該設(shè)定長度的數(shù)據(jù)的長度與校驗(yàn)數(shù)據(jù)的長度相同。
[0081]其中,遠(yuǎn)程直接數(shù)據(jù)獲取方式中的讀操作定義為:源節(jié)點(diǎn)的CPU發(fā)起讀取數(shù)據(jù)的指令,該讀取數(shù)據(jù)的指令中可以攜帶需要獲取的數(shù)據(jù)的特征,例如,數(shù)據(jù)長度、數(shù)據(jù)存儲位置的指示信息等;該指令經(jīng)源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備傳輸給目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備根據(jù)該指令直接從目的端設(shè)備的非易失性存儲器中獲取所指示獲取的數(shù)據(jù),整個(gè)過程無需目的節(jié)點(diǎn)的CPU參與。
[0082]其中,遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作中讀取數(shù)據(jù)的過程與讀操作的執(zhí)行過程相同,區(qū)別在于,原子操作的整個(gè)執(zhí)行過程不會(huì)被中斷。
[0083]步驟504:源節(jié)點(diǎn)的CPU確定從目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
[0084]優(yōu)選地,源節(jié)點(diǎn)的CPU從目的節(jié)點(diǎn)的非易失性存儲器獲取的所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0085]該實(shí)施例中,源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接操作目的節(jié)點(diǎn)的非易失性存儲器,無需目的節(jié)點(diǎn)的CPU參與,將該待寫入數(shù)據(jù)寫入目的節(jié)點(diǎn)的非易失性存儲器中,源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接操作目的節(jié)點(diǎn)的非易失性存儲器,無需目的節(jié)點(diǎn)的CPU參與,獲取目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的從該已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),通過將獲取的該設(shè)定長度的數(shù)據(jù)與源節(jié)點(diǎn)的CPU獲取的校驗(yàn)數(shù)據(jù)比較,確定數(shù)據(jù)是否備份完全,整個(gè)數(shù)據(jù)傳輸過程由源節(jié)點(diǎn)單向控制,無需目的節(jié)點(diǎn)的CPU參與,在盡量減少占用的CPU資源的前提下,提高數(shù)據(jù)傳輸?shù)陌踩浴?br>
[0086]本發(fā)明實(shí)施例中,源節(jié)點(diǎn)可以為主節(jié)點(diǎn),目的節(jié)點(diǎn)可以為備節(jié)點(diǎn);源節(jié)點(diǎn)也可以為客戶端,目的節(jié)點(diǎn)為主節(jié)點(diǎn)或備節(jié)點(diǎn)。
[0087]以下根據(jù)數(shù)據(jù)備份應(yīng)用場景的不同,提供兩個(gè)實(shí)施例對數(shù)據(jù)傳輸?shù)倪^程進(jìn)行具體說明。
[0088]第一實(shí)施例中,如圖6所示,分布式系統(tǒng)中主備節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)傳輸?shù)脑敿?xì)方法流程如下:
[0089]步驟601:主節(jié)點(diǎn)的CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證該待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),該校驗(yàn)數(shù)據(jù)與該待寫入數(shù)據(jù)中的從該待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同,通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將待寫入數(shù)據(jù)寫入備節(jié)點(diǎn)的非易失性存儲器中。
[0090]在一個(gè)【具體實(shí)施方式】中,主節(jié)點(diǎn)的CPU接收寫入數(shù)據(jù)的請求,根據(jù)該寫入數(shù)據(jù)的請求獲得待寫入的原始數(shù)據(jù)。例如,主節(jié)點(diǎn)的CPU可以從該寫入數(shù)據(jù)的請求中獲取待寫入的原始數(shù)據(jù),或者,主節(jié)點(diǎn)的CPU可以根據(jù)寫入數(shù)據(jù)的請求所指示的存儲位置獲取待寫入的原始數(shù)據(jù)。
[0091]具體地,獲得待寫入的原始數(shù)據(jù)后,有以下兩種【具體實(shí)施方式】:
[0092]第一種,主節(jié)點(diǎn)的CPU將獲得待寫入的原始數(shù)據(jù)作為待寫入數(shù)據(jù),獲取所述待寫入的原始數(shù)據(jù)中的從該待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分作為校驗(yàn)數(shù)據(jù);
[0093]第二種,主節(jié)點(diǎn)的CPU獲取的待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位后,在該待寫入的原始數(shù)據(jù)末端增加該標(biāo)記位,將增加該標(biāo)記位后得到的數(shù)據(jù)作為待寫入數(shù)據(jù),將該標(biāo)記位作為校驗(yàn)數(shù)據(jù)。
[0094]例如,在待寫入的原始數(shù)據(jù)末端增加預(yù)設(shè)的長度為64比特的標(biāo)記位。
[0095]一個(gè)具體實(shí)施中,主節(jié)點(diǎn)的CPU獲取自身的非易失性存儲器中可以存放數(shù)據(jù)的起始位置,將起始位置作為該主節(jié)點(diǎn)的非易失性存儲器中的第一數(shù)據(jù)存放位置;主節(jié)點(diǎn)的CPU獲取備節(jié)點(diǎn)的非易失性存儲器中可以存放數(shù)據(jù)的起始位置,將該起始位置作為該備節(jié)點(diǎn)的非易失性存儲器中的第二數(shù)據(jù)存放位置。
[0096]其中,非易失性存儲器可以是任意一種具有可持久保存、斷電不丟失特性的存儲介質(zhì),例如,NVDIMM、NVRAM、SSD 等。
[0097]步驟602:主節(jié)點(diǎn)的CPU通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取備節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的設(shè)定長度的數(shù)據(jù),該設(shè)定長度的數(shù)據(jù)為從該已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)。
[0098]具體地,主節(jié)點(diǎn)的CPU獲取待寫入數(shù)據(jù)占用的存儲空間大小,通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接獲取備節(jié)點(diǎn)的非易失性存儲器中、以第二數(shù)據(jù)存放位置為起始位置確定的存儲空間大小的數(shù)據(jù)中、從該數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)。
[0099]具體地,主節(jié)點(diǎn)的CPU通過遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作,無需備節(jié)點(diǎn)的CPU參與,經(jīng)由備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接從備節(jié)點(diǎn)的非易失性存儲器中獲取以第二數(shù)據(jù)存放位置為起始位置確定的所述存儲空間大小的數(shù)據(jù)中的、從該數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)。其中,原子操作的優(yōu)勢在于可以保證主節(jié)點(diǎn)的訪問不受備節(jié)點(diǎn)的影響。
[0100]其中,原子操作可以刷新傳輸通路(例如PCIe通路)上的緩存,保證傳輸通路上的緩存數(shù)據(jù)不影響待寫入數(shù)據(jù)安全到達(dá)備節(jié)點(diǎn)的非易失性存儲器。
[0101]步驟603:主節(jié)點(diǎn)CPU確定從備節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
[0102]具體地,主節(jié)點(diǎn)的CPU確定從備節(jié)點(diǎn)獲取的該設(shè)定長度的數(shù)據(jù)與標(biāo)記位不相同時(shí),進(jìn)入異常處理。
[0103]該實(shí)施例中,主節(jié)點(diǎn)的CPU通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接操作備節(jié)點(diǎn)的非易失性存儲器,無需備節(jié)點(diǎn)的CPU參與,將該待寫入數(shù)據(jù)寫入備節(jié)點(diǎn)的非易失性存儲器中,主節(jié)點(diǎn)的CPU通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接操作備節(jié)點(diǎn)的非易失性存儲器獲取該非易失性存儲器已經(jīng)寫入的數(shù)據(jù)中從該已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),通過比較從備節(jié)點(diǎn)獲取的該設(shè)定長度的數(shù)據(jù)與校驗(yàn)數(shù)據(jù),確定數(shù)據(jù)是否備份完全,整個(gè)數(shù)據(jù)傳輸過程由主節(jié)點(diǎn)單向控制,無需備節(jié)點(diǎn)的CPU參與,在盡量減少占用的CPU資源的前提下,驗(yàn)證數(shù)據(jù)是否備份完全,提高數(shù)據(jù)傳輸?shù)陌踩浴?br>
[0104]以下結(jié)合圖7所示,通過一個(gè)具體實(shí)施例對第一實(shí)施例提供的數(shù)據(jù)傳輸過程進(jìn)行說明。
[0105]步驟1:主節(jié)點(diǎn)A的CPU在獲取的原始數(shù)據(jù)末端增加標(biāo)記位,將增加標(biāo)記位后得到的數(shù)據(jù)作為待寫入數(shù)據(jù)。
[0106]步驟2:主節(jié)點(diǎn)A的CPU將自身內(nèi)存(memory)中的待寫入數(shù)據(jù)寫入自身的非易失性存儲器(NVRAM)中;主節(jié)點(diǎn)A的網(wǎng)絡(luò)1設(shè)備的Infiniband(IB)硬件經(jīng)PCIe通路從自身的內(nèi)存(memory)中獲取待寫入數(shù)據(jù),將該待寫入數(shù)據(jù)發(fā)送給備節(jié)點(diǎn)B的網(wǎng)絡(luò)1設(shè)備的Infiniband(IB)硬件,備節(jié)點(diǎn)B的網(wǎng)絡(luò)1設(shè)備的Infiniband硬件經(jīng)PCIe通路將該待寫入數(shù)據(jù)寫入備節(jié)點(diǎn)B的非易失性存儲器(NVRAM)。
[0107]步驟3:主節(jié)點(diǎn)A的CPU通過主節(jié)點(diǎn)A的網(wǎng)絡(luò)1設(shè)備的IB硬件經(jīng)備節(jié)點(diǎn)B的網(wǎng)絡(luò)1設(shè)備的IB硬件,從該備節(jié)點(diǎn)B的非易失性存儲器中獲取步驟2保存的數(shù)據(jù)中的從該數(shù)據(jù)末端向前的與標(biāo)記位長度一致的數(shù)據(jù),保存至主節(jié)點(diǎn)A的內(nèi)存中。
[0108]其中,步驟3的操作可以在步驟2的操作觸發(fā)之后即時(shí)進(jìn)行,與步驟2中的數(shù)據(jù)寫入過程是否完成無關(guān)。只要步驟3返回成功,則可以確保步驟2是成功的。
[0109]步驟4:主節(jié)點(diǎn)A的CPU將步驟3獲取的與標(biāo)記位長度一致的數(shù)據(jù)與標(biāo)記位進(jìn)行比較,判斷是否成功備份數(shù)據(jù),如果兩者不相同,則說明數(shù)據(jù)傳輸過程出現(xiàn)異常,需要進(jìn)入異常處理如重新進(jìn)行傳輸?shù)?;如果兩者相同,說明數(shù)據(jù)傳輸成功,可以進(jìn)行后續(xù)的操作。
[0110]第二實(shí)施例中,如圖8所示,分布式系統(tǒng)中客戶端向主節(jié)點(diǎn)和備節(jié)點(diǎn)備份數(shù)據(jù)的詳細(xì)方法流程如下:
[0111]步驟801:客戶端的CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同,通過主節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,按照第一數(shù)據(jù)存放位置將待寫入數(shù)據(jù)直接寫入主節(jié)點(diǎn)的非易失性存儲器。
[0112]在一個(gè)【具體實(shí)施方式】中,客戶端的CPU接收寫入數(shù)據(jù)的請求,根據(jù)該寫入數(shù)據(jù)的請求獲得待寫入的原始數(shù)據(jù)。例如,客戶端的CPU可以從該寫入數(shù)據(jù)的請求中獲取待寫入的原始數(shù)據(jù),或者,客戶端的CPU可以根據(jù)寫入數(shù)據(jù)的請求所指示的存儲位置獲取待寫入的原始數(shù)據(jù)。
[0113]具體地,獲得待寫入的原始數(shù)據(jù)后,有以下兩種【具體實(shí)施方式】:
[0114]第一種,客戶端的CPU將獲得待寫入的原始數(shù)據(jù)作為待寫入數(shù)據(jù),獲取該待寫入的原始數(shù)據(jù)中的從該待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分作為校驗(yàn)數(shù)據(jù);
[0115]第二種,客戶端的CPU在獲得的待寫入的原始數(shù)據(jù)獲得待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位,在所述待寫入的原始數(shù)據(jù)末端增加標(biāo)記位,將增加該標(biāo)記位后得到的數(shù)據(jù)作為待寫入數(shù)據(jù),將所述標(biāo)記位作為所述校驗(yàn)數(shù)據(jù)。
[0116]具體地,客戶端的CPU獲取主節(jié)點(diǎn)的非易失性存儲器中可以存放數(shù)據(jù)的起始位置,將起始位置作為該主節(jié)點(diǎn)的非易失性存儲器中的第一數(shù)據(jù)存放位置信息。
[0117]其中,客戶端的CPU將待寫入數(shù)據(jù)傳輸給客戶端的網(wǎng)絡(luò)1設(shè)備,由客戶端的網(wǎng)絡(luò)1設(shè)備將該待寫入數(shù)據(jù)傳輸給主節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,主節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備按照第一數(shù)據(jù)存放位置將待寫入數(shù)據(jù)直接寫入主節(jié)點(diǎn)的非易失性存儲器中。
[0118]步驟802:客戶端的CPU通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,按照第二數(shù)據(jù)存放位置將待寫入數(shù)據(jù)直接寫入備節(jié)點(diǎn)的非易失性存儲器。
[0119]具體地,客戶端的CPU獲取備節(jié)點(diǎn)的非易失性存儲器中可以存放數(shù)據(jù)的起始位置,將該起始位置作為該備節(jié)點(diǎn)的非易失性存儲器中的第二數(shù)據(jù)存放位置信息。
[0120]其中,客戶端的CPU將待寫入數(shù)據(jù)傳輸給客戶端的網(wǎng)絡(luò)1設(shè)備,由客戶端的網(wǎng)絡(luò)1設(shè)備將該待寫入數(shù)據(jù)傳輸給備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備按照第二數(shù)據(jù)存放位置將待寫入數(shù)據(jù)直接寫入備節(jié)點(diǎn)的非易失性存儲器中。
[0121]步驟803:客戶端的CPU獲取待寫入數(shù)據(jù)占用的存儲空間大小,通過主節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接獲取主節(jié)點(diǎn)的非易失性存儲器中、以第一數(shù)據(jù)存放位置為起始位置確定的該存儲空間大小的數(shù)據(jù)中、從該數(shù)據(jù)末端向前的設(shè)定長度的第一數(shù)據(jù),以及通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接獲取備節(jié)點(diǎn)的非易失性存儲器中、以第二數(shù)據(jù)存放位置為起始位置確定的該存儲空間大小的數(shù)據(jù)中、從該數(shù)據(jù)末端向前的設(shè)定長度的第二數(shù)據(jù)。
[0122]具體地,客戶端的CPU通過遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作,無需主節(jié)點(diǎn)的CPU參與,經(jīng)由主節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接從主節(jié)點(diǎn)的非易失性存儲器中獲取第一數(shù)據(jù)。
[0123]類似地,客戶端的CPU通過遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作,無需備節(jié)點(diǎn)的CPU參與,經(jīng)由備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接從備節(jié)點(diǎn)的非易失性存儲器中獲取第二數(shù)據(jù)。
[0124]其中,原子操作的優(yōu)勢在于可以保證主節(jié)點(diǎn)的訪問不受備節(jié)點(diǎn)的影響。
[0125]步驟804:客戶端的CPU確定第一數(shù)據(jù)與校驗(yàn)數(shù)據(jù)相同且第二數(shù)據(jù)與校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
[0126]具體地,客戶端的CPU確定第一數(shù)據(jù)與校驗(yàn)數(shù)據(jù)不相同和/或第二數(shù)據(jù)與校驗(yàn)數(shù)據(jù)不相同時(shí),進(jìn)入異常處理。
[0127]以下結(jié)合圖9所示,通過一個(gè)具體實(shí)施例對第二實(shí)施例提供的數(shù)據(jù)傳輸過程進(jìn)行舉例說明。
[0128]步驟1:客戶端的CPU在獲取的原始數(shù)據(jù)末端增加標(biāo)記位,將增加標(biāo)記位后得到的數(shù)據(jù)作為待寫入數(shù)據(jù),將該待寫入數(shù)據(jù)保存至內(nèi)存中。
[0129]步驟2:客戶端的CPU獲取自身內(nèi)存中的待寫入數(shù)據(jù),將該待寫入數(shù)據(jù)發(fā)送給主節(jié)點(diǎn)A的網(wǎng)絡(luò)1設(shè)備的IB硬件和備節(jié)點(diǎn)B的網(wǎng)絡(luò)1設(shè)備的IB硬件;主節(jié)點(diǎn)A的網(wǎng)絡(luò)1設(shè)備的IB硬件經(jīng)PCIe通路將該待寫入數(shù)據(jù)寫入自身的非易失性存儲器(NVRAM)中;備節(jié)點(diǎn)B的網(wǎng)絡(luò)1設(shè)備的IB硬件經(jīng)PCIe通路將該待寫入數(shù)據(jù)寫入自身的非易失性存儲器(NVRAM)中。
[0130]步驟3:客戶端的CPU通過RDMA原子操作或讀操作經(jīng)主節(jié)點(diǎn)A的網(wǎng)絡(luò)1設(shè)備的IB硬件從該主節(jié)點(diǎn)A的非易失性存儲器中獲取步驟2保存的數(shù)據(jù)中的從該數(shù)據(jù)末端向前的設(shè)定長度的第一數(shù)據(jù),并保存至內(nèi)存;以及通過RDMA原子操作或讀操作經(jīng)備節(jié)點(diǎn)B的網(wǎng)絡(luò)1設(shè)備的IB硬件從該備節(jié)點(diǎn)B的非易失性存儲器中獲取步驟2保存的數(shù)據(jù)中的從該數(shù)據(jù)末端向前的設(shè)定長度的第二數(shù)據(jù),并保存至內(nèi)存??蛻舳说腃PU根據(jù)從主節(jié)點(diǎn)A獲取的第一數(shù)據(jù)、從備節(jié)點(diǎn)B獲取的第二數(shù)據(jù)以及標(biāo)記位判斷是否成功備份數(shù)據(jù),并根據(jù)判斷結(jié)果進(jìn)行處理。
[0131]該實(shí)施例中,客戶端的CPU通過主節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接從主節(jié)點(diǎn)的非易失性存儲器中獲取第一數(shù)據(jù),以及通過備節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備直接從備節(jié)點(diǎn)的非易失性存儲器中獲取第二數(shù)據(jù),通過比較第一數(shù)據(jù)、第二數(shù)據(jù)與校驗(yàn)數(shù)據(jù),確定數(shù)據(jù)是否在主節(jié)點(diǎn)和備節(jié)點(diǎn)備份成功。整個(gè)數(shù)據(jù)傳輸過程由客戶端單向控制,避免了控制端與主備節(jié)點(diǎn)之間的多次交互,整個(gè)數(shù)據(jù)備份過程中都無需主節(jié)點(diǎn)和備節(jié)點(diǎn)的CPU參與,簡化分布式節(jié)點(diǎn)之間的數(shù)據(jù)傳輸過程,降低分布式節(jié)點(diǎn)之間的數(shù)據(jù)傳輸時(shí)延,在盡量減少占用的CPU資源的前提下,驗(yàn)證數(shù)據(jù)是否備份完全,提高數(shù)據(jù)傳輸?shù)陌踩浴?br>
[0132]基于同一發(fā)明構(gòu)思,本發(fā)明第四實(shí)施例中,還提供了一種分布式節(jié)點(diǎn)設(shè)備,該分布式節(jié)點(diǎn)設(shè)備的具體實(shí)施可參見上述各實(shí)施例中源節(jié)點(diǎn)的描述,該源節(jié)點(diǎn)具體可以為主節(jié)點(diǎn)或客戶端,重復(fù)之處不再贅述,如圖10所示,該分布式節(jié)點(diǎn)設(shè)備主要包括CPU1001和存儲器1002,其中,CPU1001用于讀取存儲器1002中的程序,按照程序執(zhí)行以下步驟:
[0133]獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同,通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中,通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),該設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端的向前設(shè)定長度的數(shù)據(jù),確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)一致時(shí),確定數(shù)據(jù)備份成功。
[0134]在一個(gè)具體實(shí)施中,還包括內(nèi)存1003,用于保存待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位;
[0135]所述CPU1001具體用于:
[0136]從所述內(nèi)存中獲得所述待寫入的原始數(shù)據(jù)以及所述標(biāo)記位,在所述待寫入的原始數(shù)據(jù)末端增加所述標(biāo)記位,將增加所述標(biāo)記位后得到的數(shù)據(jù)作為所述待寫入數(shù)據(jù),將所述標(biāo)記位作為所述校驗(yàn)數(shù)據(jù);
[0137]獲取所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0138]在另一個(gè)具體實(shí)施中,還包括內(nèi)存1003,用于保存待寫入的原始數(shù)據(jù);
[0139]所述CPU1001具體用于:
[0140]從所述內(nèi)存中獲取所述待寫入的原始數(shù)據(jù),將所述待寫入的原始數(shù)據(jù)作為所述待寫入數(shù)據(jù),獲取所述待寫入的原始數(shù)據(jù)中的從所述待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分設(shè)置為所述校驗(yàn)數(shù)據(jù);
[0141]獲取所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
[0142]優(yōu)選地,所述CPU1001具體用于:
[0143]將遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作發(fā)送給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,所述原子操作或所述讀操作用于指示獲取已經(jīng)寫入的數(shù)據(jù)中的、從該已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù),由所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述原子操作或所述讀操作傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備;
[0144]接收所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備發(fā)來的、根據(jù)所述原子操作或所述讀操作獲取的、所述目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù)。
[0145]優(yōu)選地,所述CPU1001具體用于:
[0146]將所述待寫入數(shù)據(jù)傳輸給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器。
[0147]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0148]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0149]這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0150]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0151]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種分布式節(jié)點(diǎn)間的數(shù)據(jù)傳輸方法,其特征在于,包括: 源節(jié)點(diǎn)的中央處理器CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同; 所述源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)輸入輸出1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中; 所述源節(jié)點(diǎn)的CPU通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),所述設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù); 所述源節(jié)點(diǎn)的CPU確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
2.如權(quán)利要求1所述的方法,其特征在于,所述源節(jié)點(diǎn)的中央處理器CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),包括: 所述源節(jié)點(diǎn)的CPU獲得待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位,在所述待寫入的原始數(shù)據(jù)末端增加所述標(biāo)記位,將增加所述標(biāo)記位后得到的數(shù)據(jù)作為所述待寫入數(shù)據(jù),將所述標(biāo)記位作為所述校驗(yàn)數(shù)據(jù); 所述源節(jié)點(diǎn)的CPU確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功,包括: 所述源節(jié)點(diǎn)的CPU確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
3.如權(quán)利要求1所述的方法,其特征在于,所述源節(jié)點(diǎn)的CPU獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),包括: 所述源節(jié)點(diǎn)的CPU獲得待寫入的原始數(shù)據(jù),將所述待寫入的原始數(shù)據(jù)作為所述待寫入數(shù)據(jù),獲取所述待寫入的原始數(shù)據(jù)中的從所述待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分作為所述校驗(yàn)數(shù)據(jù); 所述源節(jié)點(diǎn)的CPU確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功,包括: 所述源節(jié)點(diǎn)的CPU確定所述校驗(yàn)數(shù)據(jù)包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述校驗(yàn)數(shù)據(jù)中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
4.如權(quán)利要求1、2或3所述的方法,其特征在于,所述源節(jié)點(diǎn)的CPU通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),所述設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),包括: 所述源節(jié)點(diǎn)的CPU將遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作發(fā)送給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,所述原子操作或所述讀操作用于指示獲取已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù); 所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述原子操作或所述讀操作傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備; 所述源節(jié)點(diǎn)的CPU接收所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備發(fā)來的、根據(jù)所述原子操作或所述讀操作獲取的、所述目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù)。
5.如權(quán)利要求1、2或3所述的方法,其特征在于,所述源節(jié)點(diǎn)的CPU通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)輸入輸出1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中,包括: 所述源節(jié)點(diǎn)的CPU將所述待寫入數(shù)據(jù)傳輸給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備; 所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器。
6.一種分布式節(jié)點(diǎn)設(shè)備,其特征在于,包括中央處理器CPU和存儲器; 所述CPU用于讀取存儲器中的程序執(zhí)行以下步驟: 獲得待寫入數(shù)據(jù)以及用于驗(yàn)證所述待寫入數(shù)據(jù)是否備份完全的校驗(yàn)數(shù)據(jù),所述校驗(yàn)數(shù)據(jù)與所述待寫入數(shù)據(jù)中的從所述待寫入數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分相同,通過目的節(jié)點(diǎn)的網(wǎng)絡(luò)輸入輸出1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器中,通過所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備獲取所述目的節(jié)點(diǎn)的非易失性存儲器中、已經(jīng)寫入的數(shù)據(jù)中的、設(shè)定長度的數(shù)據(jù),所述設(shè)定長度的數(shù)據(jù)為從所述已經(jīng)寫入的數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù),確定從所述目的節(jié)點(diǎn)獲取的所述設(shè)定長度的數(shù)據(jù)與所述校驗(yàn)數(shù)據(jù)相同時(shí),確定數(shù)據(jù)備份成功。
7.如權(quán)利要求6所述的設(shè)備,其特征在于,還包括內(nèi)存,用于保存待寫入的原始數(shù)據(jù)以及預(yù)設(shè)的用于驗(yàn)證所述原始數(shù)據(jù)是否備份完全的、具有設(shè)定長度的標(biāo)記位; 所述CPU具體用于: 從所述內(nèi)存中獲得所述待寫入的原始數(shù)據(jù)以及所述標(biāo)記位,在所述待寫入的原始數(shù)據(jù)末端增加所述標(biāo)記位,將增加所述標(biāo)記位后得到的數(shù)據(jù)作為所述待寫入數(shù)據(jù),將所述標(biāo)記位作為所述校驗(yàn)數(shù)據(jù); 獲取所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
8.如權(quán)利要求6所述的設(shè)備,其特征在于,還包括內(nèi)存,用于保存待寫入的原始數(shù)據(jù); 所述CPU具體用于: 從所述內(nèi)存中獲取所述待寫入的原始數(shù)據(jù),將所述待寫入的原始數(shù)據(jù)作為所述待寫入數(shù)據(jù),獲取所述待寫入的原始數(shù)據(jù)中的從所述待寫入的原始數(shù)據(jù)末端向前的設(shè)定長度的數(shù)據(jù)部分設(shè)置為所述校驗(yàn)數(shù)據(jù); 獲取所述設(shè)定長度的數(shù)據(jù)后,確定所述標(biāo)記位包含的字節(jié)數(shù)與所述設(shè)定長度的數(shù)據(jù)包含的字節(jié)數(shù)相同,且所述設(shè)定長度的數(shù)據(jù)的每個(gè)字節(jié)的內(nèi)容均與所述標(biāo)記位中的同一位置對應(yīng)的字節(jié)的內(nèi)容相同,確定數(shù)據(jù)備份成功。
9.如權(quán)利要求6、7或8所述的設(shè)備,其特征在于,所述CPU具體用于: 將遠(yuǎn)程直接數(shù)據(jù)獲取方式中的原子操作或者讀操作發(fā)送給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,所述原子操作或所述讀操作用于指示獲取已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù),由所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述原子操作或所述讀操作傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備; 接收所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備發(fā)來的、根據(jù)所述原子操作或所述讀操作獲取的、所述目的節(jié)點(diǎn)的非易失性存儲器中已經(jīng)寫入的數(shù)據(jù)中的、從所述已經(jīng)寫入的數(shù)據(jù)末端向前的所述設(shè)定長度的數(shù)據(jù)。
10.如權(quán)利要求6、7或8所述的設(shè)備,其特征在于,所述CPU具體用于: 將所述待寫入數(shù)據(jù)傳輸給所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述源節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)傳輸給所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備,由所述目的節(jié)點(diǎn)的網(wǎng)絡(luò)1設(shè)備將所述待寫入數(shù)據(jù)寫入所述目的節(jié)點(diǎn)的非易失性存儲器。
【文檔編號】G06F11/36GK104317716SQ201410598754
【公開日】2015年1月28日 申請日期:2014年10月30日 優(yōu)先權(quán)日:2014年10月30日
【發(fā)明者】熊四兵, 倪小珂, 李顯才 申請人:華為技術(shù)有限公司