用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法和裝置的制造方法
【專利摘要】本發(fā)明的實施方式提供了一種用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法和裝置。該方法包括在所述同步復(fù)制系統(tǒng)的源站點處執(zhí)行如下步驟:將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交;響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響;對已生成日志的事務(wù)作標(biāo)記;以及完成對已被作標(biāo)記的事務(wù)的提交。本發(fā)明的實施方式通過為事務(wù)的操作記錄日志來保持事務(wù)的“原子性”,從而解決了應(yīng)用層面不一致問題。
【專利說明】
用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明的各實施方式涉及失效切換(failover)領(lǐng)域,并且更具體地,涉及在同步復(fù)制系統(tǒng)中處理事務(wù)的方法和裝置。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的高速發(fā)展,存儲技術(shù)也逐漸變?yōu)檠芯康臒狳c之一。存儲領(lǐng)域中面臨的一個重要問題是如何對資源進(jìn)行失效切換。概括地說,術(shù)語“失效切換”涉及在一臺系統(tǒng)失效、例如發(fā)生故障或掉電從而不能對外提供服務(wù)時,切換到備份存儲系統(tǒng),由該備份存儲系統(tǒng)接管相應(yīng)功能從而對外提供服務(wù)。
[0003]為了實現(xiàn)精細(xì)粒度的失效切換,通常在源存儲系統(tǒng)和備份存儲系統(tǒng)之間執(zhí)行數(shù)據(jù)的同步復(fù)制,即在源存儲系統(tǒng)處對數(shù)據(jù)的任何改動在備份存儲系統(tǒng)處能夠?qū)崟r地發(fā)生,使得兩側(cè)的數(shù)據(jù)盡可能的保持一致。此外,由于塊層面的同步復(fù)制比文件系統(tǒng)層面的同步復(fù)制更易于實現(xiàn),因此在“失效切換”時往往采用塊層面的同步復(fù)制。
[0004]然而,在存儲系統(tǒng)包括諸如數(shù)據(jù)庫之類的基于事務(wù)機制來組織、存儲和管理的數(shù)據(jù)集合的情況下,“失效切換”可能恰好發(fā)生于在源存儲系統(tǒng)處進(jìn)行事務(wù)提交期間。在這種情況下,備份存儲系統(tǒng)處的被復(fù)制的數(shù)據(jù)集合(例如數(shù)據(jù)庫表)的一部分包含事務(wù)處理之后的數(shù)據(jù),而另一部分包含事務(wù)處理之前的數(shù)據(jù),從而使得被復(fù)制的數(shù)據(jù)庫被置于不一致狀態(tài)。由此,備份存儲系統(tǒng)將無法接管源存儲系統(tǒng)的相應(yīng)功能以對外提供服務(wù)。
【發(fā)明內(nèi)容】
[0005]鑒于上述以及其他潛在問題,本發(fā)明的各實施方式提出了一種能夠在同步復(fù)制系統(tǒng)中保持事務(wù)“原子性”的方案。
[0006]根據(jù)本發(fā)明實施方式的第一方面,提供了一種用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法。該方法包括在所述同步復(fù)制系統(tǒng)的源站點處:將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交;響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響;對已生成日志的事務(wù)作標(biāo)記;以及完成對已被作標(biāo)記的事務(wù)的提交。
[0007]在一個實施方式中,將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交包括:使得在同一時間僅有一個事務(wù)能夠獲得提交鎖。
[0008]在一個實施方式中,所述方法進(jìn)一步包括:響應(yīng)于所述源站點失效而發(fā)起向所述同步復(fù)制系統(tǒng)中的目標(biāo)站點的切換;其中,在所述源站點和所述目標(biāo)站點之間實現(xiàn)數(shù)據(jù)的同步復(fù)制。
[0009]在一個實施方式中,所述方法進(jìn)一步包括:在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記;響應(yīng)于確定所述事務(wù)已被作標(biāo)記,以針對所述事務(wù)生成的日志的內(nèi)容來更新從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。
[0010]在一個實施方式中,所述方法進(jìn)一步包括:在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記;響應(yīng)于確定所述事務(wù)未被作標(biāo)記,信任從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。
[0011]在一個實施方式中,所述方法進(jìn)一步包括:移除針對所述事務(wù)所生成的日志。
[0012]在一個實施方式中,對已生成日志的事務(wù)作標(biāo)記包括針對已生成日志的事務(wù)創(chuàng)建標(biāo)記文件。
[0013]根據(jù)本發(fā)明實施方式的第二方面,提供了一種用于在同步復(fù)制系統(tǒng)中處理事務(wù)的裝置。該裝置包括布置在所述同步復(fù)制系統(tǒng)的源站點處的:串行化單元,被配置為將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交;日志生成單元,被配置為響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響;標(biāo)記單元,被配置為對已生成日志的事務(wù)作標(biāo)記;以及提交完成單元,被配置為完成對已被作標(biāo)記的事務(wù)的提交。
[0014]根據(jù)本發(fā)明實施方式的第三方面,提供了一種計算機程序產(chǎn)品,其包括計算機可讀介質(zhì)。所述計算機可讀介質(zhì)承載在其中體現(xiàn)的用于與計算機一起使用的計算機程序代碼,所述計算機程序代碼包括:用于將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交的代碼;用于響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響的代碼;用于對已生成日志的事務(wù)作標(biāo)記的代碼;以及用于完成對已被作標(biāo)記的事務(wù)的提交的代碼。
[0015]本發(fā)明的實施方式通過為事務(wù)的操作記錄日志來保持事務(wù)的“原子性”,從而解決了應(yīng)用層面不一致問題。
【附圖說明】
[0016]結(jié)合附圖并參考以下詳細(xì)說明,本發(fā)明各實施方式的特征、優(yōu)點及其他方面將變得更加明顯,在此以示例性而非限制性的方式示出了本發(fā)明的若干實施方式。在附圖中:
[0017]圖1示出了根據(jù)本發(fā)明一個實施方式的用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法100的流程圖;
[0018]圖2示出了根據(jù)本發(fā)明一個實施方式的用于在同步復(fù)制系統(tǒng)中處理事務(wù)的裝置200的示意性框圖;以及
[0019]圖3示出了適于用來實踐本發(fā)明實施方式的計算機系統(tǒng)300的示意性框圖。
【具體實施方式】
[0020]下面參考附圖詳細(xì)描述本發(fā)明的各實施方式。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實施方式的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為備選的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0021]在本文中,同步復(fù)制系統(tǒng)例如可以包括位于源站點處的源存儲系統(tǒng)和位于目標(biāo)站點處的備份存儲系統(tǒng),并且在源存儲系統(tǒng)和備份存儲系統(tǒng)之間實現(xiàn)數(shù)據(jù)的同步復(fù)制,例如塊層面的同步復(fù)制。在源存儲系統(tǒng)失效、例如發(fā)生故障或掉電從而不能為用戶提供服務(wù)時,切換到備份存儲系統(tǒng),由該備份存儲系統(tǒng)接管相應(yīng)功能從而為用戶提供服務(wù)。
[0022]源存儲系統(tǒng)和備份存儲系統(tǒng)通常包括基于事務(wù)機制來組織、存儲和管理的數(shù)據(jù)集合,例如數(shù)據(jù)庫等。如本領(lǐng)域技術(shù)人員已知的,“事務(wù)”是指作為單個邏輯工作單元執(zhí)行的一系列相關(guān)操作。設(shè)想以下網(wǎng)上購物場景。網(wǎng)上購物的付款過程至少包括以下操作:
[0023].更新客戶所購商品的庫存信息;
[0024].保存客戶付款信息一一可能包括與銀行系統(tǒng)的交互;
[0025].生成訂單并且保存到數(shù)據(jù)庫中;
[0026].更新客戶相關(guān)信息,例如購物數(shù)量等等。
[0027]在正常情況下,以上操作將順利進(jìn)行,最終交易成功,與交易相關(guān)的所有數(shù)據(jù)庫信息也成功地更新。但是,如果在這一系列稱作中任何一個環(huán)節(jié)出現(xiàn)差錯,例如在更新商品庫存信息時發(fā)生異常、該客戶銀行帳戶存款不足等,都將導(dǎo)致交易失敗。一旦交易失敗,數(shù)據(jù)庫中所有信息都必須保持交易前的狀態(tài)不變。例如,如果最后一步更新客戶信息時失敗而導(dǎo)致交易失敗,那么必須保證這筆失敗的交易不影響數(shù)據(jù)庫的狀態(tài)一一庫存信息沒有被更新、客戶也沒有付款,訂單也沒有生成。否則,數(shù)據(jù)庫的信息將會一片混亂而不可預(yù)測。
[0028]從上述示例性場景可知,事務(wù)必須是原子工作單元,對于其數(shù)據(jù)修改,要么全部執(zhí)行,要么全部不執(zhí)行,這一點被稱作事務(wù)的“原子性”。通常,與某個事務(wù)關(guān)聯(lián)的操作具有共同的目標(biāo),并且是相互依賴的。如果只執(zhí)行這些操作的一個子集,則可能會破壞事務(wù)的總體目標(biāo)。因此,在基于事務(wù)機制來組織、存儲和管理的數(shù)據(jù)集合中保持事務(wù)的“原子性”是至關(guān)重要的。
[0029]如前所述,從源存儲系統(tǒng)向備份存儲系統(tǒng)的“失效切換”可能恰好發(fā)生于在源存儲系統(tǒng)處進(jìn)行事務(wù)提交期間。在這種情況下,備份存儲系統(tǒng)處的被復(fù)制的數(shù)據(jù)集合中的一部分包含事務(wù)處理之后的數(shù)據(jù),而另一部分可能包含事務(wù)處理之前的數(shù)據(jù),從而使得被復(fù)制的數(shù)據(jù)集合被置于不一致狀態(tài)。這種不一致通常被稱作“應(yīng)用層面的不一致”。本發(fā)明的實施方式提供了一種通過為事務(wù)的操作記錄日志來保持事務(wù)的“原子性”,以解決這種應(yīng)用層面的不一致。
[0030]圖1示出了根據(jù)本發(fā)明一個實施方式的用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法100的流程圖。首先,在步驟S110,在源站點處,將同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交。應(yīng)當(dāng)注意的是,這里所稱的“源站點”是相對于后文的“目標(biāo)站點”而言的,其主要指代原本用來為用戶提供服務(wù)的站點。同步復(fù)制系統(tǒng)中當(dāng)前為用戶提供服務(wù)的站點也被稱為“活躍(active)站點”。當(dāng)“源站點”為用戶提供服務(wù)時,“源站點”為同步復(fù)制系統(tǒng)中的活躍站點。在源站點失效時,可以發(fā)起向目標(biāo)站點的切換,由目標(biāo)站點接管源站點的相應(yīng)功能從而繼續(xù)為用戶提供服務(wù)。在這種情況下,“目標(biāo)站點”成為同步復(fù)制系統(tǒng)中的活躍站點。
[0031]在一個示例性實施方式中,將同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交可以通過以下方式來實現(xiàn):按照預(yù)定的順序(例如優(yōu)先級順序)為待提交的事務(wù)排序,按序提供提交鎖(commit lock),使得在同一時間僅有一個事務(wù)能夠獲得提交鎖,獲得提交鎖的事務(wù)處理完成時釋放該提交鎖。應(yīng)當(dāng)理解,上面的示例僅僅是出于說明目的,在實現(xiàn)中可以采用任何其他方式而使得在同一時間僅有一個事務(wù)能夠被提交。
[0032]可以理解,目前對于基于事務(wù)機制來組織、存儲和管理的數(shù)據(jù)集合,例如數(shù)據(jù)庫而言,可能存在多個并發(fā)進(jìn)行的事務(wù)。在每個事務(wù)的操作完成時,將發(fā)起對該事務(wù)的提交,每個被提交的事務(wù)都將獲得提交鎖,從而事務(wù)的提交可以并行地進(jìn)行。然而,在本發(fā)明的實施方式中,將事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交,被提交的事務(wù)將獲得提交鎖。該提交鎖對于同步復(fù)制系統(tǒng)中的活躍站點而言是全局的(global),因而也被稱為“全局提交鎖”。例如,在源站點作為同步復(fù)制系統(tǒng)中的活躍站點的情況下,該提交鎖對于源站點而言是全局的;而在目標(biāo)站點作為同步復(fù)制系統(tǒng)中的活躍站點的情況下,該提交鎖對于目標(biāo)站點而言是全局的。這一設(shè)計出于以下考慮:提交操作的持續(xù)時間往往較短,并且較不頻繁,因此可以將提交鎖從每個事務(wù)一個鎖變更為全局提交鎖。
[0033]然后,在步驟S120,響應(yīng)于發(fā)起對事務(wù)的提交,針對在同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對同步復(fù)制系統(tǒng)的影響。通過該步驟,事務(wù)的所有操作對同步復(fù)制系統(tǒng)的數(shù)據(jù)所作的改動均被保存在日志中。在實現(xiàn)中,所述日志可以以日志文件、例如.bak文件的形式存在。
[0034]接下來,在步驟S130,對已生成日志的事務(wù)作標(biāo)記。在一個實施例中,對已生成日志的事務(wù)作標(biāo)記包括針對已生成日志的事務(wù)創(chuàng)建標(biāo)記文件。在另一個實施例中,對已生成日志的事務(wù)作標(biāo)記包括在數(shù)據(jù)庫表中添加與相應(yīng)事務(wù)相關(guān)聯(lián)的標(biāo)記。
[0035]隨后,在步驟S140,完成對已被作標(biāo)記的事務(wù)的提交。由此,該事務(wù)的操作所涉及的改動被應(yīng)用到同步復(fù)制系統(tǒng)中的數(shù)據(jù)集合,以更新該數(shù)據(jù)集合。
[0036]另外,方法100可以可選地包括在完成對事務(wù)的提交之后移除對該事務(wù)所作的標(biāo)記,例如移除標(biāo)記文件。
[0037]此外,可以理解,以上步驟SllO至S140均是在同步復(fù)制系統(tǒng)中的源站點處執(zhí)行的。在源站點失效時,可以發(fā)起向目標(biāo)站點的切換,由目標(biāo)站點接管源站點的相應(yīng)功能從而繼續(xù)為用戶提供服務(wù)。響應(yīng)于發(fā)起向目標(biāo)站點的切換,在目標(biāo)站點處可執(zhí)行如下操作。首先,確定未完成提交的事務(wù)是否已被作標(biāo)記。在確定未完成提交的事務(wù)已被作標(biāo)記的情況下,在目標(biāo)站點處信任針對該事務(wù)生成的目志的內(nèi)容,從而以針對該事務(wù)生成的日志的內(nèi)容來更新從源站點同步復(fù)制到目標(biāo)站點的、與該事務(wù)關(guān)聯(lián)的數(shù)據(jù)。在執(zhí)行更新之后,可以移除針對該事務(wù)生成的日志的內(nèi)容。
[0038]另一方面,在如下情況之一下,未完成提交的事務(wù)是沒有被作標(biāo)記的:
[0039](I)在該事務(wù)的操作所涉及的數(shù)據(jù)尚在內(nèi)存中時,源站點失效而發(fā)起向目標(biāo)站點的切換;
[0040](2)在針對該事務(wù)生成日志期間源站點失效而發(fā)起向目標(biāo)站點的切換;
[0041](3)在已針對該事務(wù)生成日志、但是還未對該事務(wù)作標(biāo)記時,源站點失效而發(fā)起向目標(biāo)站點的切換;
[0042](4)在源站點處已經(jīng)利用針對該事務(wù)生成的日志的內(nèi)容來更新了與該事務(wù)關(guān)聯(lián)的數(shù)據(jù)時,源站點失效而發(fā)起向目標(biāo)站點的切換;
[0043]在確定未完成提交的事務(wù)沒有被作標(biāo)記的情況下,信任從源站點同步復(fù)制到目標(biāo)站點的、與該事務(wù)關(guān)聯(lián)的數(shù)據(jù)??梢岳斫?,在上述情況(4)下,在目標(biāo)站點處可能存在針對該事務(wù)生成的日志的內(nèi)容。此時由于該事務(wù)沒有被作標(biāo)記,因此不信任日志的內(nèi)容,而是移除日志的內(nèi)容。
[0044]在上述方法100中,為事務(wù)的操作生成日志,從將事務(wù)的所有操作對同步復(fù)制系統(tǒng)的數(shù)據(jù)所作的任何改動均被保存在日志中。隨后,對已生成日志的事務(wù)作標(biāo)記。在切換到目標(biāo)站點時,如果確定存在對事務(wù)所作的標(biāo)記,則信任針對事務(wù)所生成的日志的內(nèi)容,否貝IJ信任已被復(fù)制到目標(biāo)站點側(cè)的數(shù)據(jù)集合的內(nèi)容,由此解決了實施同步復(fù)制的系統(tǒng)中發(fā)生失效切換時數(shù)據(jù)集合的內(nèi)容不一致的問題。
[0045]作為一個示例性實施例,同步復(fù)制系統(tǒng)的源站點和目標(biāo)站點可以以虛擬數(shù)據(jù)移動器(Virtual Data Mover, VDM)的形式存在。VDM通常包括數(shù)據(jù) LUN (Logical Unit Number,邏輯單元號)和控制LUN。數(shù)據(jù)存儲于數(shù)據(jù)LUN上,而元數(shù)據(jù)存儲于控制LUN上。在控制LUN上,元數(shù)據(jù)通常以NAS數(shù)據(jù)庫(Network Attached Storage Database)的形式來組織、管理和存儲。NAS數(shù)據(jù)庫是基于事務(wù)機制的文本數(shù)據(jù)庫。為了保持源VDM和目標(biāo)VDM上的數(shù)據(jù)盡可能一致,在源VDM和目標(biāo)VDM之間通常實施塊層面的數(shù)據(jù)同步復(fù)制。在這種情況下,在從源VDM向目標(biāo)VDM失效切換時,由于無法保持針對NAS數(shù)據(jù)庫的事務(wù)的原子性,經(jīng)常會出現(xiàn)在失效切換后,一些NAS數(shù)據(jù)庫表包含事務(wù)之后的數(shù)據(jù),而另一些NAS數(shù)據(jù)庫表包含事務(wù)之前的數(shù)據(jù),導(dǎo)致NAS數(shù)據(jù)庫不一致。上述方法100也能夠適用于保持NAS數(shù)據(jù)庫事務(wù)的原子性,以解決這種NAS數(shù)據(jù)庫不一致問題。然而,應(yīng)當(dāng)理解,本發(fā)明的方法可以應(yīng)用于各種類型的基于事務(wù)機制的數(shù)據(jù)組織形式,而不局限于數(shù)據(jù)庫。
[0046]本發(fā)明的實施方式還提供了一種用于在同步復(fù)制系統(tǒng)中處理事務(wù)的裝置。圖2示出了根據(jù)本發(fā)明一個實施方式的用于在同步復(fù)制系統(tǒng)中處理事務(wù)的裝置200的框圖。
[0047]如圖2所示,裝置200包括布置在所述同步復(fù)制系統(tǒng)的源站點處的:串行化單元210,被配置為將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交;日志生成單元220,被配置為響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響;標(biāo)記單元230,被配置為對已生成日志的事務(wù)作標(biāo)記;以及提交完成單元240,被配置為完成對已被作標(biāo)記的事務(wù)的提交。
[0048]在一個實施方式中,串行化單元210被進(jìn)一步配置為使得在同一時間僅有一個事務(wù)能夠獲得提交鎖。
[0049]在一個實施方式中,裝置200進(jìn)一步包括:切換單元,被配置為響應(yīng)于所述源站點失效而發(fā)起向所述同步復(fù)制系統(tǒng)中的目標(biāo)站點的切換;其中,在所述源站點和所述目標(biāo)站點之間實現(xiàn)數(shù)據(jù)的同步復(fù)制。
[0050]在一個實施方式中,裝置200進(jìn)一步包括:檢查單元,被配置為在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記;確定單元,被配置為響應(yīng)于確定所述事務(wù)已被作標(biāo)記,以針對所述事務(wù)生成的目志的內(nèi)容來更新從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。
[0051]在一個實施方式中,裝置200進(jìn)一步包括:檢查單元,被配置為在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記;確定單元,被配置為響應(yīng)于確定所述事務(wù)未被作標(biāo)記,信任從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。
[0052]在一個實施方式中,裝置200進(jìn)一步包括:移除單元,被配置為移除針對所述事務(wù)所生成的日志。
[0053]在一個實施方式中,標(biāo)記單元230被進(jìn)一步配置為針對已生成日志的事務(wù)創(chuàng)建標(biāo)記文件。
[0054]本發(fā)明的實施方式還提供了一種計算機程序產(chǎn)品,其包括計算機可讀介質(zhì)。所述計算機可讀介質(zhì)承載在其中體現(xiàn)的用于與計算機一起使用的計算機程序代碼。所述計算機程序代碼包括:用于將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交的代碼;用于響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響的代碼;用于對已生成日志的事務(wù)作標(biāo)記的代碼;以及用于完成對已被作標(biāo)記的事務(wù)的提交的代碼。
[0055]下面參考圖3,其示出了適于用來實踐本發(fā)明實施方式的計算機系統(tǒng)300的示意性框圖。例如,圖3所示的計算機系統(tǒng)300可以用于實現(xiàn)如上文描述的用于加速磁盤陣列的數(shù)據(jù)重構(gòu)裝置1800。
[0056]如圖3所示,計算機系統(tǒng)300可以包括..CPU (中央處理單元)301、RAM(隨機存取存儲器)302、ROM(只讀存儲器)303、系統(tǒng)總線304、硬盤控制器305、鍵盤控制器306、串行接口控制器307、并行接口控制器308、顯示控制器309、硬盤310、鍵盤311、串行外部設(shè)備312、并行外部設(shè)備313和顯示器314。在這些設(shè)備中,與系統(tǒng)總線304耦合的有CPU 301、RAM 302、ROM 303、硬盤控制器305、鍵盤控制器306、串行控制器307、并行控制器308和顯示控制器309。硬盤310與硬盤控制器305耦合,鍵盤311與鍵盤控制器306耦合,串行外部設(shè)備312與串行接口控制器307耦合,并行外部設(shè)備313與并行接口控制器308耦合,以及顯示器314與顯示控制器309耦合。應(yīng)當(dāng)理解,圖3所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。
[0057]如上所述,裝置200可以實現(xiàn)為純硬件,例如芯片、ASIC、S0C等。這些硬件可以集成在計算機系統(tǒng)300中。此外,本發(fā)明的實施方式也可以通過計算機程序產(chǎn)品的形式實現(xiàn)。例如,參考圖1描述的方法100可以通過計算機程序產(chǎn)品來實現(xiàn)。該計算機程序產(chǎn)品可以存儲在例如圖3所示的RAM 302,ROM 303、硬盤310和/或任何適當(dāng)?shù)拇鎯橘|(zhì)中,或者通過網(wǎng)絡(luò)從適當(dāng)?shù)奈恢孟螺d到計算機系統(tǒng)300上。計算機程序產(chǎn)品可以包括計算機代碼部分,其包括可由適當(dāng)?shù)奶幚碓O(shè)備(例如,圖3中示出的CPU 301)執(zhí)行的程序指令。所述程序指令至少可以包括用于實現(xiàn)方法100的步驟的指令。
[0058]應(yīng)當(dāng)注意,本發(fā)明的實施方式可以通過硬件、軟件或者軟件和硬件的結(jié)合來實現(xiàn)。硬件部分可以利用專用邏輯來實現(xiàn);軟件部分可以存儲在存儲器中,由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計硬件來執(zhí)行。本領(lǐng)域的普通技術(shù)人員可以理解上述的設(shè)備和方法可以使用計算機可執(zhí)行指令和/或包含在處理器控制代碼中來實現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲器(固件)的可編程的存儲器或者諸如光學(xué)或電子信號載體的數(shù)據(jù)載體上提供了這樣的代碼。本發(fā)明的設(shè)備及其模塊可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導(dǎo)體、或者諸如現(xiàn)場可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實現(xiàn),也可以由上述硬件電路和軟件的結(jié)合例如固件來實現(xiàn)。
[0059]說明書中提及的通信網(wǎng)絡(luò)可以包括各類網(wǎng)絡(luò),包括但不限于局域網(wǎng)(“LAN”),廣域網(wǎng)(“WAN”),根據(jù)IP協(xié)議的網(wǎng)絡(luò)(例如,因特網(wǎng))以及端對端網(wǎng)絡(luò)(例如,ad hoc對等網(wǎng)絡(luò))。
[0060]應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了設(shè)備的若干裝置或子裝置,但是這種劃分僅僅并非強制性的。實際上,根據(jù)本發(fā)明的實施方式,上文描述的兩個或更多裝置的特征和功能可以在一個裝置中具體化。反之,上文描述的一個裝置的特征和功能可以進(jìn)一步劃分為由多個裝置來具體化。
[0061]此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,和/或?qū)⒁粋€步驟分解為多個步驟執(zhí)行。
[0062]雖然已經(jīng)參考若干【具體實施方式】描述了本發(fā)明,但是應(yīng)該理解,本發(fā)明并不限于所公開的【具體實施方式】。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。所附權(quán)利要求的范圍符合最寬泛的解釋,從而包含所有這樣的修改及等同結(jié)構(gòu)和功能。
【主權(quán)項】
1.一種用于在同步復(fù)制系統(tǒng)中處理事務(wù)的方法,包括在所述同步復(fù)制系統(tǒng)的源站點處: 將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交; 響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響; 對已生成日志的事務(wù)作標(biāo)記;以及 完成對已被作標(biāo)記的事務(wù)的提交。2.根據(jù)權(quán)利要求1所述的方法,其中,將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交包括: 使得在同一時間僅有一個事務(wù)能夠獲得提交鎖。3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括: 響應(yīng)于所述源站點失效而發(fā)起向所述同步復(fù)制系統(tǒng)中的目標(biāo)站點的切換; 其中,在所述源站點和所述目標(biāo)站點之間實現(xiàn)數(shù)據(jù)的同步復(fù)制。4.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括: 在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記; 響應(yīng)于確定所述事務(wù)已被作標(biāo)記,以針對所述事務(wù)生成的日志的內(nèi)容來更新從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。5.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括: 在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記; 響應(yīng)于確定所述事務(wù)未被作標(biāo)記,信任從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括: 移除針對所述事務(wù)所生成的日志。7.根據(jù)權(quán)利要求1至6中任一項所述的方法,其中對已生成日志的事務(wù)作標(biāo)記包括: 針對已生成日志的事務(wù)創(chuàng)建標(biāo)記文件。8.一種用于在同步復(fù)制系統(tǒng)中處理事務(wù)的裝置,包括布置在所述同步復(fù)制系統(tǒng)的源站點處的: 串行化單元,被配置為將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交; 日志生成單元,被配置為響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響; 標(biāo)記單元,被配置為對已生成日志的事務(wù)作標(biāo)記;以及 提交完成單元,被配置為完成對已被作標(biāo)記的事務(wù)的提交。9.根據(jù)權(quán)利要求8所述的裝置,其中所述串行化單元被進(jìn)一步配置為使得在同一時間僅有一個事務(wù)能夠獲得提交鎖。10.根據(jù)權(quán)利要求9所述的裝置,進(jìn)一步包括: 切換單元,被配置為響應(yīng)于所述源站點失效而發(fā)起向所述同步復(fù)制系統(tǒng)中的目標(biāo)站點的切換; 其中,在所述源站點和所述目標(biāo)站點之間實現(xiàn)數(shù)據(jù)的同步復(fù)制。11.根據(jù)權(quán)利要求10所述的裝置,進(jìn)一步包括: 檢查單元,被配置為在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記; 確定單元,被配置為響應(yīng)于確定所述事務(wù)已被作標(biāo)記,以針對所述事務(wù)生成的日志的內(nèi)容來更新從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。12.根據(jù)權(quán)利要求10所述的裝置,進(jìn)一步包括: 檢查單元,被配置為在所述目標(biāo)站點處,確定未完成提交的事務(wù)是否已被作標(biāo)記; 確定單元,被配置為響應(yīng)于確定所述事務(wù)未被作標(biāo)記,信任從所述源站點同步復(fù)制到所述目標(biāo)站點的、與所述事務(wù)關(guān)聯(lián)的數(shù)據(jù)。13.根據(jù)權(quán)利要求12所述的裝置,進(jìn)一步包括: 移除單元,被配置為移除針對所述事務(wù)所生成的日志。14.根據(jù)權(quán)利要求9至13中任一項所述的裝置,其中所述標(biāo)記單元被進(jìn)一步配置為針對已生成日志的事務(wù)創(chuàng)建標(biāo)記文件。15.—種計算機程序產(chǎn)品,包括計算機可讀介質(zhì),所述計算機可讀介質(zhì)承載在其中體現(xiàn)的用于與計算機一起使用的計算機程序代碼,所述計算機程序代碼包括: 用于將所述同步復(fù)制系統(tǒng)中的事務(wù)提交串行化,以使得在同一時間僅有一個事務(wù)能夠被提交的代碼; 用于響應(yīng)于發(fā)起對事務(wù)的提交,針對在所述同步復(fù)制系統(tǒng)中進(jìn)行的每個事務(wù)生成日志,以記錄相應(yīng)事務(wù)的所有操作對所述同步復(fù)制系統(tǒng)的影響的代碼; 用于對已生成日志的事務(wù)作標(biāo)記的代碼;以及 用于完成對已被作標(biāo)記的事務(wù)的提交的代碼。
【文檔編號】G06F17/30GK105893386SQ201510004778
【公開日】2016年8月24日
【申請日】2015年1月4日
【發(fā)明人】徐寧, 張明輝, 熊天放, 鄔源楊, 魯逸峰
【申請人】伊姆西公司