雙寫數(shù)據(jù)的方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種雙寫數(shù)據(jù)的方法和裝置,該方法包括:接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中進(jìn)行寫數(shù)據(jù)操作;若接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù);若在預(yù)設(shè)時(shí)間段內(nèi)未接收主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。本發(fā)明實(shí)施例提供的雙寫數(shù)據(jù)的方法和裝置提高了存儲系統(tǒng)的可靠性。
【專利說明】雙寫數(shù)據(jù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明實(shí)施例涉及數(shù)據(jù)備份技術(shù),尤其涉及一種雙寫數(shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002]雙寫數(shù)據(jù)是將主機(jī)寫入主存儲系統(tǒng)中的主邏輯單元號(Logical Unit Number ;簡稱LUN)對應(yīng)的主存儲設(shè)備上的數(shù)據(jù),實(shí)時(shí)地寫到從存儲系統(tǒng)中的從LUN對應(yīng)的從存儲設(shè)備中,以保證主存儲系統(tǒng)與從存儲系統(tǒng)的數(shù)據(jù)相一致,在容災(zāi)、鏡像或遷移等應(yīng)用中,雙寫數(shù)據(jù)是否可靠對系統(tǒng)的影響非常大。
[0003]目前,在雙寫數(shù)據(jù)時(shí),若主機(jī)接收到返回重試指令,說明主存儲系統(tǒng)寫數(shù)據(jù)超時(shí),此時(shí),在從存儲系統(tǒng)寫數(shù)據(jù)成功的情況下會出現(xiàn)主從存儲系統(tǒng)的數(shù)據(jù)不一致的情況。為解決上述問題,現(xiàn)有技術(shù)中主要采用以下兩種方式:第一種,將重試指令當(dāng)作寫錯(cuò)誤處理,斷開陣列間的數(shù)據(jù)復(fù)制關(guān)系,此類異常可以通過啟動(dòng)同步操作,將主存儲系統(tǒng)的數(shù)據(jù)復(fù)制到從端存儲系統(tǒng),來保證主從端數(shù)據(jù)的一致。第二種:忽略主存儲系統(tǒng)返回的寫操作結(jié)果,將重試的寫結(jié)果返回主機(jī),主機(jī)重新發(fā)送雙寫數(shù)據(jù)請求,使主存儲系統(tǒng)和從存儲系統(tǒng)重新執(zhí)行雙寫操作,來保證主從存儲系統(tǒng)數(shù)據(jù)的一致。
[0004]然而,第一種方式中當(dāng)主存儲系統(tǒng)讀寫數(shù)據(jù)很大時(shí),會出現(xiàn)頻繁斷開陣列間復(fù)制業(yè)務(wù),主從存儲系統(tǒng)的數(shù)據(jù)一致性通過啟動(dòng)同步保證;第二種方式中若由于主機(jī)自身的讀寫壓力或主機(jī)與陣列鏈路的鏈接等問題,導(dǎo)致主機(jī)重試數(shù)據(jù)寫失敗,此時(shí),主存儲系統(tǒng)感知不到寫錯(cuò)誤,且雙寫操作正常,但主從存儲系統(tǒng)數(shù)據(jù)并未真正處于一致的狀態(tài),因而存在丟失數(shù)據(jù)的風(fēng)險(xiǎn)。因此,現(xiàn)有技術(shù)的兩種方案都存在存儲系統(tǒng)可靠性較低的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種雙寫數(shù)據(jù)的方法和裝置,用以提高存儲系統(tǒng)的可靠性。
[0006]第一方面,本發(fā)明實(shí)施例提供一種雙寫數(shù)據(jù)的方法,包括:
[0007]接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;
[0008]若接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收所述從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,則向所述主機(jī)發(fā)送寫超時(shí)消息,以使所述主機(jī)向所述主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù);
[0009]若在預(yù)設(shè)時(shí)間段內(nèi)未接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0010]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0011]若在預(yù)設(shè)時(shí)間段內(nèi)接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
[0012]結(jié)合第一方面、第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述雙寫數(shù)據(jù)請求中攜帶待寫數(shù)據(jù)的相關(guān)信息,所述相關(guān)信息包括所述待寫數(shù)據(jù)的位置和大??;
[0013]所述同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作,具體包括:
[0014]根據(jù)所述待寫數(shù)據(jù)的位置和大小,向所述主存儲設(shè)備和所述從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
[0015]結(jié)合第一方面,第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述寫數(shù)據(jù)重試消息中攜帶未完成寫操作的數(shù)據(jù)的信息;
[0016]所述使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),具體包括:
[0017]根據(jù)未完成寫操作的數(shù)據(jù)的信息獲取所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0018]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作之后,還包括:
[0019]若分別接收所述主存儲設(shè)備和所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則向所述主機(jī)發(fā)送寫數(shù)據(jù)成功指令,并刪除所述待寫數(shù)據(jù)的相關(guān)信息;或者,
[0020]若接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,且接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則中斷向所述從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,并向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
[0021]結(jié)合第一方面的第二種或第一方面的第四種任一種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作之后,還包括:
[0022]若在所述預(yù)設(shè)時(shí)間段內(nèi)接收所述主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息。
[0023]結(jié)合第一方面的第二種或第一方面的第四種至第五種任一種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,所述使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)之后,還包括:
[0024]若接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息;
[0025]否則,中斷重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
[0026]第二方面,本發(fā)明實(shí)施例提供一種雙寫數(shù)據(jù)的裝置,包括:
[0027]接收模塊,用于接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求;
[0028]處理模塊,用于同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;
[0029]發(fā)送模塊,用于在所述接收模塊接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收所述從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,向所述主機(jī)發(fā)送寫超時(shí)消息,以使所述主機(jī)向所述主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù);
[0030]所述處理模塊,還用于若所述接收模塊在預(yù)設(shè)時(shí)間段內(nèi)未接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0031]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述處理模塊,還用于若所述接收模塊在預(yù)設(shè)時(shí)間段內(nèi)接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
[0032]結(jié)合第二方面,第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述雙寫數(shù)據(jù)請求中攜帶待寫數(shù)據(jù)的相關(guān)信息,所述相關(guān)信息包括所述待寫數(shù)據(jù)的位置和大??;
[0033]所述處理模塊還用于:
[0034]根據(jù)所述待寫數(shù)據(jù)的位置和大小,向所述主存儲設(shè)備和所述從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
[0035]結(jié)合第二方面,第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述寫數(shù)據(jù)重試消息中攜帶未完成寫操作的數(shù)據(jù)的信息;
[0036]所述處理模塊還用于:
[0037]根據(jù)未完成寫操作的數(shù)據(jù)的信息獲取所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0038]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述發(fā)送模塊還用于若所述接收模塊分別接收所述主存儲設(shè)備和所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則向所述主機(jī)發(fā)送寫數(shù)據(jù)成功指令,所述處理模塊用于刪除所述待寫數(shù)據(jù)的相關(guān)信息;
[0039]所述處理模塊還用于若所述接收模塊接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,且接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則中斷向所述從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,所述發(fā)送模塊用于向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
[0040]結(jié)合第二方面的第二種或第四種任一種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述處理模塊還用于:
[0041]若所述接收模塊在所述預(yù)設(shè)時(shí)間段內(nèi)接收所述主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息。
[0042]結(jié)合第二方面的第二種或第二方面的第四種至第五種任一種可能的實(shí)現(xiàn)方式,在第二方面的第六種可能的實(shí)現(xiàn)方式中,處理模塊還用于:
[0043]若所述接收模塊接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息則刪除所述待寫數(shù)據(jù)的相關(guān)信息;否則,中斷重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
[0044]本發(fā)明提供的雙寫數(shù)據(jù)的方法和裝置,通過接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;若主存儲系統(tǒng)接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,且接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息,則向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù),若主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。通過確定主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到未完成寫操作的數(shù)據(jù),從而使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),來保證主存儲設(shè)備和從存儲設(shè)備數(shù)據(jù)的一致,避免了通過頻繁斷開雙寫數(shù)據(jù)的業(yè)務(wù)來啟動(dòng)同步保證的情況,降低了丟失數(shù)據(jù)的風(fēng)險(xiǎn),提高了存儲系統(tǒng)的可靠性。
【專利附圖】
【附圖說明】
[0045]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0046]圖1為本發(fā)明雙寫數(shù)據(jù)的方法實(shí)施例一的流程示意圖;
[0047]圖2為本發(fā)明雙寫數(shù)據(jù)的方法實(shí)施例二的流程示意圖;
[0048]圖3為本發(fā)明雙寫數(shù)據(jù)的裝置實(shí)施例一的結(jié)構(gòu)示意圖;
[0049]圖4為本發(fā)明存儲設(shè)備實(shí)施例一的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0050]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0051]本發(fā)明實(shí)施例提供的雙寫數(shù)據(jù)的方法可以適用于附加在業(yè)務(wù)存儲空間上的鏡像、容災(zāi)系統(tǒng)、遷移或復(fù)制數(shù)據(jù)等場景中。其中,鏡像是冗余的一種類型,是將主存儲設(shè)備上的數(shù)據(jù)在從存儲設(shè)備上保存一份完全相同的副本。容災(zāi)系統(tǒng)是指在相隔較遠(yuǎn)的異地,建立兩套或多套功能相同的IT系統(tǒng),互相之間可以進(jìn)行正常狀態(tài)監(jiān)視和功能切換,當(dāng)主端系統(tǒng)因意外(如火災(zāi)、地震等)停止工作時(shí),整個(gè)應(yīng)用系統(tǒng)可以切換到從端,使得該系統(tǒng)功能可以繼續(xù)正常工作。遷移或復(fù)制數(shù)據(jù)包括通過網(wǎng)絡(luò)將主存儲設(shè)備中的數(shù)據(jù)復(fù)制到從存儲設(shè)備中或創(chuàng)建文件系統(tǒng)的備份等形式。由此可見,在鏡像、容災(zāi)系統(tǒng)、遷移或復(fù)制數(shù)據(jù)等場景中,如何在保證主存儲設(shè)備和從存儲設(shè)備中的數(shù)據(jù)相一致的情況下,提高存儲系統(tǒng)的可靠性,是一個(gè)非常重要的問題。
[0052]圖1為本發(fā)明雙寫數(shù)據(jù)的方法實(shí)施例一的流程示意圖。本發(fā)明實(shí)施例提供了一種雙寫數(shù)據(jù)的方法,該方法可以由任意的存儲系統(tǒng)來執(zhí)行,例如:存儲設(shè)備、虛擬化機(jī)頭或備份軟件等,具體可以通過軟件和/或硬件實(shí)現(xiàn)。如圖1所示,本實(shí)施例的方法可以包括:
[0053]步驟101:接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作。
[0054]在本實(shí)施例中,主存儲系統(tǒng)接收到主機(jī)發(fā)送的雙寫數(shù)據(jù)的請求之后,同時(shí)將該雙寫數(shù)據(jù)請求發(fā)送給主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備,以使主存儲系統(tǒng)向主存儲設(shè)備和從存儲設(shè)備寫數(shù)據(jù)。其中,存儲設(shè)備例如可以是存儲器、硬盤等。對于存儲設(shè)備的具體類型,本發(fā)明并不加以限制。
[0055]步驟102、若接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,則向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù)。
[0056]在本實(shí)施例中,主存儲系統(tǒng)每次向主存儲設(shè)備和從存儲設(shè)備執(zhí)行寫入數(shù)據(jù)的操作后,主存儲設(shè)備和從存儲設(shè)備便分別向主存儲系統(tǒng)返回響應(yīng)消息,該響應(yīng)消息用于表示本次寫數(shù)據(jù)是否成功。當(dāng)主存儲系統(tǒng)接收到主存儲設(shè)備返回的寫數(shù)據(jù)重試消息之后,等待從存儲設(shè)備返回響應(yīng)消息,此時(shí),無論從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息是寫數(shù)據(jù)成功、寫數(shù)據(jù)失敗還是寫數(shù)據(jù)重試,主存儲系統(tǒng)均向主機(jī)發(fā)送寫超時(shí)消息。當(dāng)主機(jī)接收到該寫超時(shí)消息之后,向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù)。
[0057]步驟103、若在預(yù)設(shè)時(shí)間段內(nèi)未接收主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0058]在本實(shí)施例中,主存儲系統(tǒng)向主機(jī)發(fā)送寫超時(shí)消息之后,會啟動(dòng)一個(gè)定時(shí)器,若在預(yù)設(shè)時(shí)間段內(nèi),主存儲系統(tǒng)未接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則讀取主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并利用該數(shù)據(jù)將從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)進(jìn)行覆蓋。例如:在預(yù)設(shè)時(shí)間之后,主存儲系統(tǒng)未接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù)A,此時(shí)將主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),以保證主存儲設(shè)備和從存儲設(shè)備中的數(shù)據(jù)一致,而且可以避免雙寫數(shù)據(jù)操作的頻繁中斷,同時(shí)減輕主存儲系統(tǒng)讀寫數(shù)據(jù)的壓力。其中,對于從存儲設(shè)備來說,若本次寫數(shù)據(jù)操作失敗,則最后一次寫成功的數(shù)據(jù)是指上一次寫成功的數(shù)據(jù),若本次寫數(shù)據(jù)操作成功,則最后一次寫成功的數(shù)據(jù)是指本次寫成功的數(shù)據(jù)。
[0059]另外,通過判斷主存儲系統(tǒng)是否在預(yù)設(shè)時(shí)間段內(nèi)接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),可以減小主存儲系統(tǒng)的讀寫時(shí)延。其中,預(yù)設(shè)時(shí)間段的值可以根據(jù)經(jīng)驗(yàn)或者數(shù)據(jù)量的大小選取合適的值,例如:當(dāng)主存儲系統(tǒng)讀寫數(shù)據(jù)量大時(shí),選取1.5s,當(dāng)主存儲系統(tǒng)讀寫數(shù)據(jù)量小時(shí),選取Is。對于預(yù)設(shè)時(shí)間段的具體值的選取,本實(shí)施例在此不作特別限制。
[0060]本發(fā)明提供的雙寫數(shù)據(jù)的方法,通過接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;若主存儲系統(tǒng)接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,且接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息,則向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù),若主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。通過確定主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到未完成寫操作的數(shù)據(jù),從而使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),來保證主存儲設(shè)備和從存儲設(shè)備數(shù)據(jù)的一致,避免了通過頻繁斷開雙寫數(shù)據(jù)的業(yè)務(wù)來啟動(dòng)同步保證的情況,降低了丟失數(shù)據(jù)的風(fēng)險(xiǎn),提高了存儲系統(tǒng)的可靠性。
[0061]在上述方法實(shí)施例的基礎(chǔ)上,若主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向主存儲設(shè)備和從存儲設(shè)備中寫入主存儲設(shè)備中需要重寫的數(shù)據(jù)。例如:主存儲系統(tǒng)同時(shí)向主存儲設(shè)備和從存儲設(shè)備寫數(shù)據(jù)A,無論接收到從存儲設(shè)備發(fā)送的寫數(shù)據(jù)A成功的消息還是寫數(shù)據(jù)A失敗的消息,如果一旦接收到主存儲設(shè)備發(fā)送的寫數(shù)據(jù)A重試的消息,就認(rèn)為主存儲設(shè)備和從存儲設(shè)備中的數(shù)據(jù)不一致,此時(shí),重新將數(shù)據(jù)A寫入主存儲設(shè)備和從存儲設(shè)備中。
[0062]在上述方法實(shí)施例的基礎(chǔ)上,雙寫數(shù)據(jù)請求中攜帶有待寫數(shù)據(jù)的相關(guān)信息,其中,相關(guān)信息包括待寫數(shù)據(jù)的位置和大小,從而使主存儲系統(tǒng)可以根據(jù)待寫數(shù)據(jù)的位置和大小,向主存儲設(shè)備和從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
[0063]在上述方法實(shí)施例的基礎(chǔ)上,寫數(shù)據(jù)重試消息中攜帶有未完成寫操作的數(shù)據(jù)的信息,從而使主存儲系統(tǒng)可以根據(jù)主存儲設(shè)備返回的寫數(shù)據(jù)重試消息中攜帶的未完成寫操作的數(shù)據(jù)的相關(guān)信息,確定出需要重寫的數(shù)據(jù),并將需要重寫的數(shù)據(jù)進(jìn)行標(biāo)記。另外,主機(jī)接收到寫超時(shí)消息后,向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù),可選的,當(dāng)主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將對重寫的數(shù)據(jù)所作的標(biāo)記刪除,同時(shí)根據(jù)主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),重新向主存儲設(shè)備和從存儲設(shè)備中寫入該未完成寫操作的數(shù)據(jù);當(dāng)主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)沒有接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則主存儲系統(tǒng)可以根據(jù)所作的標(biāo)記,獲取主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用該數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),其中,所作的標(biāo)記中包括未完成寫操作的數(shù)據(jù)的位置和大小。
[0064]圖2為本發(fā)明雙寫數(shù)據(jù)的方法實(shí)施例二的流程示意圖。本實(shí)施例在雙寫數(shù)據(jù)的方法實(shí)施例一的基礎(chǔ)上,對若接收到主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息的實(shí)施例,作詳細(xì)說明。如圖2所示,本實(shí)施例的方法可以包括:
[0065]步驟201:接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作。
[0066]在本實(shí)施例中,雙寫數(shù)據(jù)請求中攜帶有待寫數(shù)據(jù)的位置和大小,以使主存儲系統(tǒng)獲知將哪些數(shù)據(jù)寫入主存儲設(shè)備和從存儲設(shè)備中,并根據(jù)待寫數(shù)據(jù)的位置和大小,向主存儲設(shè)備和從存儲設(shè)備中進(jìn)行寫數(shù)據(jù)的操作。
[0067]步驟202、判斷是否接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息。
[0068]若是,則執(zhí)行步驟203后直接執(zhí)行步驟208,否則,執(zhí)行步驟204。
[0069]步驟203、接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息,向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù)。
[0070]在本實(shí)施例中,若主存儲系統(tǒng)接收到主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,會等待從存儲設(shè)備返回寫數(shù)據(jù)響應(yīng)消息,當(dāng)接收到從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,根據(jù)寫數(shù)據(jù)重試消息中攜帶的未完成寫操作的數(shù)據(jù)的信息,標(biāo)記出需要重寫的數(shù)據(jù),同時(shí)啟動(dòng)重試定時(shí)器,判斷主存儲系統(tǒng)是否能在預(yù)設(shè)的時(shí)間段內(nèi)接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù)。
[0071]步驟204、確定接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息。
[0072]步驟205、判斷是否接收從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息。
[0073]若是,執(zhí)行步驟206,否則,執(zhí)行步驟207。
[0074]步驟206、向主機(jī)發(fā)送寫數(shù)據(jù)成功指令,并刪除待寫數(shù)據(jù)的相關(guān)信息。
[0075]在本實(shí)施例中,主存儲系統(tǒng)分別接收到主存儲設(shè)備和從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息后,向主機(jī)返回寫數(shù)據(jù)成功的指令,同時(shí),將待寫數(shù)據(jù)的位置和大小刪除,以進(jìn)行下一個(gè)數(shù)據(jù)的雙寫操作。
[0076]步驟207、中斷向從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,并向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
[0077]在本實(shí)施例中,當(dāng)主存儲系統(tǒng)接收到主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,而從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息時(shí),此時(shí)從存儲設(shè)備的數(shù)據(jù)不可用,因此,將中斷向從存儲設(shè)備繼續(xù)進(jìn)行寫數(shù)據(jù)的操作,并向主機(jī)返回寫數(shù)據(jù)成功的指令,并記錄從存儲設(shè)備中寫失敗的數(shù)據(jù)的位置和大小。
[0078]步驟208、判斷是否在預(yù)設(shè)時(shí)間段內(nèi)接收主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù)。
[0079]在本實(shí)施例中,通過啟動(dòng)一個(gè)定時(shí)器,判斷主存儲系統(tǒng)是否在預(yù)設(shè)時(shí)間段內(nèi)接收主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),若是,則執(zhí)行步驟209,否則,執(zhí)行步驟211。
[0080]步驟209、將重新向主存儲設(shè)備和從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
[0081]在本實(shí)施例中,若主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將該未完成寫操作的數(shù)據(jù)重新寫入主存儲設(shè)備和從存儲設(shè)備中。
[0082]步驟210、若在預(yù)設(shè)時(shí)間段內(nèi)接收主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除待寫數(shù)據(jù)的相關(guān)信息。
[0083]在本實(shí)施例中,若主存儲設(shè)備在預(yù)設(shè)的時(shí)間段內(nèi)完成了重寫操作,則主存儲設(shè)備和從存儲設(shè)備的數(shù)據(jù)相同,此時(shí),將設(shè)置的定時(shí)器和記錄的待寫數(shù)據(jù)的位置和大小等相關(guān)信息刪除,以進(jìn)行下一個(gè)數(shù)據(jù)的雙寫操作。
[0084]步驟211、使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0085]在本實(shí)施例中,若主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則根據(jù)對需要重寫的數(shù)據(jù)所作的標(biāo)記,獲取主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用該數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),由此可見,當(dāng)主存儲設(shè)備寫數(shù)據(jù)超時(shí)之后,可以自動(dòng)地將主存儲設(shè)備和從存儲設(shè)備的數(shù)據(jù)進(jìn)行數(shù)據(jù)一致性的修復(fù),避免了人工的干預(yù),提高了系統(tǒng)的自愈性。
[0086]需要進(jìn)行說明的是,若主存儲系統(tǒng)接收到主存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則保存待寫數(shù)據(jù)的相關(guān)信息,同時(shí)向主機(jī)返回寫數(shù)據(jù)失敗指令。
[0087]本發(fā)明提供的雙寫數(shù)據(jù)的方法,通過接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;若主存儲系統(tǒng)接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù),若在預(yù)設(shè)時(shí)間段內(nèi)主存儲系統(tǒng)未接收主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。通過確定主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到未完成寫操作的數(shù)據(jù),從而使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),來保證主存儲設(shè)備和從存儲設(shè)備數(shù)據(jù)的一致,避免了通過頻繁斷開雙寫數(shù)據(jù)的業(yè)務(wù)來啟動(dòng)同步保證的情況,降低了丟失數(shù)據(jù)的風(fēng)險(xiǎn),提高了存儲系統(tǒng)的可靠性。
[0088]可選地,在上述方法實(shí)施例的基礎(chǔ)上,使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)之后,若接收從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則刪除待寫數(shù)據(jù)的相關(guān)信息;否則,重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
[0089]具體地,使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)之后,從存儲設(shè)備將會返回寫數(shù)據(jù)的結(jié)果,若從存儲設(shè)備寫數(shù)據(jù)成功,則向主存儲系統(tǒng)返回寫數(shù)據(jù)重試消息,同時(shí)將記錄的待寫數(shù)據(jù)的位置和大小等相關(guān)信息刪除;若從存儲設(shè)備返回寫數(shù)據(jù)失敗消息,則向主存儲系統(tǒng)上報(bào)復(fù)制數(shù)據(jù)錯(cuò)誤信息,并中斷重新向主存儲設(shè)備和從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作,即中斷主存儲設(shè)備和從存儲設(shè)備之間的復(fù)制關(guān)系,同時(shí)將記錄寫數(shù)據(jù)的差異,并向主機(jī)發(fā)送主存儲系統(tǒng)寫數(shù)據(jù)的結(jié)果。在具體的實(shí)現(xiàn)過程中,可以通過手動(dòng)啟同步的方式,將主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),保證主存儲設(shè)備和從存儲設(shè)備中數(shù)據(jù)的一致性。
[0090]圖3為本發(fā)明雙寫數(shù)據(jù)的裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖3所示,本發(fā)明實(shí)施例提供的雙寫數(shù)據(jù)的裝置包括接收模塊301,處理模塊302和發(fā)送模塊303。
[0091 ] 其中,接收模塊301用于接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求;處理模塊302用于同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;發(fā)送模塊303用于在所述接收模塊接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收所述從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,向所述主機(jī)發(fā)送寫超時(shí)消息,以使所述主機(jī)向所述主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù);所述處理模塊302還用于若所述接收模塊在預(yù)設(shè)時(shí)間段內(nèi)未接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0092]本發(fā)明提供的雙寫數(shù)據(jù)的裝置,通過接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;若主存儲系統(tǒng)接收主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,且接收從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息,則向主機(jī)發(fā)送寫超時(shí)消息,以使主機(jī)向主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù),若主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。通過確定主存儲系統(tǒng)在預(yù)設(shè)時(shí)間段內(nèi)未接收到未完成寫操作的數(shù)據(jù),從而使用主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),來保證主存儲設(shè)備和從存儲設(shè)備數(shù)據(jù)的一致,避免了通過頻繁斷開雙寫數(shù)據(jù)的業(yè)務(wù)來啟動(dòng)同步保證的情況,降低了丟失數(shù)據(jù)的風(fēng)險(xiǎn),提高了存儲系統(tǒng)的可靠性。
[0093]可選地,所述處理模塊302還用于若所述接收模塊在預(yù)設(shè)時(shí)間段內(nèi)接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
[0094]可選地,所述雙寫數(shù)據(jù)請求中攜帶待寫數(shù)據(jù)的相關(guān)信息,所述相關(guān)信息包括所述待寫數(shù)據(jù)的位置和大??;
[0095]所述處理模塊302還用于:
[0096]根據(jù)所述待寫數(shù)據(jù)的位置和大小,向所述主存儲設(shè)備和所述從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
[0097]可選地,所述寫數(shù)據(jù)重試消息中攜帶未完成寫操作的數(shù)據(jù)的信息;
[0098]所述處理模塊302還用于:
[0099]根據(jù)未完成寫操作的數(shù)據(jù)的信息獲取所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0100]可選地,所述發(fā)送模塊303還用于若所述接收模塊301分別接收所述主存儲設(shè)備和所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則向所述主機(jī)發(fā)送寫數(shù)據(jù)成功指令,所述處理模塊302用于刪除所述待寫數(shù)據(jù)的相關(guān)信息;
[0101]所述處理模塊302還用于若所述接收模塊301接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,且接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則中斷向所述從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,所述發(fā)送模塊303用于向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
[0102]可選地,所述處理模塊302還用于:
[0103]若所述接收模塊301在所述預(yù)設(shè)時(shí)間段內(nèi)接收所述主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息。
[0104]可選地,所述處理模塊302還用于:
[0105]若所述接收模塊301接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息;否則,中斷向所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
[0106]本實(shí)施例的雙寫數(shù)據(jù)的裝置,可以用于執(zhí)行本發(fā)明任意實(shí)施例所提供的雙寫數(shù)據(jù)的方法的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0107]圖4為本發(fā)明存儲設(shè)備實(shí)施例一的結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施例提供的存儲設(shè)備包括接收器10、處理器11和發(fā)送器12。
[0108]其中,接收器10用于接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,處理器11用于同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作;所述發(fā)送器12用于若接收器10接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收所述從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,則向所述主機(jī)發(fā)送寫超時(shí)消息,以使所述主機(jī)向所述主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù);所述處理器11還用于若所述接收器10在預(yù)設(shè)時(shí)間段內(nèi)未接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0109]本發(fā)明實(shí)施例提供的存儲設(shè)備,可以執(zhí)行上述雙寫數(shù)據(jù)的方法的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,在此不再贅述。
[0110]在本發(fā)明實(shí)施例中,所述處理器11還用于若所述接收器10在預(yù)設(shè)時(shí)間段內(nèi)接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
[0111]在本發(fā)明實(shí)施例中,所述雙寫數(shù)據(jù)請求中攜帶待寫數(shù)據(jù)的相關(guān)信息,所述相關(guān)信息包括所述待寫數(shù)據(jù)的位置和大??;所述處理器11還用于根據(jù)所述待寫數(shù)據(jù)的位置和大小,向所述主存儲設(shè)備和所述從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
[0112]在本發(fā)明實(shí)施例中,所述寫數(shù)據(jù)重試消息中攜帶未完成寫操作的數(shù)據(jù)的信息;所述處理器11還用于根據(jù)未完成寫操作的數(shù)據(jù)的信息獲取所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
[0113]在本發(fā)明實(shí)施例中,所述發(fā)送器12還用于若所述接收器10分別接收所述主存儲設(shè)備和所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則向所述主機(jī)發(fā)送寫數(shù)據(jù)成功指令,所述處理器11用于刪除所述待寫數(shù)據(jù)的相關(guān)信息;所述處理器11還用于若所述接收器10接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,且接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則中斷向所述從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,所述發(fā)送器12用于向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
[0114]在本發(fā)明實(shí)施例中,所述處理器11用于若所述接收器10在所述預(yù)設(shè)時(shí)間段內(nèi)接收所述主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息。
[0115]在本發(fā)明實(shí)施例中,所述處理器11用于若所述接收器10接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息;否則,中斷重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
[0116]本發(fā)明實(shí)施例提供的存儲設(shè)備,可以執(zhí)行上述雙寫數(shù)據(jù)的方法的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,在此不再贅述。
[0117]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0118]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種雙寫數(shù)據(jù)的方法,其特征在于,包括: 接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求,并同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作; 若接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收所述從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,則向所述主機(jī)發(fā)送寫超時(shí)消息,以使所述主機(jī)向所述主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù); 若在預(yù)設(shè)時(shí)間段內(nèi)未接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 若在預(yù)設(shè)時(shí)間段內(nèi)接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述雙寫數(shù)據(jù)請求中攜帶待寫數(shù)據(jù)的相關(guān)信息,所述相關(guān)信息包括所述待寫數(shù)據(jù)的位置和大?。? 所述同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作,具體包括: 根據(jù)所述待寫數(shù)據(jù)的位置和大小,向所述主存儲設(shè)備和所述從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
4.根據(jù)權(quán)利要求1或3所述的方法,其特征在于,所述寫數(shù)據(jù)重試消息中攜帶未完成寫操作的數(shù)據(jù)的信息; 所述使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù),具體包括: 根據(jù)未完成寫操作的數(shù)據(jù)的信息獲取所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作之后,還包括: 若分別接收所述主存儲設(shè)備和所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則向所述主機(jī)發(fā)送寫數(shù)據(jù)成功指令,并刪除所述待寫數(shù)據(jù)的相關(guān)信息;或者, 若接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,且接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則中斷向所述從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,并向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
6.根據(jù)權(quán)利要求3或5所述的方法,其特征在于,所述將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作之后,還包括: 若在所述預(yù)設(shè)時(shí)間段內(nèi)接收所述主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息。
7.根據(jù)權(quán)利要求3或5或6所述的方法,其特征在于,所述使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)之后,還包括: 若接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息; 否則,中斷重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
8.一種雙寫數(shù)據(jù)的裝置,其特征在于,包括: 接收模塊,用于接收主機(jī)發(fā)送的雙寫數(shù)據(jù)請求; 處理模塊,用于同時(shí)向主邏輯單元號LUN對應(yīng)的主存儲設(shè)備和從LUN對應(yīng)的從存儲設(shè)備中分別進(jìn)行寫數(shù)據(jù)操作; 發(fā)送模塊,用于在所述接收模塊接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)重試消息,并在接收所述從存儲設(shè)備返回的寫數(shù)據(jù)響應(yīng)消息后,向所述主機(jī)發(fā)送寫超時(shí)消息,以使所述主機(jī)向所述主存儲系統(tǒng)發(fā)送未完成寫操作的數(shù)據(jù); 所述處理模塊,還用于若所述接收模塊在預(yù)設(shè)時(shí)間段內(nèi)未接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述處理模塊,還用于若所述接收模塊在預(yù)設(shè)時(shí)間段內(nèi)接收所述主機(jī)發(fā)送的未完成寫操作的數(shù)據(jù),則將重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)操作。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述雙寫數(shù)據(jù)請求中攜帶待寫數(shù)據(jù)的相關(guān)信息,所述相關(guān)信息包括所述待寫數(shù)據(jù)的位置和大?。? 所述處理模塊還用于: 根據(jù)所述待寫數(shù)據(jù)的位置和大小,向所述主存儲設(shè)備和所述從存儲設(shè)備分別進(jìn)行寫數(shù)據(jù)操作。
11.根據(jù)權(quán)利要求8或10所述的裝置,其特征在于,所述寫數(shù)據(jù)重試消息中攜帶未完成寫操作的數(shù)據(jù)的信息; 所述處理模塊還用于: 根據(jù)未完成寫操作的數(shù)據(jù)的信息獲取所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù),并使用所述主存儲設(shè)備中上一次寫成功的數(shù)據(jù)覆蓋所述從存儲設(shè)備中最后一次寫成功的數(shù)據(jù)。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述發(fā)送模塊還用于若所述接收模塊分別接收所述主存儲設(shè)備和所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則向所述主機(jī)發(fā)送寫數(shù)據(jù)成功指令,所述處理模塊用于刪除所述待寫數(shù)據(jù)的相關(guān)信息; 所述處理模塊還用于若所述接收模塊接收所述主存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,且接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)失敗消息,則中斷向所述從存儲設(shè)備進(jìn)行的寫數(shù)據(jù)操作,所述發(fā)送模塊用于向主機(jī)發(fā)送寫數(shù)據(jù)成功指令。
13.根據(jù)權(quán)利要求10或12所述的裝置,其特征在于,所述處理模塊還用于: 若所述接收模塊在所述預(yù)設(shè)時(shí)間段內(nèi)接收所述主存儲設(shè)備發(fā)送的完成重寫操作消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息。
14.根據(jù)權(quán)利要求10或12或13所述的裝置,其特征在于,所述處理模塊還用于: 若所述接收模塊接收所述從存儲設(shè)備發(fā)送的寫數(shù)據(jù)成功消息,則刪除所述待寫數(shù)據(jù)的相關(guān)信息;否則,中斷重新向所述主存儲設(shè)備和所述從存儲設(shè)備進(jìn)行寫數(shù)據(jù)的操作。
【文檔編號】G06F12/02GK104407814SQ201410676570
【公開日】2015年3月11日 申請日期:2014年11月21日 優(yōu)先權(quán)日:2014年11月21日
【發(fā)明者】周洪宇, 陳鵬 申請人:華為技術(shù)有限公司