欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種服務器中內存模塊的數據遷移方法及服務器的制造方法

文檔序號:6509772閱讀:230來源:國知局
一種服務器中內存模塊的數據遷移方法及服務器的制造方法
【專利摘要】本發(fā)明實施例公開了一種服務器中內存模塊的數據遷移方法及服務器。本發(fā)明的處理器通過在兩個內存模塊的代理裝置之間建立鏡像關系,指示代理裝置在兩個內存模塊間進行數據遷移,從而完成一個內存模塊到另一個內存模塊的數據遷移,整個數據遷移過程無需操作系統(tǒng)參與,數據遷移過程耗時短,方便地實現(xiàn)了服務器中內存模塊的數據遷移。
【專利說明】一種服務器中內存模塊的數據遷移方法及服務器
【技術領域】
[0001]本發(fā)明涉及存儲【技術領域】,尤其涉及一種服務器中內存模塊的數據遷移方法及服務器。
【背景技術】
[0002]內存熱插拔主要應用在服務器領域,為服務器帶來了更高的可用性和可維護性。在內存熱插拔時,一個服務器涉及硬件層、基本輸入輸出服務器(Basic Input OutputSystem, BIOS)層、操作系統(tǒng)(Operating System, OS)(也可還包含虛擬機監(jiān)控器(VirtualMachine Monitor,VMM))層,硬件層包含至少兩個內存模塊,其各層關系圖如圖1所示。在所示的邏輯結構中,硬件層提供物理上實際可用的資源;B10S層對這些物理資源進行配置并上報可用資源以及提供操作接口 ;0S可以直接使用BIOS上報的資源,也可以由VMM先對資源進行虛擬化,再分配到OS使用,也就是OS是這些資源的最終使用者。在內存熱插拔技術中,硬件層提供了實體的內存模塊以及訪問通道,BIOS層對內存進行初始化、分配地址、上報可用地址給OS或者VMM,最終OS在內存中運行程序或存放數據。內存熱插拔包括內存熱添加和內存熱移除兩個過程。
[0003]現(xiàn)有技術在進行內存熱移除時,需要OS先將準備熱移除的內存地址上的數據遷移到其他內存地址上,然而,因為OS每次搬移一個內存頁都要先取得這個頁的控制權,暫停其他程序的訪問后才能開始搬移,所以如果要遷移的用戶態(tài)數據被其他程序頻繁訪問,那么OS每次都要花費一定時間才能獲得內存頁的控制權,結果需要花費很長時間才能完成整個內存模塊的數據遷移。
[0004]綜上,由于內存數據遷移時對OS的依賴性很強,OS的數據布局以及內存數據遷移的能力都會對內存數據遷移的成敗造成影響,所以如何方便地實現(xiàn)內存模塊的數據遷移成為目前迫切需要解決的問題。

【發(fā)明內容】

