基于次計算機中的存儲器錯誤移動主計算機中的對象的制作方法
【技術領域】
[0001]本發明的實施例主要地涉及計算機系統而更具體地涉及使用鏡像的計算機系統。
【背景技術】
[0002]計算機系統通常地包括硬件(比如半導體、晶體管、芯片和電路板)和計算機程序的組合。隨著計算機和它們使用的數據已經變得更重要,用戶已經變得日益無法容忍對計算機的可用性的任何中斷。為了滿足用戶的高可用性要求,計算機可以提供冗余部件,從而在一個部件出故障或者變得不可用的情況下,計算機自動地切換成使用另一部件。
[0003]—種高可用性技術稱為鏡像或者檢查點設置,其中主計算機向次計算機周期地復制它的存儲器的內容和處理器狀態。鏡像包括跟蹤對由分區訪問的存儲器的改變和對分區在主計算機在其上執行的處理器的狀態的改變、周期地暫停分區在主計算機的執行、通過網絡向次計算機發送跟蹤的改變、等待次計算機確認接收跟蹤的改變以及恢復對暫停的分區的執行。在主計算機的故障的情況下,次計算機開始以對在分區中執行的應用透明的方式使用跟蹤的改變和處理器狀態來執行由主計算機執行的分區。
【發明內容】
[0004]提供一種方法、計算機可讀存儲介質和計算機。在一個實施例中,在主服務器處執行分區,其中分區訪問在主服務器處的第一存儲器塊地址處的第一存儲器位置。如果在次服務器處的第一對應存儲器位置具有錯誤,其中在次服務器處的第一對應存儲器位置對應于在主服務器處的第一存儲器位置,則從在主服務器處的第一存儲器位置向在主服務器處的第二存儲器位置移動對象。
【附圖說明】
[0005]圖1描繪用于實現本發明的一個實施例的例子系統的高級框圖。
[0006]圖2描繪根據本發明的一個實施例的經由網絡和次存儲設備連接的例子服務器計算機的高級框圖。
[0007]圖3描繪根據本發明的一個實施例的用于存儲器表的例子數據結構的框圖。
[0008]圖4描繪根據本發明的一個實施例的用于檢查點的例子處理的流程圖。
[0009]圖5描繪根據本發明的一個實施例的用于處置存儲器錯誤的例子處理的流程圖。
[0010]圖6描繪根據本發明的一個實施例的用于處置主服務器的故障的例子處理的流程圖。
[0011]圖7描繪根據本發明的一個實施例的用于處置次服務器的故障的例子處理的流程圖。
[0012]然而將注意所附附圖僅圖示本發明的例子實施例、因此未視為限制本發明的其它實施例的范圍。
【具體實施方式】
[0013]參照附圖,其中相似標號表示貫穿若干視圖的相似部分,圖1描繪根據本發明的一個實施例的連接到網絡130的服務器計算機系統100的高級框圖表示。本發明的實施例的機制和裝置同樣地適用于任何適當計算系統。服務器計算機系統100的主要部件包括一個或者多個處理器101、存儲器102、終端接口單元111、存儲接口單元112、1/0(輸入/輸出)設備接口單元113和網絡接口單元114,所有這些部件被直接地或者間接地通信地耦合用于經由存儲器總線103、I/O總線104和I/O總線接口單元105的部件間通信。
[0014]服務器計算機系統100包含這里通稱為處理器101的一個或者多個通用可編程中央處理單元(CPU)101A、101B、101C和101D。在一個實施例中,服務器計算機系統100包含通常為相對大的系統的多個處理器;然而,在另一實施例中,計算系統100可以備選地是單個CPU系統。每個處理器101執行存儲器102中存儲的指令并且可以包括一級或者多級板上高速緩存。
[0015]在一個實施例中,存儲器102可以包括用于存儲或者編碼數據和程序的隨機存取半導體存儲器、存儲設備或者存儲介質(易失性或者非易失性)。在另一實施例中,存儲器102代表服務器計算機系統100的整個虛擬存儲器并且也可以包括耦合到服務器計算機系統100的或者經由網絡130連接的其它計算機系統的虛擬存儲器。存儲器102在概念上是單個單片實體,但是在其它實施例中,存儲器102是更復雜的布置、比如高速緩存和其它存儲器設備的分級。例如存儲器可以存在于多級高速緩存中,并且這些高速緩存可以按功能來進一步劃分,從而一個高速緩存保持指令而另一高速緩存保持由一個或者多個處理器使用的非指令數據。如在各種所謂非統一存儲器存取(NUMA)計算機架構中的任何NUMA計算機架構中已知的那樣,存儲器可以被進一步分布并且與不同CPU或者CPU集合關聯。
[0016]圖示存儲器102為包括多個分區134、管理程序136和存儲器表140。雖然圖示分區134、管理程序136和存儲器表140為存儲于計算機系統100中的存儲器102中,但是在其它實施例中,它們中的一些或者全部可以在不同計算系統上并且可以例如經由網絡130來遠程地訪問。另外,服務器計算機系統100可以使用虛擬尋址機制,這些虛擬尋址機制允許服務器計算機系統100的程序表現如同它們僅具有對大的單個存儲實體的訪問而不是對多個更小存儲實體的訪問。因此,盡管圖示分區134、管理程序136和存儲器表140為駐留在存儲器102中,但是這些單元未必都被同時完全地包含在相同存儲設備中。
[0017]分區134中的每個分區包括應用(app) 144、操作系統(0S) 146和分區數據148。可以支持任何數目的分區134,并且在任何時間在計算機100中駐留的分區134的數目可以隨著向計算機100添加或者從計算機100去除分區134而動態地改變。分區134中的每個分區包括在分離或者獨立存儲器空間中在處理器101上執行的指令。在各種實施例中,實現應用144為用戶應用、第三方應用或者其任何部分、多個或者組合。應用144和操作系統146包括在處理器101上執行的指令或者由在處理器101上執行的指令解釋的語句。應用144中的每個應用可以相互相同或者互不相同,操作系統146中的每個操作系統可以相互相同或者互不相同,而數據148中的每個數據可以相互相同或者互不相同。
[0018]雖然圖示管理程序136為存儲于存儲器102內,但是在其它實施例中,可以在固件或者硬件中實現管理程序136的全部或者部分。管理程序136可以執行低級管理功能、比如頁面表管理并且也可以執行更高級管理功能、比如創建和刪除分區134、并行I/O維護和向/從各種分區134分配/取消分配處理器,存儲器和其它硬件或者程序資源。管理程序136控制向分區134分配、鎖定和解鎖共享的資源以及分區134對共享資源的訪問從而保證這些分區134在服務器計算機系統100內的安全和隔離。管理程序開始、停止和中止分區134在處理器101上的執行。
[0019]管理程序136靜態地和/或動態地向每個分區134分配計算機100中的可用資源的部分。例如可以向每個分區134分配處理器101中的一個或者多個處理器和/或在其上執行的一個或者多個硬件線程以及待訪問的可用存儲器空間的部分。分區134可以共享具體程序和/或硬件資源、比如處理器101,從而給定的資源可以由多于一個分區134利用。備選地,可以一次向僅一個分區134分配程序和硬件資源。通常地向分區134中的一個或者多個分區分配附加資源、例如海量存儲裝置、備用存儲裝置、用戶輸入、網絡連接和/或其I/O適配器。可以用多種方式分配資源、例如在逐個總線基礎上或者在逐個資源基礎上而多個分區134在相同總線上共享資源。可以一次向多個分區134分配一些資源。這里標識的資源僅為例子,并且可以使用能夠分配的任何適當資源。
[0020]在一個實施例中,如以下參照圖2、3、4、5、6和7進一步描述的那樣,分區134和/或管理程序136包括在處理器101上執行的指令或者由在處理器101上執行的指令解釋的語句以執行功能。在另一實施例中,可以在微代碼或者固件中實現分區134和/或管理程序136。在另一實施例中,可以經由邏輯門、半導體器件、芯片、電路、電路卡和/或其它物理硬件器件在硬件中實現管理程序136。
[0021]存儲器總線103提供用于在處理器101、存儲器102和I/O總線接口單元105之中傳送數據的數據通信路徑或者通信結構。I/o總線接口單元105進一步耦合到I/O總線104用于向和從各種I/O單元傳送數據。I/O總線接口單元105通過