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