[0005]有鑒于此,本發(fā)明實施例提供一種服務器中內存模塊的數據遷移方法及服務器,以期方便地實現(xiàn)服務器中內存模塊的數據遷移。
[0006]第一方面,提供了一種服務器中內存模塊的數據遷移方法,包括:
[0007]當處理器接收到用戶對第一內存模塊的數據遷移請求時,所述處理器查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令,所述第一內存模塊處于運行狀態(tài),所述第二內存模塊處于空閑狀態(tài);
[0008]所述第一代理裝置接收所述鏡像關系建立指令,與第二代理裝置建立鏡像關系;
[0009]所述處理器向所述第一代理裝置發(fā)送數據遷移指令;
[0010]所述第一代理裝置接收所述數據遷移指令,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置;
[0011]所述第二代理裝置將所述第一內存模塊中的數據寫入所述第二內存模塊中;[0012]所述處理器向所述第一代理裝置發(fā)送鏡像關系解除指令,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài);
[0013]所述第一代理裝置接收所述鏡像關系解除指令,解除與所述第二代理裝置的所述鏡像關系。
[0014]在第一種可能的實現(xiàn)方式中,所述第一代理裝置接收所述數據遷移指令,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置,包括:
[0015]所述第一代理裝置接收所述處理器發(fā)送的數據讀取指令,讀取所述第一內存模塊中的數據并將所述第一內存模塊中的數據返回給所述處理器;
[0016]所述第一代理裝置接收所述處理器寫入的所述第一內存模塊中的數據,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置。
[0017]結合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述處理器向所述第一代理裝置發(fā)送鏡像關系解除指令之前,所述方法還包括:
[0018]所述處理器向所述第一代理裝置的第一物理地址寫入第一數據;
[0019]所述第一代理裝置接收所述第一數據,并將所述第一數據轉發(fā)給所述第二代理裝置;
[0020]所述第二代理裝置將所述第一數據寫入所述第二內存模塊中的所述第一物理地址。
[0021]結合第一方面或第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述第一代理裝置接收所述鏡像關系解除指令,解除與所述第二代理裝置的所述鏡像關系之后,所述方法還包括:
[0022]所述處理器斷開所述第一內存模塊的電源,以移除所述第一內存模塊。
[0023]結合第一方面或第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式或第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述方法還包括:
[0024]當所述處理器接收到用戶的內存模塊添加請求時,所述處理器給添加的內存模塊供電,并對所述添加的內存模塊進行初始化,所述添加的內存模塊進入空閑狀態(tài)。
[0025]第二方面,提供了一種服務器,包括:
[0026]處理器、連接所述處理器的第一代理裝置和第二代理裝置、與所述第一代理裝置連接的第一內存模塊、以及與所述第二代理裝置連接的第二內存模塊;
[0027]所述處理器,用于當接收到用戶對第一內存模塊的數據遷移請求后,并且所述第一內存模塊為運行狀態(tài),所述第二內存模塊為空閑狀態(tài)時,查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令;
[0028]所述第一代理裝置,用于接收所述鏡像關系建立指令,在接收到所述鏡像關系建立指令后,與第二代理裝置建立鏡像關系;
[0029]所述處理器,還用于在所述鏡像關系建立完成后,向所述第一代理裝置發(fā)送數據遷移指令;
[0030]所述第一代理裝置,還用于接收所述數據遷移指令,在接收到所述數據遷移指令后,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置;
[0031]所述第二代理裝置,用于接收所述第一代理裝置發(fā)出的所述數據,將所述數據寫入所述第二內存模塊中;
[0032]所述處理器,還用于在所述數據遷移完后,向所述第一代理裝置發(fā)送鏡像關系解除指令,以及在發(fā)出所述鏡像關系解除指令后,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài);
[0033]所述第一代理裝置,還用于接收到所述鏡像關系解除指令后,解除與所述第二代理裝置的所述鏡像關系。
[0034]在第一種可能的實現(xiàn)方式中,所述第一代理裝置還用于接收所述數據遷移指令,在接收到所述數據遷移指令后,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置,包括:
[0035]所述第一代理裝置,還用于接收所述處理器發(fā)送的數據讀取指令,在接收到所述數據讀取指令后,讀取所述第一內存模塊中的數據并將所述第一內存模塊中的數據返回給所述處理器;
[0036]所述第一代理裝置,還用于接收所述處理器寫入的所述第一內存模塊中的數據,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置。
[0037]結合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述處理器,還用于向所述第一代理裝置的第一物理地址寫入第一數據;
[0038]所述第一代理裝置,還用于接收到所述第一數據后,將所述第一數據轉發(fā)給所述第二代理裝置;
[0039]所述第二代理裝置,還用于在接收到所述第二代理裝置轉發(fā)的所述第一數據后,將所述第一數據寫入所述第二內存模塊中的所述第一物理地址。
[0040]結合第二方面或第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述處理器,還用于在所述數據遷移完以及向所述第一代理裝置發(fā)送鏡像關系解除指令后,斷開所述第一內存模塊的電源,以移除所述第一內存模塊。
[0041]結合第二方面或第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的實現(xiàn)方式或第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述處理器,還用于當接收到用戶的內存模塊添加請求時,給添加的內存模塊供電,并對所述添加的內存模塊進行初始化,所述添加的內存模塊成為空閑內存模塊。
[0042]采用本發(fā)明提供的一種服務器中內存模塊的數據遷移方法及服務器的技術方案,處理器通過在兩個內存模塊的代理裝置之間建立鏡像關系,指示代理裝置在兩個內存模塊間進行數據遷移,從而完成一個內存模塊到另一個內存模塊的數據遷移,整個數據遷移過程無需操作系統(tǒng)參與,數據遷移過程耗時短,方便地實現(xiàn)了服務器中內存模塊的數據遷移。
【專利附圖】

