一種實現(xiàn)數(shù)據(jù)無縫遷移的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)數(shù)據(jù)無縫遷移的方法,所述方法包括:分別創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息遷移至主節(jié)點的共享內(nèi)存,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫遷移。本發(fā)明還同時公開了一種實現(xiàn)數(shù)據(jù)無縫遷移的裝置。
【專利說明】
一種實現(xiàn)數(shù)據(jù)無縫遷移的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)傳輸技術(shù),尤其涉及一種實現(xiàn)數(shù)據(jù)無縫迀移的方法及裝置。
【背景技術(shù)】
[0002]雙機熱備是一種解決服務(wù)器的臨時故障的備份技術(shù),雙機熱備技術(shù)使用兩臺服務(wù)器,互相備份,共同執(zhí)行同一服務(wù);當(dāng)一臺服務(wù)器出現(xiàn)故障時,可以由另一臺服務(wù)器承擔(dān)服務(wù)任務(wù),從而在不需要人工干預(yù)的情況下,自動保證系統(tǒng)能持續(xù)提供服務(wù),避免長時間的服務(wù)中斷,保證系統(tǒng)長期、可靠的服務(wù)。
[0003]隨著企業(yè)信息化程度越來越高,企業(yè)對信息化的依賴越來越高,特別在電信、銀行等行業(yè),甚至提出了全年業(yè)務(wù)不能中斷的要求;為避免主機硬件和系統(tǒng)故障對業(yè)務(wù)應(yīng)用造成影響,眾多企業(yè)都采用小型機UNIX系統(tǒng)+HA的硬件架構(gòu)模式;在這種模式下,首先可以利用小型機硬件高冗余的特性,單個硬件故障并不會影響主機節(jié)點的正常運行;其次當(dāng)備用主機節(jié)點監(jiān)控到主機出現(xiàn)故障時,會自動重新啟動業(yè)務(wù)至備用節(jié)點上,從而保證了業(yè)務(wù)的連續(xù)性。
[0004]現(xiàn)有技術(shù)中,UNIX系統(tǒng)下數(shù)據(jù)的切換的方法是在主機/備機之間部署鏡像磁盤,即:A主節(jié)點將LunA磁盤上的業(yè)務(wù)數(shù)據(jù)傳輸至鏡像磁盤分區(qū)上,同時鏡像至B備用節(jié)點上的LunB磁盤上,利用鏡像分區(qū)工具在主備機上將目標(biāo)磁盤上開辟鏡像磁盤同步分區(qū),用以存儲中間業(yè)務(wù)數(shù)據(jù);再在主備機上安裝相關(guān)應(yīng)用軟件,將中間業(yè)務(wù)數(shù)據(jù)部署到鏡像同步分區(qū)上,主備機之間再通過內(nèi)部以太網(wǎng)連接傳輸同步數(shù)據(jù);該方案與傳統(tǒng)方案相比,使A主節(jié)點上的業(yè)務(wù)數(shù)據(jù)傳輸至B備用節(jié)點上的速度更快,保證了數(shù)據(jù)傳輸?shù)囊恢滦裕?br>[0005]但是,該方案存在如下弊端:第一,當(dāng)A主節(jié)點宕機時,B備用節(jié)點讀取鏡像磁盤分區(qū)上的業(yè)務(wù)數(shù)據(jù),還要重新啟動宕機時傳輸過來的內(nèi)存程序,導(dǎo)致從A主節(jié)點到B備用節(jié)點的業(yè)務(wù)切換時間要三至十五分鐘,業(yè)務(wù)切換時間仍舊很長;第二,該方案需要在主機上增加額外的硬件和軟件,過程復(fù)雜,成本高,故障點多,若一個點出現(xiàn)故障,整個系統(tǒng)癱瘓,甚至數(shù)據(jù)丟失;第三,該方案傳輸數(shù)據(jù)的實時性不強,切換時間長,很容易造成數(shù)據(jù)的丟失;第四,主備機的同步數(shù)據(jù)是通過內(nèi)部以太網(wǎng)進(jìn)行傳輸,傳輸速率慢,當(dāng)以太網(wǎng)出現(xiàn)故障時,會造成數(shù)據(jù)傳輸?shù)耐V梗袛嗔酥鱾錂C之間的切換,致使系統(tǒng)不能正常運行。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明實施例期望提供一種實現(xiàn)數(shù)據(jù)無縫迀移的方法及裝置,能夠在主節(jié)點異常宕機時,備用節(jié)點在極短的時間內(nèi)接管主節(jié)點的業(yè)務(wù),實現(xiàn)主節(jié)點和備用節(jié)點之間的無擾切換和數(shù)據(jù)的無縫迀移,保證業(yè)務(wù)的連續(xù)性。
[0007]本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:
[0008]本發(fā)明實施例提供一種實現(xiàn)數(shù)據(jù)無縫迀移的方法,所述方法包括:分別創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移;其中,
[0009]使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致,包括:主節(jié)點的快速緩沖貯存區(qū)讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;備用節(jié)點的快速緩沖貯存區(qū)讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域。
[0010]在一實施例中,所述將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存,包括:實時地復(fù)制所述主節(jié)點的內(nèi)存信息,并同步傳遞至所述主節(jié)點的共享內(nèi)存;對所述主節(jié)點的內(nèi)存信息進(jìn)行頁面快照,將變化的內(nèi)存頁面發(fā)送至所述主節(jié)點的共享內(nèi)存,更新所述主節(jié)點的共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息。
[0011 ] 在一實施例中,所述訪問共享內(nèi)存中的數(shù)據(jù),包括:主節(jié)點的快速緩沖貯存區(qū)加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù),并重新掛載時控。
[0012]在一實施例中,所述主節(jié)點與備用節(jié)點通過心跳線連接;相應(yīng)的,所述檢測主節(jié)點發(fā)生故障,包括:動態(tài)檢測主節(jié)點的運行狀態(tài),并周期性的優(yōu)先從所述心跳線向所述備用節(jié)點發(fā)送所述主節(jié)點的狀態(tài)維護(hù)報,所述備用節(jié)點在預(yù)設(shè)的閾值時間內(nèi)未收到所述主節(jié)點的狀態(tài)維護(hù)報,則檢測主節(jié)點發(fā)生故障。
[0013]本發(fā)明實施例還提供一種實現(xiàn)數(shù)據(jù)無縫迀移的裝置,所述裝置包括:創(chuàng)建模塊、處理模塊、檢測模塊和迀移模塊;其中,
[0014]所述創(chuàng)建模塊,用于分別創(chuàng)建主節(jié)點和備用節(jié)點主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存;
[0015]所述處理模塊,用于讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域;
[0016]所述檢測模塊,用于檢測主節(jié)點是否發(fā)生故障;
[0017]所述迀移模塊,用于在檢測模塊檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移。
[0018]在一實施例中,所述處理模塊,具體用于實時地復(fù)制所述主節(jié)點的內(nèi)存信息,并同步傳遞至所述主節(jié)點的共享內(nèi)存;對所述主節(jié)點的內(nèi)存信息進(jìn)行頁面快照,將變化的內(nèi)存頁面發(fā)送至所述主節(jié)點的共享內(nèi)存,更新所述主節(jié)點的共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息。
[0019]在一實施例中,所述迀移模塊,具體用于加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù),并重新掛載時控。
[0020]在一實施例中,所述主節(jié)點與備用節(jié)點通過心跳線連接;相應(yīng)的,所述檢測模塊,具體用于動態(tài)檢測主節(jié)點的運行狀態(tài),并周期性的優(yōu)先從所述心跳線向所述備用節(jié)點發(fā)送所述主節(jié)點的狀態(tài)維護(hù)報,所述備用節(jié)點在預(yù)設(shè)的閾值時間內(nèi)未收到所述主節(jié)點的狀態(tài)維護(hù)報,則檢測主節(jié)點發(fā)生故障。
[0021]本發(fā)明實施例所提供的實現(xiàn)數(shù)據(jù)無縫迀移的方法及裝置,分別創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移;其中,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致,包括:主節(jié)點的快速緩沖貯存區(qū)讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;備用節(jié)點的快速緩沖貯存區(qū)讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域。如此,通過將UNIX操作系統(tǒng)從本地系統(tǒng)磁盤迀移至共享存儲,主節(jié)點和備用節(jié)點通過共享存儲實現(xiàn)主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;在主節(jié)點異常宕機時,備用節(jié)點在極短的時間內(nèi)接管主節(jié)點的業(yè)務(wù),實現(xiàn)主節(jié)點和備用節(jié)點之間的無擾切換和數(shù)據(jù)的無縫迀移,保證業(yè)務(wù)的連續(xù)性。
【附圖說明】
[0022]圖1為實現(xiàn)數(shù)據(jù)迀移的雙機架構(gòu)示意圖;
[0023]圖2為數(shù)據(jù)迀移的實現(xiàn)過程示意圖;
[0024]圖3為本發(fā)明實施例實現(xiàn)數(shù)據(jù)無縫迀移的方法的處理流程示意圖;
[0025]圖4為實現(xiàn)本發(fā)明實施例所應(yīng)用的雙機架構(gòu)拓?fù)鋱D;
[0026]圖5為本發(fā)明實施例實現(xiàn)數(shù)據(jù)無縫迀移的裝置的組成結(jié)構(gòu)示意圖。
【具體實施方式】
[0027]本發(fā)明實施例中,分別創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移;其中,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致,包括:主節(jié)點的快速緩沖貯存區(qū)讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;備用節(jié)點的快速緩沖貯存區(qū)讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域。
[0028]本發(fā)明實施例中,在創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存之后,主節(jié)點通過NPIV協(xié)議將存儲在本地系統(tǒng)磁盤上的UNIX操作系統(tǒng)迀移至共享內(nèi)存;由于一臺主機可以劃分為多個虛擬UNIX系統(tǒng),因此本申請能夠提高主機中央處理器內(nèi)存資源利率。
[0029]為更好地理解本發(fā)明技術(shù)方案,下面簡單介紹現(xiàn)有技術(shù)中基于磁盤陣列的方式實現(xiàn)數(shù)據(jù)迀移的實現(xiàn)過程;現(xiàn)有技術(shù)中實現(xiàn)數(shù)據(jù)迀移的雙機架構(gòu),如圖1所示,包括:A主節(jié)點、B備用節(jié)點和存儲裝置,雙機熱備系統(tǒng)的用戶數(shù)據(jù)存儲在磁盤陣列中,UNIX系統(tǒng)通過SAN網(wǎng)絡(luò)訪問磁盤陣列的資源。
[0030]現(xiàn)有技術(shù)中數(shù)據(jù)迀移的實現(xiàn)過程,如圖2所示,當(dāng)A主節(jié)點發(fā)生故障時,業(yè)務(wù)中斷,B備用節(jié)點從存儲裝置上接管存儲資源和IP資源,并恢復(fù)相關(guān)的應(yīng)用;但是,B備用節(jié)點監(jiān)控到A主節(jié)點發(fā)生故障后,在B備用節(jié)點上重啟業(yè)務(wù),根據(jù)承載的業(yè)務(wù)不同,進(jìn)行業(yè)務(wù)恢復(fù)一般需要三至十分鐘,甚至更長時間;在進(jìn)行業(yè)務(wù)恢復(fù)的這段時間內(nèi),業(yè)務(wù)無法提供對外服務(wù);因此,B備用節(jié)點的啟用和A主節(jié)點的恢復(fù)無法實現(xiàn)無擾切換,使得業(yè)務(wù)不具備連續(xù)性。
[0031]本發(fā)明實施例中,實現(xiàn)數(shù)據(jù)無縫迀移的方法的處理流程,如圖3所示,包括以下步驟:
[0032]步驟101,分別創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;
[0033]具體地,實現(xiàn)數(shù)據(jù)無縫迀移的裝置中的創(chuàng)建模塊創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存;主節(jié)點通過NPIV協(xié)議將存儲在本地系統(tǒng)磁盤上的UNIX操作系統(tǒng)迀移至共享內(nèi)存;實現(xiàn)數(shù)據(jù)無縫迀移的裝置中的處理模塊主節(jié)點的快速緩沖貯存區(qū)讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;備用節(jié)點的快速緩沖貯存區(qū)讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致;
[0034]其中,所述將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存,具體為:
[0035]將共享內(nèi)存分為兩部分,一部分為頁面標(biāo)識區(qū),用于標(biāo)識變化的頁面,每一位對應(yīng)一個大小為4KB的數(shù)據(jù)頁面;另一部分為數(shù)據(jù)區(qū),用于存儲應(yīng)用的關(guān)鍵接續(xù)數(shù)據(jù);所述關(guān)鍵接續(xù)數(shù)據(jù)為在發(fā)生主節(jié)點與備用節(jié)點切換時,保證業(yè)務(wù)不中斷、接續(xù)計算機系統(tǒng)運行所需要的數(shù)據(jù);在主節(jié)點的內(nèi)存信息發(fā)生變化時,將變化的內(nèi)存頁面發(fā)送至共享內(nèi)存,更新共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息;之后,將更新的內(nèi)存信息對應(yīng)的頁面標(biāo)識區(qū)置為1,表示該數(shù)據(jù)區(qū)進(jìn)行了更新。
[0036]步驟102,檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移;
[0037]這里,主節(jié)點和備用節(jié)點建立基于C/S的系統(tǒng)架構(gòu),即實現(xiàn)本發(fā)明實施例所應(yīng)用的雙機架構(gòu)拓?fù)鋱D,如圖4所示,主節(jié)點與備用節(jié)點分別至少配置兩個網(wǎng)口,其中,一個網(wǎng)口連接公網(wǎng),另一個網(wǎng)口配置為主節(jié)點與備用節(jié)點之間的私有網(wǎng)絡(luò),即心跳線;通常為公網(wǎng)配置兩個網(wǎng)口,采用雙網(wǎng)主備冗余的方式進(jìn)行綁定,可以增加系統(tǒng)的可靠性;私有網(wǎng)絡(luò)端口的數(shù)量可以根據(jù)數(shù)據(jù)量情況增加一個私有網(wǎng)絡(luò)端口,采用負(fù)載均衡的方式綁定,用于增加私有網(wǎng)絡(luò)的帶寬和可靠性;
[0038]具體地,采用定時檢測和動態(tài)檢測相結(jié)合的方式進(jìn)行雙機狀態(tài)的檢測;其中,定時檢測是指主節(jié)點和備用節(jié)點周期性的發(fā)送自身的狀態(tài)維護(hù)報,優(yōu)先從心跳線發(fā)送狀態(tài)維護(hù)報,在心跳線發(fā)送失敗時,從公網(wǎng)發(fā)送狀態(tài)維護(hù)報;在主節(jié)點或備用節(jié)點中的任意一方在預(yù)設(shè)的閾值時間內(nèi)未收到對方的狀態(tài)維護(hù)報,則檢測對方發(fā)生故障;采用定時檢測的方式進(jìn)行狀態(tài)檢測,不僅具有Ping測試方式的優(yōu)點,還能在一定程度上冗余軟件故障。動態(tài)檢測是指主動探測主節(jié)點系統(tǒng)或備用節(jié)點系統(tǒng)軟件的運行狀態(tài),如軟件超時、軟件死循環(huán)、軟件一場退出等;當(dāng)檢測到軟件故障時,停止發(fā)送狀態(tài)維護(hù)報,進(jìn)行狀態(tài)告警并通知對方進(jìn)行切換,再重啟故障軟件。
[0039]訪問共享內(nèi)存中的數(shù)據(jù)具體包括:在備用節(jié)點升級為主節(jié)點后,實現(xiàn)數(shù)據(jù)無縫迀移的裝置中的迀移模塊通知各應(yīng)用從備用節(jié)點讀取數(shù)據(jù),立即加載共享區(qū)的關(guān)鍵接續(xù)數(shù)據(jù),主節(jié)點的快速緩沖貯存區(qū)加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù);再根據(jù)所述關(guān)鍵接續(xù)數(shù)據(jù)重新掛載應(yīng)用的時控,重新掛載時控包括:1)對于周期性循環(huán)的時控,直接掛載即可;2)對于由某類信息觸發(fā)或人工干預(yù)觸發(fā)的單次或多次循環(huán)的時控,將觸發(fā)條件或干預(yù)命令等信息作為關(guān)鍵數(shù)據(jù)存儲于共享內(nèi)存,備用節(jié)點切換為主節(jié)點后,根據(jù)所述觸發(fā)條件或干預(yù)命令等信息重新解算并掛起時控;3)對于由周期性的消息觸發(fā)的單次時控,可由新的消息再次觸發(fā),無需做特殊的加載處理。
[0040]本發(fā)明應(yīng)用與SAN網(wǎng)絡(luò)環(huán)境時,主節(jié)點與備用節(jié)點進(jìn)行數(shù)據(jù)迀移時,可直接訪問共享內(nèi)存的數(shù)據(jù),提高數(shù)據(jù)迀移的速率。
[0041]為實現(xiàn)上述實現(xiàn)數(shù)據(jù)無縫迀移的方法,本發(fā)明實施例還提供一種實現(xiàn)數(shù)據(jù)無縫迀移的裝置,所述裝置的組成結(jié)構(gòu),如圖5所示,包括:創(chuàng)建模塊11、處理模塊12、檢測模塊13和迀移模塊14 ;其中,
[0042]所述創(chuàng)建模塊11,用于分別創(chuàng)建主節(jié)點和備用節(jié)點主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存;
[0043]所述處理模塊12,用于讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域;
[0044]所述檢測模塊13,用于檢測主節(jié)點是否發(fā)生故障;
[0045]所述迀移模塊14,用于在檢測模塊檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移。
[0046]本發(fā)明實施例中,所述處理模塊12,具體用于實時地復(fù)制所述主節(jié)點的內(nèi)存信息,并同步傳遞至所述主節(jié)點的共享內(nèi)存;對所述主節(jié)點的內(nèi)存信息進(jìn)行頁面快照,將變化的內(nèi)存頁面發(fā)送至所述主節(jié)點的共享內(nèi)存,更新所述主節(jié)點的共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息。
[0047]本發(fā)明實施例中,所述迀移模塊14,具體用于加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù),并重新掛載時控。
[0048]本發(fā)明實施例中,所述主節(jié)點與備用節(jié)點通過心跳線連接;相應(yīng)的,所述檢測模塊13,具體用于動態(tài)檢測主節(jié)點的運行狀態(tài),并周期性的優(yōu)先從所述心跳線向所述備用節(jié)點發(fā)送所述主節(jié)點的狀態(tài)維護(hù)報,所述備用節(jié)點在預(yù)設(shè)的閾值時間內(nèi)未收到所述主節(jié)點的狀態(tài)維護(hù)報,則檢測主節(jié)點發(fā)生故障。
[0049]本發(fā)明實施例中,在創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存之后,主節(jié)點通過NPIV協(xié)議將存儲在本地系統(tǒng)磁盤上的UNIX操作系統(tǒng)迀移至共享內(nèi)存。
[0050]本發(fā)明實施例中,將所述主節(jié)點的內(nèi)存信息同步至共享內(nèi)存,具體為:
[0051]將共享內(nèi)存分為兩部分,一部分為頁面標(biāo)識區(qū),用于標(biāo)識變化的頁面,每一位對應(yīng)一個大小為4KB的數(shù)據(jù)頁面;另一部分為數(shù)據(jù)區(qū),用于存儲應(yīng)用的關(guān)鍵接續(xù)數(shù)據(jù);所述關(guān)鍵接續(xù)數(shù)據(jù)為在發(fā)生主節(jié)點與備用節(jié)點切換時,保證業(yè)務(wù)不中斷、接續(xù)計算機系統(tǒng)運行所需要的數(shù)據(jù);在主節(jié)點的內(nèi)存信息發(fā)生變化時,將變化的內(nèi)存頁面發(fā)送至共享內(nèi)存,更新共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息;之后,將更新的內(nèi)存信息對應(yīng)的頁面標(biāo)識區(qū)置為1,表示該數(shù)據(jù)區(qū)進(jìn)行了更新。
[0052]本發(fā)明實施例中,采用定時檢測和動態(tài)檢測相結(jié)合的方式進(jìn)行雙機狀態(tài)的檢測;其中,定時檢測是指主節(jié)點和備用節(jié)點周期性的發(fā)送自身的狀態(tài)維護(hù)報,優(yōu)先從心跳線發(fā)送狀態(tài)維護(hù)報,在心跳線發(fā)送失敗時,從公網(wǎng)發(fā)送狀態(tài)維護(hù)報;在主節(jié)點或備用節(jié)點中的任意一方在預(yù)設(shè)的閾值時間內(nèi)未收到對方的狀態(tài)維護(hù)報,則檢測對方發(fā)生故障;采用定時檢測的方式進(jìn)行狀態(tài)檢測,不僅具有Ping測試方式的優(yōu)點,還能在一定程度上冗余軟件故障。動態(tài)檢測是指主動探測主節(jié)點系統(tǒng)或備用節(jié)點系統(tǒng)軟件的運行狀態(tài),如軟件超時、軟件死循環(huán)、軟件一場退出等;當(dāng)檢測到軟件故障時,停止發(fā)送狀態(tài)維護(hù)報,進(jìn)行狀態(tài)告警并通知對方進(jìn)行切換,再重啟故障軟件。
[0053]本發(fā)明實施例中,訪問共享內(nèi)存中的數(shù)據(jù)具體包括:在備用節(jié)點升級為主節(jié)點后,實現(xiàn)數(shù)據(jù)無縫迀移的裝置中的迀移模塊通知各應(yīng)用從備用節(jié)點讀取數(shù)據(jù),立即加載共享區(qū)的關(guān)鍵接續(xù)數(shù)據(jù),主節(jié)點的快速緩沖貯存區(qū)加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù);再根據(jù)所述關(guān)鍵接續(xù)數(shù)據(jù)重新掛載應(yīng)用的時控,重新掛載時控包括:1)對于周期性循環(huán)的時控,直接掛載即可;2)對于由某類信息觸發(fā)或人工干預(yù)觸發(fā)的單次或多次循環(huán)的時控,將觸發(fā)條件或干預(yù)命令等信息作為關(guān)鍵數(shù)據(jù)存儲于共享內(nèi)存,備用節(jié)點切換為主節(jié)點后,根據(jù)所述觸發(fā)條件或干預(yù)命令等信息重新解算并掛起時控;3)對于由周期性的消息觸發(fā)的單次時控,可由新的消息再次觸發(fā),無需做特殊的加載處理。
[0054]需要說明的是,在實際應(yīng)用中,所述創(chuàng)建模塊11、處理模塊12、檢測模塊13和迀移模塊14的功能可由位于實現(xiàn)數(shù)據(jù)無縫迀移的裝置上的中央處理器(CPU)、或微處理器(MPU)、或數(shù)字信號處理器(DSP)、或可編程門陣列(FPGA)、快速緩沖貯存區(qū)(Cache)實現(xiàn)。
[0055]以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
【主權(quán)項】
1.一種實現(xiàn)數(shù)據(jù)無縫迀移的方法,其特征在于,所述方法包括: 分別創(chuàng)建主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存,使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致; 檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移;其中, 使主節(jié)點的內(nèi)存信息與備用節(jié)點的內(nèi)存信息一致,包括:主節(jié)點的快速緩沖貯存區(qū)讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;備用節(jié)點的快速緩沖貯存區(qū)讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域。2.根據(jù)權(quán)利要求1所述實現(xiàn)數(shù)據(jù)無縫迀移的方法,其特征在于,所述將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存,包括: 實時地復(fù)制所述主節(jié)點的內(nèi)存信息,并同步傳遞至所述主節(jié)點的共享內(nèi)存; 對所述主節(jié)點的內(nèi)存信息進(jìn)行頁面快照,將變化的內(nèi)存頁面發(fā)送至所述主節(jié)點的共享內(nèi)存,更新所述主節(jié)點的共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息。3.根據(jù)權(quán)利要求1或2所述實現(xiàn)數(shù)據(jù)無縫迀移的方法,其特征在于,所述訪問共享內(nèi)存中的數(shù)據(jù),包括: 主節(jié)點的快速緩沖貯存區(qū)加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù),并重新掛載時控。4.根據(jù)權(quán)利要求1或2所述實現(xiàn)數(shù)據(jù)無縫迀移的方法,其特征在于,所述主節(jié)點與備用節(jié)點通過心跳線連接;相應(yīng)的,所述檢測主節(jié)點發(fā)生故障,包括: 動態(tài)檢測主節(jié)點的運行狀態(tài),并周期性的優(yōu)先從所述心跳線向所述備用節(jié)點發(fā)送所述主節(jié)點的狀態(tài)維護(hù)報,所述備用節(jié)點在預(yù)設(shè)的閾值時間內(nèi)未收到所述主節(jié)點的狀態(tài)維護(hù)報,則檢測主節(jié)點發(fā)生故障。5.一種實現(xiàn)數(shù)據(jù)無縫迀移的裝置,其特征在于,所述裝置包括:創(chuàng)建模塊、處理模塊、檢測模塊和迀移模塊;其中, 所述創(chuàng)建模塊,用于分別創(chuàng)建主節(jié)點和備用節(jié)點主節(jié)點和備用節(jié)點的共享內(nèi)存,以及主節(jié)點和備用節(jié)點各自的內(nèi)存區(qū)域,將主節(jié)點內(nèi)存區(qū)域內(nèi)的內(nèi)存信息迀移至主節(jié)點的共享內(nèi)存; 所述處理模塊,用于讀取主節(jié)點的內(nèi)存信息,并將所述主節(jié)點的內(nèi)存信息同步至所述主節(jié)點的共享內(nèi)存;將主節(jié)點共享內(nèi)存的數(shù)據(jù)同步至備用節(jié)點共享內(nèi)存;讀取所述備用節(jié)點的共享內(nèi)存的信息,并將所述共享內(nèi)存的信息同步至備用節(jié)點的內(nèi)存區(qū)域; 所述檢測模塊,用于檢測主節(jié)點是否發(fā)生故障; 所述迀移模塊,用于在檢測模塊檢測主節(jié)點發(fā)生故障時,訪問共享內(nèi)存中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)無縫迀移。6.根據(jù)權(quán)利要求5所述實現(xiàn)數(shù)據(jù)無縫迀移的裝置,其特征在于,所述處理模塊,具體用于實時地復(fù)制所述主節(jié)點的內(nèi)存信息,并同步傳遞至所述主節(jié)點的共享內(nèi)存;對所述主節(jié)點的內(nèi)存信息進(jìn)行頁面快照,將變化的內(nèi)存頁面發(fā)送至所述主節(jié)點的共享內(nèi)存,更新所述主節(jié)點的共享內(nèi)存中所述主節(jié)點發(fā)生變化的內(nèi)存頁面對應(yīng)的內(nèi)存信息。7.根據(jù)權(quán)利要求5或6所述實現(xiàn)數(shù)據(jù)無縫迀移的裝置,其特征在于,所述迀移模塊,具體用于加載所述主節(jié)點的內(nèi)存區(qū)域中未發(fā)生變化的數(shù)據(jù),備用節(jié)點的快速緩沖貯存區(qū)加載所述備用節(jié)點共享內(nèi)存的數(shù)據(jù),并重新掛載時控。8.根據(jù)權(quán)利要求5或6所述實現(xiàn)數(shù)據(jù)無縫迀移的的裝置,其特征在于,所述主節(jié)點與備用節(jié)點通過心跳線連接;相應(yīng)的,所述檢測模塊,具體用于動態(tài)檢測主節(jié)點的運行狀態(tài),并周期性的優(yōu)先從所述心跳線向所述備用節(jié)點發(fā)送所述主節(jié)點的狀態(tài)維護(hù)報,所述備用節(jié)點在預(yù)設(shè)的閾值時間內(nèi)未收到所述主節(jié)點的狀態(tài)維護(hù)報,則檢測主節(jié)點發(fā)生故障。
【文檔編號】G06F3/06GK105824571SQ201510003665
【公開日】2016年8月3日
【申請日】2015年1月5日
【發(fā)明人】蘇偉杰, 鄭水華, 楊孝平
【申請人】中國移動通信集團(tuán)四川有限公司