一種故障修復方法、裝置及存儲介質與流程
1.本技術實施例涉及計算機技術領域,尤其涉及一種故障修復方法、裝置及存儲介質。
背景技術:
2.隨著互聯網技術的廣泛應用,內存的可靠性已成為各大企業關注的重點。經數據統計發現,內存中的行(row)故障是降低內存可靠性和引發服務器宕機的因素之一;一種處理行故障的方法是基于行替換(post-package repair,ppr)的方式。
3.然而,目前的基于ppr處理行故障的過程中,修復的行故障可能并不是引發服務器宕機的行故障,而由于內存中的冗余存儲區域的可用資源量的限制,所以真正導致服務器宕機的行故障可能并未被修復,因此,降低了內存的可靠性。
4.因此,如何對行故障修復能提升內存的可靠性是本領域技術人員亟待解決的問題。
技術實現要素:
5.本技術實施例提供一種故障修復方法、裝置及存儲介質,能夠提高內存的可靠性。
6.為達到上述目的,本技術實施例采用如下技術方案:
7.第一方面,本技術實施例提供一種故障修復方法,該方法包括:獲取內存的第一行故障地址和第二行故障地址,第一行故障地址和第二行故障地址不同;該第一行故障地址指示了內存中發生故障的第一行故障位置,該第二行故障地址指示了內存中發生故障的第二行故障位置;確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度;依次對該第一行故障位置和第二行故障位置進行修復,該第一行故障位置的嚴重程度高于第二行故障位置的嚴重程度。
8.相比傳統的按照多個行故障的發生時間依次對該多個行故障位置進行修復的方式,其中,發生時間越靠前的行故障位置,越先被修復;本技術實施例提供的故障修復方法是按照第一行故障位置和第二行故障位置的故障嚴重程度對該第一行故障位置和第二行故障位置進行修復的,其中,故障嚴重程度越高的行故障位置被優先進行修復;從而避免了因內存中嚴重程度較高的行故障位置被晚修復或不被修復,從導致的系統出現宕機的情況;因此提高了內存的可靠性。
9.一種可能的實現方式中,上述確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,包括:獲取在預設時間段內發生在上述第一行故障位置的故障次數,和發生在第二行故障位置的故障次數;將第一行故障位置的故障次數輸入至評估模型,得到該第一行故障位置的評分;第一行故障的評分用于表征第一行故障位置的故障嚴重程度;將第二行故障地址的故障次數輸入至上述評估模型,得到第二行故障地址的評分;第二行故障的評分用于表征第二行故障位置的故障嚴重程度。
10.一種可能的實現方式中,上述預設時間段是從內存所在的計算設備上一次重啟的
時間開始至計算設備本次重啟的時間結束的時間。
11.一種可能的實現方式中,在上述確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度之后,該方法還包括:基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表;該目標故障列表中的行故障位置是按照行故障位置的故障嚴重程度大小進行排序的;上述依次對第一行故障位置和第二行故障位置進行修復,包括:按照上述目標故障列表中的行故障位置的排序,依次對目標故障列表中的行故障位置進行修復。
12.本技術實施例提供的故障修復方法,通過將第一行故障位置和第二行故障位置按照故障嚴重程度大小進行排序后得到目標故障列表;然后,在執行修復動作時,只需要根據目標故障列表中的行故障位置的排序,對該目標故障列表中的行故障位置按照故障嚴重程度由大到小的順序依次進行修復,并不需要將每個行故障位置的故障嚴重程度與其他行故障位置的故障嚴重程度進行對比,因此,提高了行故障的修復效率。
13.一種可能的實現方式中,上述基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表,包括:當服務器在運行階段時,基于該第一行故障位置的故障嚴重程度和該第二行故障位置的故障嚴重程度,確定目標故障列表;上述按照目標故障列表中的行故障位置的排序,依次對上述目標故障列表中的行故障位置進行修復,包括:當上述服務器在重啟階段時,按照目標故障列表中的行故障位置的排序,依次對該目標故障列表中的行故障位置進行修復。
14.本技術實施例在服務器運行階段確定目標故障列表,所以在服務器重啟階段只需要根據目標故障列表中的行故障位置的排序依次對目標故障列表中的行故障位置進行修復,并不需要對該多個行故障位置根據嚴重程度進行排序,因此,提高了服務器的重啟效率。
15.一種可能的實現方式中,上述在基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表之后,該方法還包括:根據第三行故障位置更新目標故障列表,得到更新后的目標故障列表;其中,第三行故障為上述預設時間段內發生的行故障,且第三行故障的發生時間在第一行故障和第二行故障的發生時間之后;該更新后的目標故障列表中的行故障位置是按照行故障位置的故障嚴重程度大小進行排序的;上述按照目標故障列表中的行故障位置的排序,依次對該目標故障列表中的行故障位置進行修復,包括:按照該更新后的目標故障列表中的行故障位置的排序,依次對更新后的目標故障列表中的行故障位置進行修復。
16.一種可能的實現方式中,上述根據第三行故障位置的故障嚴重程度更新目標故障列表,包括:當第三行故障位置與上述第一行故障位置和第二行故障位置均不同時,將該第三行故障位置添加進上述目標故障列表,得到更新后的目標故障列表;當該第三行故障位置與上述目標故障列表中的目標行故障位置相同時,更新該目標行故障位置的故障次數,并根據更新后的目標行故障位置的故障次數重新計算該目標行故障位置的故障嚴重程度;根據該目標行故障位置的故障嚴重程度和非目標行故障位置的故障嚴重程度,更新上述目標故障列表,得到更新后的目標故障列表,該非目標行故障位置為上述目標故障列表中除目標行故障位置以外的行故障位置。
17.第二方面,本技術實施例提供一種故障修復裝置,該故障修復裝置包括:獲取模
塊、確定模塊和修復模塊;上述獲取模塊用于獲取內存的第一行故障地址和第二行故障地址,第一行故障地址和第二行故障地址不同;該第一行故障地址指示了內存中發生故障的第一行故障位置,該第二行故障地址指示了內存中發生故障的第二行故障位置;上述確定模塊用于確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度;上述修復模塊用于依次對上述第一行故障位置和第二行故障位置進行修復,該第一行故障位置的嚴重程度高于上述第二行故障位置的嚴重程度。
18.一種可能的實現方式中,獲取模塊用于獲取在預設時間段內發生在第一行故障位置的故障次數,和發生在第二行故障位置的故障次數;上述確定模塊用于將第一行故障位置的故障次數輸入至評估模型,得到第一行故障位置的評分;第一行故障的評分用于表征第一行故障位置的故障嚴重程度;上述確定模塊還用于將第二行故障地址的故障次數輸入至評估模型,得到第二行故障地址的評分;第二行故障的評分用于表征第二行故障位置的故障嚴重程度。
19.一種可能的實現方式中,上述預設時間段是從內存所在的計算設備上一次重啟的時間開始至計算設備本次重啟的時間結束的時間。
20.一種可能的實現方式中,上述確定模塊用于基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表;目標故障列表中的行故障位置是按照行故障位置的故障嚴重程度大小進行排序的;上述修改模塊用于按照目標故障列表中的行故障位置的排序,依次對目標故障列表中的行故障位置進行修復。
21.一種可能的實現方式中,當服務器在運行階段時,上述確定模塊用于基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表;當服務器在重啟階段時,上述修復模塊用于按照目標故障列表中的行故障位置的排序,依次對目標故障列表中的行故障位置進行修復。
22.一種可能的實現方式中,上述故障修復裝置還包括:更新模塊;更新模塊用于根據第三行故障位置更新目標故障列表,得到更新后的目標故障列表;其中,第三行故障為預設時間段內發生的行故障,且第三行故障的發生時間在第一行故障和第二行故障的發生時間之后;更新后的目標故障列表中的行故障位置是按照行故障位置的故障嚴重程度大小進行排序的;上述修復模塊用于按照更新后的目標故障列表中的行故障位置的排序,依次對更新后的目標故障列表中的行故障位置進行修復。
23.一種可能的實現方式中,上述更新模塊用于當第三行故障位置與第一行故障位置和第二行故障位置均不同時,將第三行故障位置添加進目標故障列表,得到更新后的目標故障列表;上述更新模塊用于當第三行故障位置與目標故障列表中的目標行故障位置相同時,更新目標行故障位置的故障次數,并根據更新后的目標行故障位置的故障次數重新計算目標行故障位置的故障嚴重程度;上述更新模塊還用于根據目標行故障位置的故障嚴重程度和非目標行故障位置的故障嚴重程度,更新目標故障列表,得到更新后的目標故障列表,非目標行故障位置為目標故障列表中除目標行故障位置以外的行故障位置。
24.第三方面,本技術實施例提供一種計算設備,包括存儲器和處理器,存儲器與處理器耦合;存儲器用于存儲計算機程序代碼,其中,計算機程序代碼包括計算機指令;當計算機指令被處理器執行時,使得計算設備執行第一方面及其可能的實現方式中任意之一所述的方法。
25.第四方面,本技術實施例提供一種計算機可讀存儲介質,其上存儲有計算機指令,當計算機指令在計算設備上運行時,使得計算設備執行上述第一方面及其可能的實現方式中任意之一所述的方法。
26.第五方面,本技術實施例提供一種計算機程序產品,當其在計算機上運行時,使得計算機執行上述第一方面及其可能的實現方式中任意之一所述的方法。
27.應當理解的是,本技術實施例的第二方面至第五方面技術方案及對應的可能的實施方式所取得的有益效果可以參見上述對第一方面及其對應的可能的實施方式的技術效果,此處不再贅述。
附圖說明
28.圖1為本技術實施例提供的一種服務器的層級結構示意圖;
29.圖2為本技術實施例提供的一種服務器硬件結構示意圖;
30.圖3為本技術實施例提供的一種故障修復方法流程示意圖一;
31.圖4為本技術實施例提供的一種行故障與重啟時間關系示意圖;
32.圖5為本技術實施例提供的一種內存結構示意圖;
33.圖6為本技術實施例提供的一種故障修復方法流程示意圖二;
34.圖7為本技術實施例提供的一種故障修復方法流程示意圖三;
35.圖8為本技術實施例提供的一種故障修復方法流程示意圖三;
36.圖9為本技術實施例提供的一種更新故障列表的方法流程示意圖;
37.圖10為本技術實施例提供的一種故障修復裝置結構示意圖。
具體實施方式
38.本文中術語“和/或”,僅僅是一種描述關聯對象的關聯關系,表示可以存在三種關系,例如,a和/或b,可以表示:單獨存在a,同時存在a和b,單獨存在b這三種情況。
39.本技術實施例的說明書和權利要求書中的術語“第一”和“第二”等是用于區別不同的對象,而不是用于描述對象的特定順序。例如,第一行故障和第二行故障是用于區別不同的行故障,而不是用于描述行故障的特定順序。
40.在本技術實施例中,“示例性的”或者“例如”等詞用于表示作例子、例證或說明。本技術實施例中被描述為“示例性的”或者“例如”的任何實施例或設計方案不應被解釋為比其它實施例或設計方案更優選或更具優勢。確切而言,使用“示例性的”或者“例如”等詞旨在以具體方式呈現相關概念。
41.本技術實施例描述的架構場景是為了更加清楚的說明本技術實施例的技術方案,并不構成對于本技術實施例提供的技術方案的限定,本領域普通技術人員可知,隨著計算機系統的演變,本技術實施例提供的技術方案對于類似的技術問題,同樣適用。
42.隨著互聯網技術的廣泛應用,內存的可靠性已成為各大企業關注的重點。經數據統計發現,內存中的行(row)故障是降低內存可靠性和引發服務器宕機的因素之一;傳統的處理行故障的方式為基于封裝后修復(post-package repair,ppr)的方式。
43.眾所周知,上述ppr的方式是使用內存中的冗余存儲區域替換存儲區域中發生故障的區域;其中,存儲區域用于存儲數據,冗余存儲區域用于替換存儲區域中發生故障的區
域。
44.傳統的基于ppr處理行故障的具體過程包括:服務器中的單板管理控制器(baseboard management controller,bmc)對接收到的多個行故障按照該多個行故障的發生時間進行排序,進而得到行故障列表。當服務器重啟階段,服務器中的基本輸入輸出系統(basic input output system,bios),從bmc中獲取該行故障列表,并按照行故障列表中的多個行故障的排序依次對該多個行故障進行ppr處理,直至服務器內存中的冗余存儲區域的可用資源不足時結束修復行故障動作。
45.然而,傳統的基于ppr處理行故障的過程中,修復的行故障可能并不是引發服務器宕機的行故障,而由于內存中的冗余存儲區域的可用資源量的限制,所以真正導致服務器宕機的行故障可能并未被修復,從而降低了內存的可靠性。因此,如何對行故障修復能提升內存的可靠性是本領域技術人員亟待解決的問題。
46.基于此,本技術實施例提供了一種故障修復方法,該方法根據確定第一行故障位置和第二行故障位置的故障嚴重程度,對故障嚴重程度較高的第一行故障位置優先進行修復,從而避免了因內存中故障嚴重程度較高的行故障位置被晚修復或不被修復,從導致的系統出現宕機的情況;因此提高了內存的可靠性。
47.首先對本技術實施例提供的一種故障修復方法、裝置及存儲介質中涉及的一些概念做解釋說明:
48.行故障:為內存中行(row)發生的可糾正錯誤(corrected error,ce)的故障或不可糾正錯誤(uncorrected error,uce)的故障,其中,內存的物理粒度從大到小依次為:dimm、rank、device、bank、row/column、cell、bit;其該多個物理粒度之間的關系具體為:每個計算機設備可以包括多個內存條(dimm),每個內存條上具有兩個內存列(rank),分別位于內存的兩個面,例如,兩個內存列分別為內存列0(rank0)和內存列1(rank1)。其中,每個內存列上可以配置多個內存芯片(chip)用于存儲數據,內存芯片也可以稱為內存顆粒(device),內存芯片可以是動態隨機存取存儲器(dynamic random access memory,dram)、靜態隨機存取存儲器(static random access memory,sram)等,每個內存芯片可以劃分為多個存儲陣列(bank),內存芯片在存儲數據時,該數據以位(bit)為單位寫入一個存儲陣列中。另外,還可以將多個存儲陣列歸為一個存儲陣列組(bankgroup),其中,每個存儲陣列組的存儲陣列的數量可以相同,或者,也可以不同。存儲陣列由大量的存儲單元(cell)組成,大量的存儲單元排列成二維矩陣形式,只要指定存儲陣列上的行(row)和列(column),則可以在存儲陣列上定位一個存儲單元,內存發生故障的最小單位為存儲陣列上的存儲單元。也就是說,內存故障包括:dimm故障、rank故障、device故障、bank故障、row故障/column故障、cell故障以及bit故障中的至少一種。
49.服務器包括硬件層和軟件層,軟件層是運行在硬件層上的程序代碼。軟件層又可以分成若干個層,層與層之間通過軟件接口通信。軟件層從上至下包括應用層、“操作系統(operating system,os)和基本輸入輸出系統(basic input output system,bios)”、驅動層以及硬件層,如圖1所示。
50.應用層,包括一系列運行應用程序的程序代碼。
51.os,是運行在cpu中的系統。該os系統可以是linux、windows或vxworks等。
52.bios,是加載在bios芯片中的系統,用來設置硬件,為os運行做準備。bios的主要
功能是上電、自檢、cpu初始化、內存初始化、檢測輸入輸出設備以及可啟動設備并最終引導os啟動。
53.驅動層,包括板機支持包和驅動程序,其用于為應用層、os和bios提供操作硬件層中的裝置接口;也就是說,驅動層是“應用層、os和bios與硬件層的銜接層。
54.硬件層,包括處理器(central processing unit,cpu)101、存儲器102、bios芯片103以及單板管理控制器(baseboard management controller,bmc)芯片104等計算機硬件。這些硬件之間的連接關系如圖2所示。
55.圖2是本技術實施例提供的一種服務器的硬件結構示意圖,該服務器可以是支持內存ppr技術的任意類型的服務器,例如x86架構的服務器,具體可以是刀片服務器、高密服務器、機架服務器或高性能服務器等,其中,該服務器包括處理器201、存儲器202、網絡接口203、總線204、bois芯片205以及bmc芯片206。
56.其中,處理器201可以包括一個或多個處理單元,例如:處理器201可以包括應用處理器(application processor,ap),調制解調處理器,圖形處理器(graphics processing unit,gpu),圖像信號處理器(image signal processor,isp),控制器,視頻編解碼器,數字信號處理器(digital signal processor,dsp),基帶處理器,和/或神經網絡處理器(neural-network processing unit,npu)等。其中,不同的處理單元可以是獨立的器件,也可以集成在一個或多個處理器中。
57.存儲器202用于存儲數據,其中該存儲器202包括但不限于是隨機存取存儲器(random access memory,ram)、只讀存儲器(read-only memory,rom)、快閃存儲器、或光存儲器等。
58.該存儲器202用于與上述處理器201交互,并將交互過程中產生的故障信息發送至bios芯片205;其中該存儲器202中包括至少一個內存。
59.網絡接口203是有線接口(端口),例如fddi、ge接口。或者,網絡接口203是無線接口。應理解,網絡接口203包括多個物理端口,網絡接口203用于獲取第一行故障地址和第二行故障地址等。
60.總線204,上述處理器201、存儲器202、網絡接口203、biso芯片205以及bmc芯片206通常通過總線204相互連接,或采用其他方式相互連接。
61.bios芯片205可以用于檢測內存行故障,例如,確定該行故障為可以糾正錯誤的相關信息或不可糾正錯誤的相關信息等。需要說明的是,上述內存的行故障的具體內容僅是示例性的舉例,本技術實施例對于bios芯片205檢測的行故障的具體內容并不限定。需要說明的是,內存中每一個行故障是由多個bit故障和/或cell故障導致的;也就是說,當內存中bit故障和/或cell故障的數量達到閾值時,內存會上報一個行故障。
62.bmc芯片206可以通過專用的數據通道對服務器進行遠程維護和管理,該bmc是完全獨立于服務器的os之外的,可以通過服務器的帶外管理接口與上述bios和os進行通信。
63.需要說明的是,執行本技術實施例提供的故障修復方法的裝置可以是上述圖2所示的服務器中的bios芯片205或bmc芯片206。或者,上述圖2所示的服務器中的bmc芯片206執行下述s310-s320,bios芯片205執行下述s330。
64.本技術實施例提供的一種故障修復方法,如圖3所示,該方法可以包括s310-s330。
65.s310、故障修復裝置獲取內存的第一行故障地址和第二行故障地址。
66.上述行故障為預設時間段內內存中行(row)發生的可糾正錯誤(corrected error,ce)的故障;其中,預設時間段是從內存所在的計算設備上一次重啟的時間開始至該計算設備本次重啟的時間結束的時間段。
67.示例性的,如圖4所示,點0為計算設備(如:服務器)第一次發生重啟的時間,點e為服務器第二次(即本次)發生重啟的時間;點a-d為服務器的內存在第一次重啟后與第二次重啟前發生的4個行故障。其中,上述預設時間段指示圖4中的點0至點e的這段時間段;上述多個行故障為點a-d對應的行故障a-d。
68.應理解的是,上述獲取行故障地址之前,可以根據當前故障的類型確定當前故障是否為行故障,其中,故障的類型包括:行故障、列故障、比特故障以及rank故障等內存物理粒度的故障。還可以根據當前故障的故障地址確定當前故障是否為行故障,當前故障的故障地址的最后一位為內存物理粒度中的行時,當前故障為行故障;否則,當前故障為非行故障;例如,當前行故障地址為“cpu1.chn0.dimm1.rank1.dev1.bank1.row0”;因為,該地址的最后一位為“row”(即:內存物理粒度中的行),所以當前故障為行故障;又例如,當前行故障地址為“cpu1.chn0.dimm1.rank1.dev1.bank1”因為,該地址的最后一位為“bank”(即:內存物理粒度中的bank),所以當前故障為非行故障。然后在確定至少兩個行故障后,在從該至少兩個行故障中獲取第一行故障地址和第二行故障地址。
69.需要說明的是,第一行故障地址和第二行故障地址不同;第一行故障地址指示了內存中發生故障的第一行故障位置,第二行故障地址指示了內存中發生故障的第二行故障位置。
70.應理解的是,上述故障修復裝置可以是僅獲取第一行故障地址和第二行故障地址,也可以是獲取多個行故障地址,其中,該多個行故障地址中包括第一行故障地址和第二行故障地址。
71.示例性的,假設上述多個行故障地址包括:第一行故障地址和第二行故障地址;其中,第一行故障地址為“cpu1.chn0.dimm1.rank1.dev1.bank1.row0”;第二行故障地址為“cpu1.chn0.dimm1.rank1.dev1.bank1.row1”。其中,第一行故障地址“cpu1.chn0.dimm1.rank1.dev.
72.bank1.row0”用于指示內存中“cpu1.chn0.dimm1.rank1.dev1.bank1”這個位置中的row0發生ce故障;第二行故障地址“cpu1.chn0.dimm1.rank1.dev1.bank1.row1”用于指示內存中“cpu1.chn0.dimm1.rank1.dev1.bank1”這個位置中的row1發生ce故障。
73.需要說明的是,上述s310中故障修復裝置可以從其他裝置獲取該多個行故障地址,也可以是故障修復裝置從本地獲取該多個行故障地址,該其他裝置可以是圖2中的存儲器202或bios芯片205。
74.s320、故障修復裝置確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度。
75.上述行故障位置的故障嚴重程度越高,將導致系統發生不可糾正錯誤(uncorrected error,uce)的故障的概率越高,也就是說,行故障位置的故障嚴重程度是當前系統是否發生uce故障的決定性因素。
76.需要說明的是,上述確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度的方式包括:獲取在預設時間段內內存中發生的第一行故障位置的故障次數,
和發生在第二行故障位置的故障次數。然后,將第一行故障位置的故障次數輸入至評估模型,得到第一行故障位置的評分;將第二行故障地址的故障次數輸入至評估模型,得到第二行故障地址的評分。其中,上述第一行故障位置的評分用于表征第一行故障位置的故障嚴重程度;上述第二行故障位置的評分用于表征第二行故障位置的故障嚴重程度。即:當行故障位置的評分(如:第一行故障位置的評分)與第一行故障位置的故障嚴重程度成正比時,第一行故障評分越高表示第一行故障位置的故障嚴重程度越高。當第一行故障評分與第一行故障位置的故障嚴重程度成反比是,第一行故障評分越高表示第一行故障位置的故障嚴重程度越低。
77.需要說明的是,上述行故障位置的故障次數(如:第一行故障位置的故障次數)用于表示上述預設時間段內內存中的第一行故障位置處(即同一故障行上)發生的行故障次數。
78.上述評估模型用于評估行故障位置的嚴重程度,其中,該評估模型是根據多組行故障位置的故障次數作為訓練數據,訓練得到的模型;其中,每組訓練數據的標簽為該訓練數據對應的行故障位置的預設評分。
79.s330、故障修復裝置依次對第一行故障位置和第二行故障位置進行修復。
80.上述行故障位置的故障嚴重程度越高,導致系統發生uce的故障的概率越高;所以上述故障嚴重程度越高的行故障位置越先被修復。
81.示例性的,假設第一行故障位置的故障嚴重程度高于第二行故障位置的故障嚴重程度時那么,故障修復裝置先修復第一行故障位置后,再修第二行故障位置。
82.需要說明的是,上述對行故障位置進行修復的方式可以是ppr技術,也可以是其他修復行故障的技術,本技術實施例中以行故障位置的修復方式為ppr技術為例進行說明,后續不再贅述。
83.應理解的是,根據ppr技術對行故障位置進行修復的方式為:使用內存中冗余存儲區域中的空閑行替換內存中存儲區域中發生行故障的故障行,其中,該空閑行為冗余存儲區域中沒有被用于替換故障行的存儲行(row)。
84.需要說明的是,上述冗余存儲區域中的空閑行是有限的,當該空閑行的數量大于或等于上述多個行故障位置(如:第一行故障位置和第二行故障位置)對應的故障行的數量時;將按照該多個行故障位置的故障嚴重程度依次對該多個行故障位置全部進行修復。當該空閑行的數量小于上述多個行故障位置對應的故障行的數量時,將按照該多個行故障位置的故障嚴重程度依次對該多個行故障位置的部分行故障位置進行修復,其中,該部分行故障位置的數量與該空閑行的數量相等。
85.示例性的,如圖5所示,假設冗余存儲區域中的空閑冗余行(簡稱:空閑行)為冗余行1-4;內存的存儲區域中的故障行位置有6個,分別為故障行1-6;那么;故障修復裝置根據故障行1-6的故障嚴重程度,依次對該6個故障行中故障嚴重程度排前4的故障行進行替換。
86.應理解的是,由于ppr技術是在服務器重啟階段執行的修復動作,所以上述s330的執行時機為服務器發生重啟的時機。
87.相比傳統的按照多個行故障的發生時間依次對該多個行故障位置進行修復的方式,其中,發生時間越靠前的行故障位置,越先被修復;本技術實施例提供的故障修復方法是按照第一行故障位置和第二行故障位置的故障嚴重程度對該第一行故障位置和第二行
故障位置進行修復的,其中,故障嚴重程度越高的行故障位置被優先進行修復;從而避免了因內存中嚴重程度較高的行故障位置被晚修復或不被修復,從導致的系統出現宕機的情況;因此提高了內存的可靠性。
88.本技術實施例提供的另一種故障修復方法,如圖6所示,該方法可以包括s610-s630。
89.s610、故障修復裝置獲取內存的第一行故障地址和第二行故障地址。
90.需要說明的是,上述s610的實現方式與s310的實現方式類似,具體對于s610的具體描述可以參考上述對于s310的相關描述,此處不再贅述。
91.s620、故障修復裝置基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表。
92.上述目標故障列表中包括第一行故障位置和第二行故障位置,在該目標故障列表中的行故障位置是按照行故障位置的故障嚴重程度的大小進行排序的;也就是說,該目標故障列表中的行故障位置可以是按照行故障位置的故障嚴重程度由大到小的順序進行排序的,也可以是按照行故障位置的故障嚴重程度由小到大的順序進行排序的。
93.示例性的,假設上述目標故障列表中包括:行故障位置1、行故障位置2、行故障位置3以及行故障位置4;其中,該行故障位置1-4按照故障嚴重程度由大到小排序為:行故障位置3、行故障位置1、行故障位置4、行故障位置2;那么當目標故障列表中的行故障位置是按照故障嚴重程度由大到小進行排序時;該目標列表為{行故障位置3、行故障位置1、行故障位置4、行故障位置2};當目標故障列表中的行故障地址是按照故障嚴重程度由小到大進行排序時;該目標列表為{行故障位置2、行故障位置4、行故障位置1、行故障位置3}。
94.上述第一行故障位置和第二行故障位置的故障嚴重程度的確定方式,與上述s320中確定行故障位置的故障嚴重程度的方式一致,此處不再贅述。
95.需要說明的是,上述s620可以是在服務器運行階段時執行的,也可以是在該服務器重啟階段執行的;當s620在服務器運行階段時執行時,在服務器重啟階段只需要根據目標故障列表中的行故障位置排序依次對目標故障列表中的行故障位置進行修復,并不需要對該多個行故障位置根據故障嚴重程度進行排序,因此,提高了服務器的重啟效率。
96.應理解的是,當s620在服務器運行階段執行時,上述s610一定是在服務器運行階段執行的。當s620在服務器重啟階段執行時,上述s610可以是在服務器運行階段執行,也可以是在服務器重啟階段執行。
97.需要說明的是,上述行故障位置的故障嚴重程度可以是在獲取一個行故障位置后就確定該行故障位置的故障嚴重程度,也可以是在s620確定目標故障列表時確定每一個行故障位置的故障嚴重程度,具體本技術實施例不對確定行故障位置的故障嚴重程度的確定時機進行限定。
98.s630、故障修復裝置按照目標故障列表中的行故障位置的排序,依次對目標故障列表中的行故障位置進行修復。
99.上述s630的具體實現方式是按照目標故障列表中的行故障位置的排序,對目標故障列表中的行故障位置按照故障嚴重程度由大到小的順序依次進行修復。
100.示例性的,假設目標故障列表為:行故障3、行故障1、行故障4、行故障2;當目標故障列表中的行故障位置是按照故障嚴重程度由大到小的進行排序時,故障修復裝置按照目
標故障列表中行故障位置的順序依次進行修復。當目標故障列表中的行故障是按照故障嚴重程度由小到大進行排序時,故障修復裝置按照目標故障列表中行故障位置的逆向順序依次進行修復,如按照:行故障2、行故障4行故障1、行故障3的順序進行修復。
101.需要說明的是,上述s630中對行故障位置進行修復的實現方式與s330中對行故障位置進行修復的實現方式類似,具體對于s630中對行故障位置進行修復的具體描述可以參考上述對于s330的相關描述,此處不再贅述。
102.應理解的是,由于ppr技術是在服務器重啟階段執行的修復動作,所以上述s630的執行時機為服務器發生重啟的時機。
103.可選的,當執行上述s630的故障修復裝置為圖2中的bios芯片205時;上述s610-s620的執行主體可以是除故障修復裝置以外的其他裝置,如圖2中的bmc芯片206;此時,bios芯片205與bmc芯片206交互過程如圖7所示。
104.需要說明的是,上述圖7中的s710-s740與上述s610-s630完全一致,此處不再贅述。
105.本技術實施例提供的故障修復方法,通過將第一行故障位置和第二行故障位置按照故障嚴重程度大小進行排序后得到目標故障列表;然后,在執行修復動作時,只需要根據目標故障列表中的行故障位置的排序,對該目標故障列表中的行故障位置按照故障嚴重程度由大到小的順序依次進行修復,并不需要將每個行故障位置的故障嚴重程度與其他行故障位置的故障嚴重程度進行對比,因此,提高了行故障的修復效率。
106.可選的,結合圖6,如圖8所示,在上述s620確定目標故障列表之后,再次接收到行故障位置(第三行故障位置)時,本技術實施例提供的故障修復方法還包括:s621。
107.s621、故障修復裝置根據第三行故障位置更新目標故障列表,得到更新后的目標故障列表。
108.上述第三行故障為預設時間段內發生的行故障,且第三行故障的發生時間在第一行故障和第二行故障的發生時間之后;該預設時間段為是從內存所在的服務器上一次重啟的時間開始至該服務器本次重啟的時間結束的時間段。上述第三行故障的發生時間與目標故障列表中的行故障的發生時間屬于同一個預設時間段。
109.上述更新后的目標故障列表中的行故障位置是按照行故障位置的故障嚴重程度大小進行排序的。也就是說,故障修復裝置接收到一個行故障位置后,根據該行故障位置的故障嚴重程度更新一次當前的故障目標列表。
110.該情況下,上述s630中的故障修復裝置按照更新后的目標故障列表中的行故障位置的排序,依次對更新后的目標故障列表中的行故障位置進行修復。
111.需要說明的是,上述s621的具有實現過程如圖9所示,包括兩種情況,具體為s621a或(s621a-s621b)。
112.情況一:當第三行故障位置與第一行故障位置和第二行故障位置均不同時,包括:s621a。
113.s621a、故障修復裝置將第三行故障位置添加進目標故障列表,得到更新后的目標故障列表。
114.需要說明的是,上述第三行故障位置與第一行故障位置和第二行故障位置均不同是指,第三行故障位置對應的故障行與上述第一行故障位置和第二行故障位置對應的多個
故障行不是同一個故障行;也就是說,第三行故障地址與第一行故障地址和第二行故障地址均不同。
115.上述更新后的目標故障列表中的行故障位置是按照故障嚴重程度大小進行排序的,也就是說,故障修復裝置根據該第三行故障位置的故障嚴重程度,將該第三行故障位置障添加到目標故障列表的指定位置,進而得到更新后的目標故障列表。
116.應理解的是,當目標故障列表中的行故障位置是按照故障嚴重程度由大到小排序時,上述指定位置的前一個行故障位置的故障嚴重程度高于第三行故障位置的故障嚴重程度;該指定位置的后一個行故障位置的故障嚴重程度低于第三行故障位置的故障嚴重程度。當目標故障列表中的行故障是按照故障嚴重程度由小到大排序時,該指定位置的前一個行故障位置的故障嚴重程度低于第三行故障位置的故障嚴重程度;該指定位置的后一個行故障位置的故障嚴重程度高于第三行故障位置的故障嚴重程度。
117.示例性的,假設目標故障列表中的行故障位置是按照故障嚴重程度由小到大的進行排序的,該目標故障列表為:行故障3、行故障1、行故障4、行故障2。當行故障5(即:第三行故障位置)的故障嚴重程度低于行故障4的故障嚴重程度,且高于行故障1的故障嚴重程度時,將行故障5添加至目標故障列表中行故障1和行故障4的中間位置,即得到更新后的目標故障列表為行故障3、行故障1、行故障5、行故障4、行故障2。
118.情況二:當第三行故障位置與目標故障列表中的目標行故障位置相同時,包括:s621a-s621b。
119.s621a、故障修復裝置更新目標行故障位置的故障次數,并根據更新后的目標行故障位置的故障次數重新計算目標行故障位置的故障嚴重程度。
120.上述目標行故障位置是目標故障列表中與第三行故障位置相同的行故障位置;也就是說,目標行故障位置和第三行故障位置是同一故障行上的故障。所以并不需要將第三行故障位置添加進行目標故障列表,只需對該目標故障列表中的故障次數進行更新;并根據更新后的目標行故障位置的故障次數重新計算目標行故障位置的故障嚴重程度。
121.需要說明的是,上述計算目標行故障位置的故障嚴重程度的方式與上述s320中確定第一行故障位置和第二行故障位置的故障嚴重程度的實現方式類似,具體對于s621a中確定目標行故障位置的故障嚴重程度的具體描述可以參考上述對于s320的相關描述,此處不再贅述。
122.s621b、故障修復裝根據目標行故障位置的故障嚴重程度和非目標行故障位置的故障嚴重程度,更新目標故障列表,得到更新后的目標故障列表。
123.上述非目標行故障位置為上述目標故障列表中除目標行故障位置以外的行故障位置。
124.需要說明的是,上述更新后的目標故障列表中的行故障位置是按照故障嚴重程度大小進行排序的,也就是說,故障修復裝置根據該更新數量后的目標行故障位置的故障嚴重程度,對目標故障列表中的行故障位置按照故障嚴重程度重新排序。
125.應注意的是,當故障修復裝置執行完上述s621后,故障修復裝置執行的s630為:根據ppr技術,并按照更新后的目標故障列表中的行故障位置的排序,依次對更新后的目標故障列表中的行故障位置進行修復。
126.相應地,本技術實施例提供一種故障修復裝置,該故障修復裝置用于執行上述故
障修復方法中的各個步驟,本技術實施例可以根據上述方法示例對該故障修復裝置進行功能模塊的劃分,例如,可以對應各個功能劃分各個功能模塊,也可以將兩個或兩個以上的功能集成在一個處理模塊中。上述集成的模塊既可以采用硬件的形式實現,也可以采用軟件功能模塊的形式實現。本技術實施例中對模塊的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式。
127.在采用對應各個功能劃分各個功能模塊的情況下,圖10示出上述實施例中所涉及的故障修復裝置的一種可能的結構示意圖。如圖10所示,該故障修復裝置包括:獲取模塊1001、確定模塊1002和修復模塊1003。
128.獲取模塊1001用于獲取內存的第一行故障地址和第二行故障地址,例如執行上述方法實施例中的步驟s310。
129.確定模塊1002用于確定第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,例如執行上述方法實施例中的步驟s320。
130.修復模塊1003用于依次對第一行故障位置和第二行故障位置進行修復,例如執行上述方法實施例中的步驟s330。
131.可選的,上述獲取模塊1001用于獲取在預設時間段內發生在第一行故障位置的故障次數,和發生在第二行故障位置的故障次數。
132.上述確定模塊1002用于將第一行故障位置的故障次數輸入至評估模型,得到第一行故障位置的評分。
133.上述確定模塊1002還用于將第二行故障地址的故障次數輸入至評估模型,得到第二行故障地址的評分。
134.可選的,上述確定模塊1002用于基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表,例如執行上述方法實施例中的步驟s620。
135.上述修復模塊1003用于按照目標故障列表中的行故障位置的排序,依次對目標故障列表中的行故障位置進行修復,例如執行上述方法實施例中的步驟s630。
136.可選的,上述確定模塊1002用于當服務器在運行階段時,基于第一行故障位置的故障嚴重程度和第二行故障位置的故障嚴重程度,確定目標故障列表。
137.上述修復模塊1003用于當服務器在重啟階段時,按照目標故障列表中的行故障位置的排序,依次對目標故障列表中的行故障位置進行修復。
138.可選的,上述故障修復裝置還包括:更新模塊1004。
139.上述更新模塊1004用于根據第三行故障位置更新目標故障列表,得到更新后的目標故障列表,例如執行上述方法實施例中的步驟s621。
140.上述修復模塊1003用于按照更新后的目標故障列表中的行故障位置的排序,依次對更新后的目標故障列表中的行故障位置進行修復。
141.可選的,上述更新模塊1004用于當第三行故障位置與第一行故障位置和第二行故障位置均不同時,將第三行故障位置添加進目標故障列表,得到更新后的目標故障列表,例如執行上述方法實施例中的步驟s621a。
142.上述更新模塊1004用于當第三行故障位置與第一行故障位置和第二行故障位置相同時,更新目標行故障位置的故障次數,并根據更新后的目標行故障位置的故障次數重新計算目標行故障位置的故障嚴重程度,例如執行上述方法實施例中的步驟s621a。
143.上述更新模塊1004還用于根據目標行故障位置的故障嚴重程度和非目標行故障位置的故障嚴重程度,更新目標故障列表,得到更新后的目標故障列表,例如執行上述方法實施例中的步驟s621b。
144.上述故障修復裝置的各個模塊還可以用于執行上述方法實施例中的其他動作,上述方法實施例涉及的各步驟的所有相關內容均可以援引到對應功能模塊的功能描述,在此不再贅述。
145.其中,獲取模塊1001、確定模塊1002,、修復模塊1003和更新模塊1004中的部分或全部步驟可以通過圖1中的處理器101執行內存103中的代碼實現。
146.在上述實施例中,可以全部或部分地通過軟件、硬件、固件或者其任意組合來實現。當使用軟件程序實現時,可以全部或部分地以計算機程序產品的形式實現。該計算機程序產品包括一個或多個計算機指令。在計算機上加載和執行該計算機指令時,全部或部分地產生按照本技術實施例中的流程或功能。該計算機可以是通用計算機、專用計算機、計算機網絡或者其他可編程裝置。該計算機指令可以存儲在計算機可讀存儲介質中,或者從一個計算機可讀存儲介質向另一個計算機可讀存儲介質傳輸,例如,該計算機指令可以從一個網站站點、計算機、服務器或數據中心通過有線(例如同軸電纜、光纖、數字用戶線(digital subscriber line,dsl))方式或無線(例如紅外、無線、微波等)方式向另一個網站站點、計算機、服務器或數據中心傳輸。該計算機可讀存儲介質可以是計算機能夠存取的任何可用介質或者是包括一個或多個可用介質集成的服務器、數據中心等數據存儲設備。該可用介質可以是磁性介質(例如,軟盤、磁盤、磁帶)、光介質(例如,數字視頻光盤(digital video disc,dvd))、或者半導體介質(例如固態硬盤(solid state drives,ssd))等。
147.通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
148.在本技術所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
149.所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
150.另外,在本技術各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
151.所述集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本技術的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器執行本技術各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:快閃存儲器、移動硬盤、只讀存儲器、隨機存取存儲器、磁碟或者光盤等各種可以存儲程序代碼的介質。
152.以上所述,僅為本技術的具體實施方式,但本技術的保護范圍并不局限于此,任何在本技術揭露的技術范圍內的變化或替換,都應涵蓋在本技術的保護范圍之內。因此,本技術的保護范圍應以所述權利要求的保護范圍為準。
