專利名稱:用于部署計算基礎(chǔ)設(shè)施的方法和數(shù)據(jù)存儲設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機系統(tǒng)中的數(shù)據(jù)存儲領(lǐng)域,尤其涉及用于處理硬件錯誤同時避免系統(tǒng)崩潰的技術(shù)。
背景技術(shù):
硬件錯誤例如在計算系統(tǒng)(例如,標(biāo)準(zhǔn)的UNIX系統(tǒng))中的機器檢查將引起系統(tǒng)崩潰。一般地說,其甚至不允許應(yīng)用程序具有記錄任何信息的機會。當(dāng)信息可被記錄時,其僅僅用于在重新啟動映像之后識別故障組件。機器檢查一直被認(rèn)為是系統(tǒng)的致命錯誤。在數(shù)據(jù)存儲設(shè)備(其一個例子是IBM pSeries系統(tǒng))中有可以引起機器檢查的許多狀態(tài),例如目標(biāo)異常中斷、主(master)異常中斷或奇偶錯誤。在通用UNIX服務(wù)器中,為這些狀態(tài)調(diào)用機器檢查是合理的。在這種情況下,數(shù)據(jù)存儲設(shè)備暫時成為是不可用的。
此外,多群集數(shù)據(jù)存儲設(shè)備,其中的一個例子是IBM TotalStorage ESS存儲服務(wù)器,是一個具有其自身的主機適配器和設(shè)備適配器以及相應(yīng)的設(shè)備驅(qū)動器的封閉環(huán)境。如果這些硬件適配器的任何一個引起外圍組件互連(PCI)錯誤例如目標(biāo)異常中斷,則整個群集或計算機-電子設(shè)備復(fù)合體(CEC)將發(fā)生崩潰而被重新啟動。在這期間,數(shù)據(jù)存儲設(shè)備運行在單群集模式下。然而這是不希望的,因為數(shù)據(jù)存儲設(shè)備的功能和性能受到了削弱。
因而,需要提供一種過程,用于以允許計算系統(tǒng)繼續(xù)運行的方式處理計算系統(tǒng)中的硬件錯誤而不引起系統(tǒng)崩潰。
發(fā)明內(nèi)容
為了解決這些和其它問題,本發(fā)明描述一種用于處理計算系統(tǒng)例如數(shù)據(jù)存儲設(shè)備中的硬件錯誤的過程。本發(fā)明為應(yīng)用定義了一種新的接口,用于通知計算系統(tǒng)的操作系統(tǒng)正確地處理了(例如,通過重置或隔開適配器)機器檢查(例如,由PCI錯誤引起的),從而操作系統(tǒng)旁路掉由于機器檢查引起的系統(tǒng)崩潰。
在一個方面中,本發(fā)明提供一種用于部署計算基礎(chǔ)設(shè)施的方法,包括在具有多個硬件適配器的計算系統(tǒng)中集成計算機可讀代碼,其中和計算系統(tǒng)相結(jié)合的代碼能夠通過執(zhí)行一種方法處理所述硬件適配器的硬件錯誤。所述方法包括(a)在和計算系統(tǒng)的操作系統(tǒng)的接口處檢查計算系統(tǒng)中的硬件錯誤,(b)響應(yīng)所述檢查,確定可能發(fā)生該硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器,以及(c)在所述隔離之后,完成該硬件錯誤的處理而不導(dǎo)致計算系統(tǒng)的崩潰。
在另一方面中,一種數(shù)據(jù)存儲設(shè)備包括用于記錄由多個硬件適配器產(chǎn)生的錯誤的錯誤寄存器,以及至少一個群集,其包括至少一個處理器,所述處理器用于執(zhí)行計算機可讀代碼,從而提供一個操作系統(tǒng)以及與所述操作系統(tǒng)的接口。所述接口檢測計算系統(tǒng)中的硬件錯誤,檢查錯誤寄存器以便確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器。在所述隔離之后,操作系統(tǒng)完成硬件錯誤的處理而不引起數(shù)據(jù)存儲設(shè)備的崩潰。
還可以提供相關(guān)的程序存儲設(shè)備。
通過參看下面的正文和附圖可以更加清楚地看出本發(fā)明的這些和其它特征、利益和優(yōu)點,在所有附圖中相同的標(biāo)號表示相同的結(jié)構(gòu),其中圖1表示按照本發(fā)明的計算系統(tǒng);以及圖2表示按照本發(fā)明用于處理硬件錯誤的處理。
具體實施例方式
圖1表示按照本發(fā)明的計算系統(tǒng)。計算系統(tǒng)100可以是數(shù)據(jù)存儲設(shè)備,例如,其用于備份來自多個服務(wù)器主機的客戶數(shù)據(jù)。計算系統(tǒng)100包括輸入/輸出(I/O)子系統(tǒng)或構(gòu)造設(shè)備120,所述子系統(tǒng)或構(gòu)造設(shè)備120包括多個硬件適配器122,124和126,它們通過總線128例如PCI總線進行通信。硬件適配器122,124和126可以在群集150和任何數(shù)量的硬件組件之間提供連接性,群集150也被稱為計算機-電子設(shè)備復(fù)合體(CEC)。一般地說,CEC是一種硬件,其可以運行多個映像/分區(qū)/虛擬服務(wù)器。例如,設(shè)備適配器可以連接數(shù)據(jù)存儲設(shè)備所使用的存儲盤以便備份數(shù)據(jù)。主機適配器是外部接口,用于向外部主機或者附加的遠程數(shù)據(jù)存儲設(shè)備發(fā)送數(shù)據(jù)或從其接收數(shù)據(jù)。例如,主機適配器可以支持兩個端口,例如小計算機系統(tǒng)接口(SCSI)或IBM企業(yè)系統(tǒng)連接(ESCON),其是一種Enterprise SystemArchitecture/390和zSeries計算機外圍接口。也可以使用光纖通道或具有每個主機適配器一個通道的支持的光纖通道連接(FICON)。也可以使用硬件適配器連接其它設(shè)備,例如本地主機工作站、內(nèi)部風(fēng)扇等。對于雙或其它多群集數(shù)據(jù)存儲設(shè)備,每個設(shè)備適配器和主機適配器可以和用于故障保險操作的每個群集相連。
總線128和群集150通信。注意,所示的布置是一個簡化的例子。實際上,可以具有更多的適配器以及其它組件。群集150包括處理器152,其執(zhí)行指令,例如存儲在至少一個程序存儲設(shè)備例如存儲器158中的軟件、固件和/或微代碼,以便提供這里所述的功能。具體地說,操作系統(tǒng)156、接口154和設(shè)備驅(qū)動器153被描述為在處理器152上運行。設(shè)備驅(qū)動器器的一個例子是IBM ESS驅(qū)動器。對于多群集數(shù)據(jù)存儲設(shè)備,可以為每個群集重復(fù)用于群集150的布置。
客戶數(shù)據(jù)可通過適配器122,124和126以及總線128被提供給群集150。此外,每個適配器122,124和126具有產(chǎn)生錯誤消息的能力,該錯誤消息被記錄在錯誤寄存器160中。所述的錯誤寄存器160被示出為提供在I/O構(gòu)造設(shè)備120中,例如作為總線128的一個外圍組件,但是可替換地也可以位于(例如)群集150中。當(dāng)使用多個總線時,可以為每個總線提供不同的錯誤寄存器。具體地說,所述錯誤可以是硬件錯誤,例如表示適配器不能正確地工作的機器檢查錯誤。一般地說,每個適配器包括可以檢測錯誤的驅(qū)動器。錯誤寄存器160可以包括運行在專用集成電路(ASIC)芯片中的檢查器,用于例如尋找對PCI協(xié)議的違反并鎖存任何錯誤。
按照本發(fā)明,操作系統(tǒng)156的接口154可作為應(yīng)用/設(shè)備驅(qū)動器153的一部分被提供以便處理PCI和其它的硬件錯誤。具體地說,例如,作為錯誤處理器的接口154可以作為設(shè)備驅(qū)動器153的內(nèi)核擴展被提供。當(dāng)由于PCI錯誤例如目標(biāo)異常中斷而發(fā)生機器檢查時,接口154可以檢查錯誤寄存器160以確定適配器122,124,126中的哪一個可能導(dǎo)致了該PCI錯誤。由在錯誤寄存器160處記錄的信息確定錯誤的原因。記錄的特定信息與實現(xiàn)相關(guān)。注意以前可能不能精確地識別錯誤的來源。例如,在I/O構(gòu)造設(shè)備中的錯誤,例如數(shù)據(jù)奇偶錯誤,可能是由適配器引起的,或是由構(gòu)造設(shè)備本身引起的。設(shè)備驅(qū)動器153處的接口154,其了解拓?fù)浣Y(jié)構(gòu),可以調(diào)用熱啟動并隔離可能引起了該錯誤的適配器。
對于多群集設(shè)備,每個群集的設(shè)備驅(qū)動器協(xié)調(diào)地工作以發(fā)起一個熱啟動。熱啟動包括運行恢復(fù)程序以便重新啟動處理器上的軟件,例如設(shè)備驅(qū)動器153。可以通過使得可能引起錯誤的適配器發(fā)生重置或隔開例如通電重置或重新初始化實現(xiàn)隔離。隔離可以和熱啟動同時進行。一旦應(yīng)用設(shè)備驅(qū)動器返回,例如完成了熱啟動并且錯誤已被隔離,操作系統(tǒng)156將完成其余的機器檢查處理而不引起系統(tǒng)崩潰。即,操作系統(tǒng)156從中斷級返回正常操作。
因而本發(fā)明有利地減少了系統(tǒng)崩潰的發(fā)生,并且改善了整個系統(tǒng)的可靠性。
圖2表示按照本發(fā)明用于處理硬件錯誤的處理。在塊200,在操作系統(tǒng)156上注冊接口或錯誤處理器160。來自I/O構(gòu)造設(shè)備120的錯誤可由接口154檢測。在塊210,如果已經(jīng)產(chǎn)生硬件錯誤,則該錯誤被記錄在錯誤寄存器160中。如果沒有硬件錯誤產(chǎn)生,則處理繼續(xù)進行(塊220),直到錯誤產(chǎn)生為止。在塊230,當(dāng)檢查到錯誤時,接口154檢查錯誤寄存器160以確定該錯誤的來源,例如可能產(chǎn)生該錯誤的一個或多個硬件適配器。在塊240,接口隔離該錯誤的來源,例如可能產(chǎn)生該硬件錯誤的一個或多個硬件適配器,并且設(shè)備驅(qū)動器153調(diào)用熱啟動。
在塊250,接口通知操作系統(tǒng)錯誤已經(jīng)隔離。注意接口不必提供用于確定性地確定錯誤來源所需的全部信息。在熱啟動處理中使用其它方法。在IBM ESS中,這些是AIX pSeries增強錯誤處理體系結(jié)構(gòu)的一部分。通知可以包括錯誤范圍(相對于適配器該錯誤離CEC的遠近程度),錯誤的位置(描述錯誤在邏輯拓?fù)渲刑幱诤翁幍木浔?,以及一些特定于實現(xiàn)的錯誤信息。在塊260,操作系統(tǒng)響應(yīng)該通知完成硬件錯誤的處理而不引起系統(tǒng)崩潰。
因而,所述接口或錯誤處理器是注冊的接口,例如,一段代碼,當(dāng)有問題時,例如,所支持的適配器的PCI總線插槽的問題,操作系統(tǒng)(OS)在設(shè)備驅(qū)動器上訪問該代碼。設(shè)備驅(qū)動器在OS上注冊該接口或錯誤處理器,使得當(dāng)硬件中斷在問題表面(question surface)中與該適配器相關(guān)時,OS必須調(diào)用該接口。當(dāng)PCI適配器所在的PCI總線發(fā)生錯誤時,設(shè)備驅(qū)動器錯誤處理器詢問錯誤寄存器以便幫助確定總線上的錯誤的性質(zhì)以及如何從該錯誤最好地恢復(fù)。
注意通過把計算機可讀代碼集成在計算系統(tǒng)中,此處說明的本發(fā)明可被部署在現(xiàn)有的或新的計算基礎(chǔ)設(shè)施上,例如數(shù)據(jù)存儲設(shè)備、群集或客戶機計算系統(tǒng)上,與計算系統(tǒng)相結(jié)合的代碼能夠執(zhí)行用于實現(xiàn)此處所述的功能的方法。
因而,可以看出,本發(fā)明提供了一種用于處理計算系統(tǒng)中的硬件錯誤同時避免系統(tǒng)崩潰的技術(shù)。提供了與計算系統(tǒng)的操作系統(tǒng)的接口以便通過隔離處理硬件錯誤,例如使出錯的適配器和計算系統(tǒng)隔開。然后接口可以通知操作系統(tǒng)錯誤已被處理,從而使操作系統(tǒng)旁路否則將發(fā)生的系統(tǒng)崩潰。
已經(jīng)參照特定的示例實施例說明了本發(fā)明。在不脫離本發(fā)明的范圍的情況下,某些替換和改型對于本領(lǐng)域技術(shù)人員可以是明顯的。這些示例實施例只用于說明本發(fā)明,而不是限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求限定。
權(quán)利要求
1.一種用于部署計算基礎(chǔ)設(shè)施的方法,包括在具有多個硬件適配器的計算系統(tǒng)中集成計算機可讀代碼,其中和所述計算系統(tǒng)相結(jié)合的代碼能夠通過執(zhí)行一種方法來處理所述硬件適配器的硬件錯誤,所述方法包括在與所述計算系統(tǒng)的操作系統(tǒng)的接口處檢測所述計算系統(tǒng)中的硬件錯誤;響應(yīng)所述檢測,確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器,以及在所述隔離之后,完成所述硬件錯誤的處理而不引起所述計算系統(tǒng)的崩潰。
2.如權(quán)利要求1所述的方法,其中所述隔離包括重置所述至少一個硬件適配器。
3.如權(quán)利要求1所述的方法,其中所述隔離包括隔開所述至少一個硬件適配器。
4.如權(quán)利要求1所述的方法,其中由所述接口執(zhí)行所述隔離;以及由所述操作系統(tǒng)執(zhí)行所述完成硬件錯誤的處理。
5.如權(quán)利要求1所述的方法,還包括從所述接口向所述操作系統(tǒng)提供通知,指出所述至少一個硬件適配器已被隔離;其中所述操作系統(tǒng)響應(yīng)所述通知執(zhí)行所述完成硬件錯誤的處理。
6.如權(quán)利要求1所述的方法,其中所述接口包括與所述操作系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動器的內(nèi)核擴展。
7.如權(quán)利要求1所述的方法,還包括響應(yīng)對硬件錯誤的檢測,調(diào)用與所述操作系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動器的熱啟動。
8.如權(quán)利要求1所述的方法,其中所述硬件錯誤包括機器檢查錯誤。
9.如權(quán)利要求1所述的方法,其中所述硬件錯誤包括輸入/輸出構(gòu)造設(shè)備錯誤。
10.如權(quán)利要求1所述的方法,其中所述計算系統(tǒng)包括數(shù)據(jù)存儲設(shè)備。
11.如權(quán)利要求1所述的方法,還包括向所述操作系統(tǒng)注冊所述接口。
12.如權(quán)利要求1所述的方法,其中所述確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器包括檢查錯誤寄存器。
13.至少一個程序存儲設(shè)備,其有形地包含可由至少一個處理器執(zhí)行的指令程序,以便執(zhí)行用于處理具有多個硬件適配器的計算系統(tǒng)中的硬件錯誤的方法,所述方法包括在與所述計算系統(tǒng)的操作系統(tǒng)的接口處檢測所述計算系統(tǒng)中的硬件錯誤;響應(yīng)所述檢測,確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器,以及在所述隔離之后,完成所述硬件錯誤的處理而不引起所述計算系統(tǒng)的崩潰。
14.一種用于部署計算基礎(chǔ)設(shè)施的方法,包括在具有多個硬件適配器的計算系統(tǒng)中集成計算機可讀代碼,其中與所述計算系統(tǒng)相結(jié)合的代碼能夠通過執(zhí)行一種方法來處理所述硬件適配器的硬件錯誤,所述方法包括向所述計算系統(tǒng)的操作系統(tǒng)注冊接口;在所述接口檢測所述計算系統(tǒng)中的硬件錯誤;響應(yīng)所述檢測,確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器,以及在所述隔離之后,完成所述硬件錯誤的處理而不引起所述計算系統(tǒng)的崩潰。
15.如權(quán)利要求14所述的方法,其中由所述接口執(zhí)行所述隔離;以及由所述操作系統(tǒng)執(zhí)行所述完成硬件錯誤的處理。
16.如權(quán)利要求14所述的方法,還包括從所述接口向所述操作系統(tǒng)提供通知,指出所述至少一個硬件適配器已被隔離;其中所述操作系統(tǒng)響應(yīng)所述通知執(zhí)行所述完成硬件錯誤的處理。
17.如權(quán)利要求14所述的方法,其中所述接口包括與所述操作系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動器的內(nèi)核擴展。
18.如權(quán)利要求14所述的方法,還包括響應(yīng)對所述硬件錯誤的檢測,調(diào)用與所述操作系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動器的熱啟動。
19.至少一個程序存儲設(shè)備,其有形地包含可由至少一個處理器執(zhí)行的指令程序,以便執(zhí)行用于處理具有多個硬件適配器的計算系統(tǒng)中的硬件錯誤的方法,所述方法包括向所述計算系統(tǒng)的操作系統(tǒng)注冊接口;在所述接口處檢測所述計算系統(tǒng)中的硬件錯誤;響應(yīng)所述檢測,確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器;以及在所述隔離之后,完成所述硬件錯誤的處理而不引起所述計算系統(tǒng)的崩潰。
20.一種數(shù)據(jù)存儲設(shè)備,包括錯誤寄存器,用于記錄由多個硬件適配器產(chǎn)生的錯誤;以及至少一個群集,包括至少一個處理器,其執(zhí)行計算機可讀代碼,從而提供一個操作系統(tǒng)以及與所述操作系統(tǒng)的接口;其中所述接口檢測所述計算系統(tǒng)中的硬件錯誤,檢查所述錯誤寄存器以便確定可能產(chǎn)生所述硬件錯誤的至少一個硬件適配器,并隔離所述至少一個硬件適配器;以及在所述隔離之后,所述操作系統(tǒng)完成所述硬件錯誤的處理而不引起所述數(shù)據(jù)存儲設(shè)備的崩潰。
21.如權(quán)利要求20所述的數(shù)據(jù)存儲設(shè)備,其中所述隔離包括重置所述至少一個硬件適配器。
22.如權(quán)利要求20所述的數(shù)據(jù)存儲設(shè)備,其中所述隔離包括隔開所述至少一個硬件適配器。
23.如權(quán)利要求20所述的數(shù)據(jù)存儲設(shè)備,其中所述接口包括與所述操作系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動器的內(nèi)核擴展。
24.如權(quán)利要求20所述的數(shù)據(jù)存儲設(shè)備,其中所述至少一個處理器執(zhí)行所述計算機可讀代碼,以便為所述多個硬件適配器提供設(shè)備驅(qū)動器;以及所述設(shè)備驅(qū)動器響應(yīng)對所述硬件錯誤的檢測調(diào)用熱啟動。
25.如權(quán)利要求20所述的數(shù)據(jù)存儲設(shè)備,其中所述接口向所述操作系統(tǒng)提供通知,指出所述至少一個硬件適配器已被隔離;以及所述操作系統(tǒng)響應(yīng)所述通知執(zhí)行所述完成硬件錯誤的處理。
全文摘要
一種用于處理計算系統(tǒng)例如數(shù)據(jù)存儲設(shè)備中的硬件錯誤同時避免系統(tǒng)崩潰的技術(shù)。向計算系統(tǒng)的操作系統(tǒng)注冊接口以便處理硬件錯誤。當(dāng)檢測到硬件錯誤時,該接口檢查錯誤寄存器,以便識別可能引起所述錯誤的適配器,并進行隔離,例如使出錯的適配器和計算系統(tǒng)隔開。然后接口通知操作系統(tǒng)已經(jīng)處理了該錯誤,從而使得操作系統(tǒng)旁路否則可能發(fā)生的系統(tǒng)崩潰。所述接口可以作為和操作系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動器的內(nèi)核擴展被提供。
文檔編號G06F11/00GK1776630SQ200510114978
公開日2006年5月24日 申請日期2005年11月16日 優(yōu)先權(quán)日2004年11月17日
發(fā)明者J·J·魯伊斯, 許育誠, 宋正中, J·N·麥考利, W·G·舍曼 申請人:國際商業(yè)機器公司