【附圖說明】
[0043]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0044]圖1為現(xiàn)有技術中內存熱插拔時涉及的服務器各層的關系示意圖;[0045]圖2為本發(fā)明提供的一種服務器中內存模塊的數據遷移方法的一個實施例的流程圖;
[0046]圖3為本發(fā)明提供的一種服務器中內存模塊的數據遷移方法的另一個實施例的流程圖;
[0047]圖4為現(xiàn)有技術中的內存模塊熱移除流程圖;
[0048]圖5為現(xiàn)有技術中的內存模塊熱添加流程圖;
[0049]圖6a為服務器包含的內存模塊結構示意圖;
[0050]圖6b為對服務器中的內存模塊的數據遷移示意圖;
[0051]圖6c為服務器中的內存模塊完成數據遷移后內存模塊的角色轉換示意圖;
[0052]圖6d為對服務器中的空閑內存模塊進行替換的示意圖;
[0053]圖6e為服務器中的空閑內存模塊替換后的示意圖;
[0054]圖7a為代理裝置HA和內存模塊的結構示意圖;
[0055]圖7b為節(jié)點控制器NC和內存模塊的結構示意圖;
[0056]圖8a為進行內存模塊數據遷移過程的服務器示意圖;
[0057]圖Sb為完成內存模塊數據遷移過程后的服務器示意圖;
[0058]圖9為本發(fā)明的一種服務器的結構示意圖。
【具體實施方式】
[0059]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0060]圖2為本發(fā)明提供的一種服務器中內存模塊的數據遷移方法的一個實施例的流程圖。如圖2所示,該方法包括以下步驟:
[0061]步驟S101,當處理器接收到用戶對第一內存模塊的數據遷移請求時,所述處理器查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令,所述第一內存模塊處于運行狀態(tài),所述第二內存模塊處于空閑狀態(tài)。
[0062]步驟S102,所述第一代理裝置接收所述鏡像關系建立指令,與第二代理裝置建立鏡像關系。
[0063]在本發(fā)明實施例中,服務器包含至少兩個內存模塊,例如第一內存模塊和第二內存模塊,其中第一內存模塊處于運行狀態(tài),第二內存模塊處于空閑狀態(tài),該內存模塊可以是內存卡,即將雙列直插式存儲模塊(Dual In-line Memory Module, DIMM,又稱內存條)安裝在內存卡上,再將內存卡插到主板上。其中,第一內存模塊中存儲有數據,由處理器分配了物理地址并上報給了 OS,OS可以在該第一內存模塊中運行程序或存放數據;而處理器僅對第二內存模塊進行內存初始化,不為其分配物理地址,也不通知OS該第二內存模塊的存在,因而OS也不會用到該第二內存模塊。
[0064]在本發(fā)明實施例中,參與數據遷移過程的每個內存模塊都與一個代理裝置相連,該代理裝置負責接收處理器的內存地址訪問請求,這些內存地址是其所代理的本地(Home/Local)的內存模塊的地址,并將從內存模塊返回的結果通過處理器送回原內存訪問的請求者。
[0065]當用戶希望將服務器中第一內存模塊的數據全部遷移,以將該第一內存模塊移除時,用戶向處理器發(fā)出數據遷移請求。處理器接收到用戶對第一內存模塊的數據遷移請求時,查找一個處于空閑狀態(tài)的內存模塊即第二內存模塊,向與第一內存模塊連接的代理裝置A發(fā)送鏡像關系建立指令,代理裝置A接收到該鏡像關系建立指令后,與連接于該第二內存模塊的代理裝置B建立鏡像關系。所謂鏡像關系是指,第二內存模塊在初始化時不具有物理地址,當代理裝置A和代理裝置B建立鏡像關系后,第二內存模塊就具有與第一內存模塊相同的物理地址,代理裝置A在從處理器接收到寫入第一內存模塊的某物理地址的數據后,除了將該數據寫入第一內存模塊的該物理地址,還將該數據寫入代理裝置B,再由代理裝置B將數據寫入第二內存模塊中的相同的物理地址。
[0066]可以理解的是,本發(fā)明中處理器所執(zhí)行的操作實際上可以是由處理器上的BIOS程序來完成的。
[0067]步驟S103,所述處理器向所述第一代理裝置發(fā)送數據遷移指令。
[0068]步驟S104,所述第一代理裝置接收所述數據遷移指令,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置。
[0069]步驟S105,所述第二代理裝置將所述第一內存模塊中的數據寫入所述第二內存模塊中。
[0070]代理裝置A和代理裝置B建立了鏡像關系后,處理器向代理裝置A發(fā)送數據遷移指令,要將第一內存模塊的數據逐步遷移至第二內存模塊。代理裝置A接收到該數據遷移指令后,從第一內存模塊獲取要遷移的數據,將該數據發(fā)送至代理裝置B,由代理裝置B將數據寫入第二內存模塊中,寫入第二內存模塊的數據的物理地址與該數據在第一內存模塊中的物理地址是完全一致的。
[0071]步驟S106,所述處理器向所述第一代理裝置發(fā)送鏡像關系解除指令,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài)。
[0072]步驟S107,所述第一代理裝置接收所述鏡像關系解除指令,解除與所述第二代理裝置的所述鏡像關系。
[0073]全部遷移完第一內存模塊中的數據后,處理器向代理裝置A發(fā)送鏡像關系解除指令,指示代理裝置A和代理裝置B解除鏡像關系,代理裝置A接收到該鏡像關系解除指令后,解除與代理裝置B的鏡像關系,并且將接收該段物理地址的讀寫指令的代理裝置由代理裝置A修改為代理裝置B,這樣第一內存模塊轉為空閑狀態(tài),而第二內存模塊轉為運行狀態(tài),處理器對該段物理地址進行數據的讀寫時,通過代理裝置B從第二內存模塊讀取數據或將數據寫入第二內存模塊。因為進行數據遷移的前后,第一內存模塊的物理地址不變,所以該數據遷移過程對于OS及OS上運行的應用程序來說是不可見的。
[0074]可以理解的是,服務器中不止一個處于運行狀態(tài)的內存模塊和處于空閑狀態(tài)的內存模塊,處理器可以為處于運行狀態(tài)的內存模塊選擇合適的處于空閑狀態(tài)的內存模塊進行數據遷移,處理器可以同時或依次完成多個處于運行狀態(tài)的內存模塊的數據遷移。
[0075]根據本發(fā)明實施例提供的一種服務器中內存模塊的數據遷移方法,處理器通過在兩個內存模塊的代理裝置之間建立鏡像關系,指示代理裝置在兩個內存模塊間進行數據遷移,從而完成一個內存模塊到另一個內存模塊的數據遷移,整個數據遷移過程無需操作系統(tǒng)參與,數據遷移過程耗時短,方便地實現(xiàn)了服務器中內存模塊的數據遷移。
[0076]圖3為本發(fā)明提供的一種服務器中內存模塊的數據遷移方法的另一個實施例的流程圖。如圖3所示,該方法包括以下步驟:
[0077]步驟S201,當處理器接收到用戶對第一內存模塊的數據遷移請求時,所述處理器查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令,所述第一內存模塊處于運行狀態(tài),所述第二內存模塊處于空閑狀態(tài)。
[0078]步驟S202,所述第一代理裝置接收所述鏡像關系建立指令,與第二代理裝置建立鏡像關系。
[0079]如圖6a所示,服務器中包括多個內存模塊,其中內存模塊1、2和3為處于運行狀態(tài)的內存模塊,其中存儲有數據,由處理器分配了物理地址并上報給了 OS,OS可以在該內存模塊中運行程序或存放數據;內存模塊4為處于空閑狀態(tài)的內存模塊,處理器僅對內存模塊4進行了內存初始化,不為其分配物理地址,也不通知OS該空閑內存模塊的存在,因而OS也不會用到該內存模塊4。在該具有多個內存模塊的服務器中,可以選取其中容量最大的一個內存模塊作為空閑狀態(tài)的內存模塊,同時,不論設置為運行狀態(tài)的內存模塊和空閑狀態(tài)的內存模塊,可以選擇插有相同容量的內存條,這樣任何一個內存模塊都可以成為空閑狀態(tài)的內存模塊以方便進行數據遷移。
[0080]當用戶希望將服務器中某個處于運行狀態(tài)的內存模塊的數據全部遷移,以將該內存模塊移除時,用戶向處理器發(fā)出數據遷移請求。對服務器的內存模塊進行結構設計時一般會有一個用戶的操作接口來接收用戶的熱插拔命令,并且能夠向用戶提示熱插拔的進度。如圖4的內存模塊熱移除流程圖和圖5的內存模塊熱添加流程圖中,該用戶操作接口為一個按鈕。用戶按下該按鈕,即向處理器發(fā)出數據遷移和內存模塊移除命令。
[0081]在本發(fā)明實施例中,與內存模塊連接的代理裝置為如圖7a所示的本地代理(HomeAgent, HA), HA 是英特爾(Intel)的快速通道互聯(lián)(Quick-Path Interconnect, QPI)協(xié)議中的一個組件,現(xiàn)代的Intel處理器之間使用QPI總線進行互聯(lián)。HA負責接收來自QPI的對內存模塊的訪問請求,并將從內存模塊返回的結果送回原內存訪問的請求者。
[0082]圖7a展示了兩個Intel處理器的互聯(lián)方法,每個處理器內部可以劃分為許多單元,這里僅畫出計算單元和互聯(lián)單元,計算單元發(fā)出對地址的訪問請求,互聯(lián)單元將地址請求分配到對應的子模塊,比如HA,或者通過QPI轉發(fā)到其他處理器的互聯(lián)單元。HA是互聯(lián)單元的一個子模塊,它接收來自互聯(lián)單元的對它所掛內存的訪問請求,這個請求可以來自它自身所在處理器的計算單元,也可以來自的其他處理器的計算單元。
[0083]與內存模塊連接的代理裝置還可以是圖7b所示的擴展節(jié)點控制器(ExtendedNode Controller,XNC)/節(jié)點控制器(Node Controller,NC)。如圖7b所示,處理器之間的互聯(lián)除了使用QPI以外,還可以使用XNC/NC,每個處理器的QPI先連接到XNC上,再由XNC的互聯(lián)網絡將所有處理器組合成一個大服務器。每個XNC下面的所有處理器、內存、1/0等統(tǒng)稱一個節(jié)點(node),所以XNC的眾多功能中有一個是類似于HA的,那就是接收從互聯(lián)組織發(fā)來的對自身node內的內存的訪問請求。
[0084]概括來說,HA和XNC/NC在本發(fā)明實施例中都有相同的功能,即:接收這樣內存地址訪問請求,這些內存地址是其所代理的本地的內存模塊的地址。
[0085]如圖8a所示,處理器接收到用戶對一個處于運行狀態(tài)的內存模塊的數據遷移請求時,查找一個處于空閑狀態(tài)的內存模塊,向與處于運行狀態(tài)的內存模塊連接的代理裝置HAO發(fā)送鏡像關系建立指令,代理裝置HAO接收該鏡像關系建立指令,與連接于該處于空閑狀態(tài)的內存模塊的代理裝置HAl建立鏡像關系。所謂鏡像關系是指,處于空閑狀態(tài)的內存模塊在初始化時不具有物理地址,當代理裝置HAO和代理裝置HAl建立了鏡像關系后,處于空閑狀態(tài)的內存模塊就具有了與處于運行狀態(tài)的內存模塊相同的物理地址PA0-PA1,代理裝置HAO在從處理器接收到寫入處于運行狀態(tài)的內存模塊的某物理地址的數據后,除了將該數據寫入該處于運行狀態(tài)的內存模塊的該物理地址,還將該數據寫入代理裝置HA1,再由HAl將數據寫入處于空閑狀態(tài)的內存模塊中的相同的物理地址中。
[0086]步驟S203,所述處理器向所述第一代理裝置發(fā)送數據遷移指令。
[0087]步驟S204,所述第一代理裝置接收所述處理器發(fā)送的數據讀取指令,讀取所述第一內存模塊中的數據并將所述第一內存模塊中的數據返回給所述處理器。
[0088]步驟S205,所述第一代理裝置接收所述處理器寫入的所述第一內存模塊中的數據,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置。
[0089]步驟S206,所述第二代理裝置將所述第一內存模塊中的數據寫入所述第二內存模塊中。
[0090]如圖6b所示,將處于運行狀態(tài)的內存模塊3中的數據逐步遷移至處于空閑狀態(tài)的內存模塊4,該數據遷移的過程包括數據讀取和數據寫入的過程。處理器向HAO發(fā)送數據讀取指令,HAO接收該數據讀取指令,讀取處于運行狀態(tài)的內存模塊中的數據并將該處于運行狀態(tài)的內存模塊中的數據返回給處理器。處理器將該處于運行狀態(tài)的內存模塊中的數據寫入ΗΑ0,然后HAO將該處于運行狀態(tài)的內存模塊中的數據轉發(fā)給HA1,由HAl將該處于運行狀態(tài)的內存模塊中的數據寫入處于空閑狀態(tài)的內存模塊4中。
[0091]具體地,HAO和HAl的工作原理為:ΗΑ0和HAl建立鏡像關系后,服務器中的兩個HA組成鏡像對,如圖7a所示。這兩個HA組成鏡像對后,會有一個HA是主鏡像端(MirroredMaster side),另一個是從鏡像端(Mirrored Slave side)。在內存模塊數據遷移這個應用實例中,主鏡像端就是一直在服務器中使用的HA,而從鏡像端是用來備份等待遷移的HA。在建立起臨時鏡像對的一開始,從HA便具有與主HA相同的物理地址,但是它們當中的數據并不一致,所以就要進行數據遷移。
[0092]具體的數據遷移過程是處理器從低地址到高地址把HA的所有地址進行遍歷,每次執(zhí)行一部分地址:
[0093]1.從內存模塊中將某個地址PAO的數據讀到處理器;
[0094]2.將數據原樣寫回原地址PAO ;
[0095]3.主HA收到這個地址寫請求,會做兩件事,一件是把數據寫到自己內存的PAO地址上;
[0096]4.主HA知道此時服務器有一個它的鏡像HA存在,所以另一件事是它將這個數據包轉發(fā)給從HA ;
[0097]5.從HA收到數據包,將數據寫到自己內存的PAO地址上。
[0098]到此,地址PAO在兩個HA里都有了相同的副本,相當于完成了將主HA的PAO上的數據遷移到了從HA的PAO地址上。
[0099]當處理器完成對整個主HA的地址遍歷,也就完成了 HA內存數據遷移。[0100]步驟S207,所述處理器向所述第一代理裝置的第一物理地址寫入第一數據。
[0101]步驟S208,所述第一代理裝置接收所述第一數據,并將所述第一數據轉發(fā)給所述
第二代理裝置。
[0102]步驟S209,所述第二代理裝置將所述第一數據寫入所述第二內存模塊中的所述第一物理地址。
[0103]內存模塊的數據遷移不是一個瞬間就能完成的任務,需要消耗一段時間,這個時間長度與待遷移的內存模塊的容量成正比。在遷移的一段時間里有兩個主設備可能會對處于運行狀態(tài)的內存模塊3進行讀寫操作:一個是處于運行狀態(tài)的內存模塊3上的ΗΑ0,它在逐漸遍歷處于運行狀態(tài)的內存模塊3的地址,將數據拷貝到處于空閑狀態(tài)的內存模塊4 ;另一個是服務器總線(比如QPI)上發(fā)來的讀寫請求,這是服務器正常運行時對處于運行狀態(tài)的內存模塊3的讀寫請求。如果沒有鏡像關系存在,那么當HAO遷移了一部分地址的數據,而QPI上又發(fā)來對這些地址的寫操作修改了這里內存的值,這樣當遷移完成時,兩個內存模塊的數據不一致,就不可能倒換。鏡像使得所有寫操作會將數據同時寫到兩個內存模塊上,因此保證了一致性。
[0104]在遷移過程中,如果OS需要對主HA的地址PAl進行寫操作,實際上就是以上步驟的2?5步,因此依然可以保證兩個HA的數據一致性。
[0105]步驟S210,所述處理器向所述第一代理裝置發(fā)送鏡像關系解除指令,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài)。
[0106]步驟S211,所述第一代理裝置接收所述鏡像關系解除指令,解除與所述第二代理裝置的所述鏡像關系處于空閑狀態(tài)的內存模塊處于運行狀態(tài)的內存模塊。
[0107]如圖6c所示,全部遷移完處于運行狀態(tài)的內存模塊中的數據后,向HAO發(fā)送鏡像關系解除指令,HAO和HAl解除鏡像關系,并且將接收該段物理地址的讀寫指令的代理裝置由HAO修改為HA1,這樣原來的處于運行狀態(tài)的內存模塊轉為空閑狀態(tài),其物理地址失效,處理器不能往該物理地址中寫入或從該物理地址中讀取數據,原來的處于空閑狀態(tài)的內存模塊轉為運行狀態(tài),該原來的處于空閑狀態(tài)的內存模塊具有與原來處于運行狀態(tài)的內存模塊相同的物理地址PA0-PA1,接收處理器對該段物理地址的讀寫操作,也即如圖Sb所示,處于空閑狀態(tài)的內存模塊和處于運行狀態(tài)的內存模塊的角色發(fā)生了轉換。但因為進行數據遷移及角色倒換的前后,物理地址不變,所以對于OS及OS上運行的應用程序來說是不可見的。也因為其不可見性,對于HAO對應的內存模塊,無論上面是否有OS的內核態(tài)數據,以及無論上面的數據是否被應用程序(比如數據庫)頻繁占用,遷移都是可以完成的,因此大大提高了內存熱移除的可行性。
[0108]步驟S212,所述處理器斷開所述第一內存模塊的電源,以移除所述第一內存模塊。
[0109]由于原來的處于運行狀態(tài)的內存模塊完成了數據遷移以及角色倒換后,實際上轉為空閑狀態(tài),可以斷開該內存模塊的電源,以移除該內存模塊。
[0110]現(xiàn)有的內存模塊熱移除的流程如圖4所示,其包括以下步驟:
[0111]a)按下按鈕,表示發(fā)起命令;
[0112]b)按鈕LED開始閃爍,表示命令已經收到;
[0113]c) BIOS轉發(fā)命令到OS,通知OS對要移除的內存進行遷移;
[0114]d)與上一步同時,電源LED開始閃爍,表示熱移除的流程開始進行;[0115]e)0S進行內存遷移,將這部分內存地址上運行的業(yè)務遷移到其他內存地址上;
[0116]f)與上一步同時,BIOS開始不斷查詢OS是否已完成數據遷移;
[0117]g)如果OS遷移數據成功,則通知BIOS遷移成功的結果;
[0118]h)如果OS遷移數據失敗,則將電源LED恢復到常亮狀態(tài),表示熱移除過程停止,并將按鈕LED設為常亮,通知用戶熱添加失敗(LED的操作實際是BIOS的行為,BIOS因為收不到OS的通知而出現(xiàn)超時,從而判斷OS數據遷移失敗);
[0119]i)如果BIOS收到了 OS的通知,則刪除物理地址,實際是禁用到被移除內存模塊的地址請求;
[0120]j)如果BIOS操作成功,則對內存板停止供電,并將電源LED設為常滅,表示熱移除完成;
[0121]k)如果BIOS操作失敗,則對將電源LED恢復到常亮狀態(tài),表示熱移除過程停止,并將按鈕LED設為常亮,通知用戶熱添加失敗。
[0122]與圖4所示的內存模塊熱移除流程不同的是,采用本發(fā)明實施例提供的數據遷移方法進行內存模塊熱移除,不需要OS的參與,全部由處理器也即其上的BIOS程序控制主HA完成,也即將上述步驟c)-步驟i)替換為本發(fā)明實施例的步驟S201-步驟S211。
[0123]步驟S213,當所述處理器接收到用戶的內存模塊添加請求時,所述處理器給添加的內存模塊供電,并對所述添加的內存模塊進行初始化,所述添加的內存模塊進入空閑狀態(tài)處于空閑狀態(tài)的內存模塊。
[0124]如圖6d所示,將圖6c中的處于空閑狀態(tài)的內存模塊3移除后,可以熱添加新內存模塊5,用戶通過操作接口比如按鍵來發(fā)起對新內存模塊的熱添加操作,該熱添加操作的流程與現(xiàn)有技術相同。
[0125]如圖5為現(xiàn)有技術的內存模塊熱添加流程,其包括以下步驟:
[0126]A.按下按鈕,表示發(fā)起命令;
[0127]B.按鈕LED開始閃爍,表示命令已經收到;
[0128]C.給內存卡(內存板)供電;
[0129]D.電源LED開始閃爍,在熱添加完成之前會一直閃爍;
[0130]E.BIOS進行內存初始化;
[0131]F.為初始化好的內存分配地址;
[0132]G.通知OS新添加的內存可用,并同時上報新添加內存的地址和容量;
[0133]H.0S完成其內存上線(online)操作;
[0134]1.整個過程如果成功完成,則將電源LED變?yōu)槌A?,表示熱添加結束;
[0135]J.如果出現(xiàn)添加失敗,則將電源LED設為常滅,并給內存板斷電,同時將
[0136]按鈕LED設為常亮,通知用戶熱添加失敗。
[0137]然而,在本發(fā)明實施例中,將新內存模塊添加為處于空閑狀態(tài)的內存模塊時,不需要執(zhí)行上述流程中的步驟F)至步驟H),即對圖6d中的內存模塊5供電并進行初始化,但是不為其分配物理地址,使之成為這個服務器中的處于空閑狀態(tài)的內存模塊(如圖6e所示),為其他處于運行狀態(tài)的內存模塊(1,2,4)的熱移除提供了 HA到HA地址遷移的條件。
[0138]根據本發(fā)明實施例提供的一種服務器中內存模塊的數據遷移方法,處理器通過在兩個內存模塊的代理裝置之間建立鏡像關系,指示代理裝置在兩個內存模塊間進行數據遷移,從而完成一個內存模塊到另一個內存模塊的數據遷移,整個數據遷移過程無需操作系統(tǒng)參與,數據遷移過程耗時短,方便地實現(xiàn)了服務器中內存模塊的數據遷移,能方便地對處于運行狀態(tài)的內存模塊進行熱移除,且在數據遷移過程中,仍然可以接收處理器對運行的內存模塊的讀寫操作,不會造成數據錯誤。
[0139]圖9為本發(fā)明一種服務器的一個實施例的結構示意圖。如圖9所示,該服務器1000包括:
[0140]處理器11、連接處理器11的第一代理裝置12和第二代理裝置13、與第一代理裝置12連接的第一內存模塊14、以及與第二代理裝置13連接的第二內存模塊15 ;
[0141]處理器11,用于當接收到用戶對第一內存模塊14的數據遷移請求后,并且第一內存模塊14為運行狀態(tài),第二內存模塊15為空閑狀態(tài)時,查找第二內存模塊15,并向第一代理裝置12發(fā)送鏡像關系建立指令;
[0142]第一代理裝置12,用于接收所述鏡像關系建立指令,在接收到所述鏡像關系建立指令后,與第二代理裝置13建立鏡像關系;
[0143]處理器11,還用于在所述鏡像關系建立完成后,向第一代理裝置12發(fā)送數據遷移指令;
[0144]第一代理裝置12,還用于接收所述數據遷移指令,在接收到所述數據遷移指令后,將第一內存模塊14中的數據發(fā)送至第二代理裝置13 ;
[0145]第二代理裝置13,用于接收第一代理裝置12發(fā)出的所述數據,將所述數據寫入第二內存模塊15中;
[0146]處理器11,還用于在所述數據遷移完后,向第一代理裝置12發(fā)送鏡像關系解除指令,以及在發(fā)出所述鏡像關系解除指令后,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài);
[0147]第一代理裝置12,還用于接收到所述鏡像關系解除指令后,解除與第二代理裝置13的所述鏡像關系。
[0148]根據本發(fā)明實施例提供的一種服務器,其中的處理器通過在兩個內存模塊的代理裝置之間建立鏡像關系,指示代理裝置在兩個內存模塊間進行數據遷移,從而完成一個內存模塊到另一個內存模塊的數據遷移,整個數據遷移過程無需操作系統(tǒng)參與,數據遷移過程耗時短,方便地實現(xiàn)了服務器中內存模塊的數據遷移。
[0149]本發(fā)明還提供了一種服務器的另一個實施例。該服務器包括:
[0150]處理器、連接所述處理器的第一代理裝置和第二代理裝置、與所述第一代理裝置連接的第一內存模塊、以及與所述第二代理裝置連接的第二內存模塊;
[0151]所述處理器,用于當接收到用戶對第一內存模塊的數據遷移請求后,并且所述第一內存模塊為運行狀態(tài),所述第二內存模塊為空閑狀態(tài)時,查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令;
[0152]所述第一代理裝置,用于接收所述鏡像關系建立指令,在接收到所述鏡像關系建立指令后,與第二代理裝置建立鏡像關系;
[0153]所述處理器,還用于在所述鏡像關系建立完成后,向所述第一代理裝置發(fā)送數據遷移指令;
[0154]所述第一代理裝置,還用于接收所述處理器發(fā)送的數據讀取指令,,在接收到所述數據讀取指令后,讀取所述第一內存模塊中的數據并將所述第一內存模塊中的數據返回給所述處理器;
[0155]所述第一代理裝置,還用于接收所述處理器寫入的所述第一內存模塊中的數據,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置;
[0156]所述第二代理裝置,用于接收所述第一代理裝置發(fā)出的所述數據,將所述數據寫入所述第二內存模塊中;
[0157]所述處理器,還用于向所述第一代理裝置的第一物理地址寫入第一數據;
[0158]所述第一代理裝置,還用于接收到所述第一數據后,將所述第一數據轉發(fā)給所述第二代理裝置;
[0159]所述第二代理裝置,還用于在接收到所述第二代理裝置轉發(fā)的所述第一數據后,將所述第一數據寫入所述第二內存模塊中的所述第一物理地址;
[0160]所述處理器,還用于在所述數據遷移完后,向所述第一代理裝置發(fā)送鏡像關系解除指令,以及在發(fā)出所述鏡像關系解除指令后,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài);
[0161]所述第一代理裝置,還用于接收到所述鏡像關系解除指令后,解除與所述第二代理裝置的所述鏡像關系。
[0162]所述處理器,還用于在所述數據遷移完以及向所述第一代理裝置發(fā)送鏡像關系解除指令后,斷開所述第一內存模塊的電源,以移除所述第一內存模塊;
[0163]所述處理器,還用于當接收到用戶的內存模塊添加請求時,給添加的內存模塊供電,并對所述添加的內存模塊進行初始化,所述添加的內存模塊成為空閑內存模塊。
[0164]根據本發(fā)明實施例提供的一種服務器,其中的處理器通過在兩個內存模塊的代理裝置之間建立鏡像關系,指示代理裝置在兩個內存模塊間進行數據遷移,從而完成一個內存模塊到另一個內存模塊的數據遷移,整個數據遷移過程無需操作系統(tǒng)參與,數據遷移過程耗時短,方便地實現(xiàn)了服務器中內存模塊的數據遷移,能方便地對處于運行狀態(tài)的內存模塊進行熱移除,且在數據遷移過程中,仍然可以接收處理器對運行的內存模塊的讀寫操作,不會造成數據錯誤。
[0165]所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的設備和模塊的具體工作過程,可以參考前述方法實施例中的對應過程描述,在此不再贅述。
[0166]在本申請所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個模塊或組件可以結合或者可以集成到另一個設備中,或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些通信接口,裝置或模塊的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0167]所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕嶋H的需要選擇其中的部分或者全部,模塊來實現(xiàn)本實施例方案的目的。
[0168]另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。
[0169]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件設備的形式體現(xiàn)出來,該計算機軟件設備可以存儲在計算機可讀存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
[0170]以上所述的實施方式,并不構成對該技術方案保護范圍的限定。任何在上述實施方式的精神和原則之內所作的修改、等同替換和改進等,均應包含在該技術方案的保護范圍之內。
【權利要求】
1.一種服務器中內存模塊的數據遷移方法,其特征在于,包括: 當處理器接收到用戶對第一內存模塊的數據遷移請求時,所述處理器查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令,所述第一內存模塊處于運行狀態(tài),所述第二內存模塊處于空閑狀態(tài); 所述第一代理裝置接收所述鏡像關系建立指令,與第二代理裝置建立鏡像關系; 所述處理器向所述第一代理裝置發(fā)送數據遷移指令; 所述第一代理裝置接收所述數據遷移指令,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置; 所述第二代理裝置將所述第一內存模塊中的數據寫入所述第二內存模塊中; 所述處理器向所述第一代理裝置發(fā)送鏡像關系解除指令,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài);所述第一代理裝置接收所述鏡像關系解除指令,解除與所述第二代理裝置的所述鏡像關系。
2.如權利要求1所述的方法,其特征在于,所述第一代理裝置接收所述數據遷移指令,將所述第一內存模 塊中的數據發(fā)送至所述第二代理裝置,包括: 所述第一代理裝置接收所述處理器發(fā)送的數據讀取指令,讀取所述第一內存模塊中的數據并將所述第一內存模塊中的數據返回給所述處理器; 所述第一代理裝置接收所述處理器寫入的所述第一內存模塊中的數據,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置。
3.如權利要求1或2所述的方法,其特征在于,所述處理器向所述第一代理裝置發(fā)送鏡像關系解除指令之前,還包括: 所述處理器向所述第一代理裝置的第一物理地址寫入第一數據; 所述第一代理裝置接收所述第一數據,并將所述第一數據轉發(fā)給所述第二代理裝置; 所述第二代理裝置將所述第一數據寫入所述第二內存模塊中的所述第一物理地址。
4.如權利要求1-3任意一項所述的方法,其特征在于,所述第一代理裝置接收所述鏡像關系解除指令,解除與所述第二代理裝置的所述鏡像關系之后,還包括: 所述處理器斷開所述第一內存模塊的電源,以移除所述第一內存模塊。
5.如權利要求1-4任意一項所述的方法,其特征在于,還包括: 當所述處理器接收到用戶的內存模塊添加請求時,所述處理器給添加的內存模塊供電,并對所述添加的內存模塊進行初始化,所述添加的內存模塊進入空閑狀態(tài)。
6.一種服務器,其特征在于,包括: 處理器、連接所述處理器的第一代理裝置和第二代理裝置、與所述第一代理裝置連接的第一內存模塊、以及與所述第二代理裝置連接的第二內存模塊; 所述處理器,用于當接收到用戶對第一內存模塊的數據遷移請求后,并且所述第一內存模塊為運行狀態(tài),所述第二內存模塊為空閑狀態(tài)時,查找第二內存模塊,并向第一代理裝置發(fā)送鏡像關系建立指令; 所述第一代理裝置,用于接收所述鏡像關系建立指令,在接收到所述鏡像關系建立指令后,與第二代理裝置建立鏡像關系; 所述處理器,還用于在所述鏡像關系建立完成后,向所述第一代理裝置發(fā)送數據遷移指令;所述第一代理裝置,還用于接收所述數據遷移指令,在接收到所述數據遷移指令后,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置; 所述第二代理裝置,用于接收所述第一代理裝置發(fā)出的所述數據,將所述數據寫入所述第二內存模塊中; 所述處理器,還用于在所述數據遷移完后,向所述第一代理裝置發(fā)送鏡像關系解除指令,以及在發(fā)出所述鏡像關系解除指令后,將所述第一內存模塊和所述第二內存模塊分別設置為空閑狀態(tài)和運行狀態(tài); 所述第一代理裝置,還用于接收到所述鏡像關系解除指令后,解除與所述第二代理裝置的所述鏡像關系。
7.如權利要求6所述的服務器,其特征在于,所述第一代理裝置還用于接收所述數據遷移指令,在接收到所述數據遷移指令后,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置,包括: 所述第一代理裝置,還用于接收所述處理器發(fā)送的數據讀取指令,在接收到所述數據讀取指令后,讀取所述第一內存模塊中的數據并將所述第一內存模塊中的數據返回給所述處理器; 所述第一代理裝置,還用于接收所述處理器寫入的所述第一內存模塊中的數據,將所述第一內存模塊中的數據發(fā)送至所述第二代理裝置。
8.如權利要求6或7所述的服務器,其特征在于, 所述處理器,還用于向所述第一代理裝置的第一物理地址寫入第一數據; 所述第一代理裝置,還用于接收到所述第一數據后,將所述第一數據轉發(fā)給所述第二代理裝置; 所述第二代理裝置,還用于在接收到所述第二代理裝置轉發(fā)的所述第一數據后,將所述第一數據寫入所述第二內存模塊中的所述第一物理地址。
9.如權利要求6-8任意一項所述的服務器,其特征在于, 所述處理器,還用于在所述數據遷移完以及向所述第一代理裝置發(fā)送鏡像關系解除指令后,斷開所述第一內存模塊的電源,以移除所述第一內存模塊。
10.如權利要求6-9任意一項所述的服務器,其特征在于, 所述處理器,還用于當接收到用戶的內存模塊添加請求時,給添加的內存模塊供電,并對所述添加的內存模塊進行初始化,所述添加的內存模塊成為空閑內存模塊。
【文檔編號】G06F12/02GK103455372SQ201310390761
【公開日】2013年12月18日 申請日期:2013年8月31日 優(yōu)先權日:2013年8月31日
【發(fā)明者】陳奔, 劉鋼 申請人:華為技術有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
海南省| 双鸭山市| 通辽市| 临猗县| 永泰县| 梁平县| 丰镇市| 沐川县| 三河市| 嘉荫县| 汕尾市| 常宁市| 微山县| 涞源县| 龙门县| 济南市| 靖安县| 文山县| 梁山县| 重庆市| 彩票| 沁源县| 奈曼旗| 苏尼特左旗| 阿坝县| 天津市| 易门县| 巴中市| 沾益县| 阿拉善左旗| 黄骅市| 南澳县| 隆化县| 富锦市| 巩义市| 米易县| 古丈县| 寿光市| 平安县| 梓潼县| 静海县|