專利名稱:故障處理系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及信息存儲和故障處理領(lǐng)域。
背景技術(shù):
在很多應(yīng)用中電子系統(tǒng)和電路常常用于獲取有利結(jié)果。許多電子技術(shù)例如計算機、視頻設(shè)備和通訊系統(tǒng)有助于增加生產(chǎn)效率并在商業(yè)、科學(xué)、教育和娛樂的大部分領(lǐng)域中降低了分析和傳輸信息的成本。從事這些涉及大量重要且機密信息和重要資源的存儲活動常常是需要開銷的,以便存儲和處理信息。出于各種原因,維護和跟蹤這些信息通常十分重要。許多存儲架構(gòu)包括可用于不同的目的(例如,恢復(fù)、糾錯等)的存儲鏡像。通常,一個卷中的鏡像應(yīng)該具有相同的數(shù)據(jù)以保持鏡像上的讀取量的一致性。當(dāng)在軟件層上實施鏡像并且該卷在共享存儲集群上的多個節(jié)點之間共享時,導(dǎo)致一個節(jié)點或多個節(jié)點的存儲連接的完全丟失的局部連接錯誤可以引起寫I/o錯誤。如果正在進行寫操作時發(fā)生連接丟失,它可能使得鏡像上的數(shù)據(jù)不一致。在這種場景中,傳統(tǒng)方法通常是標(biāo)記除了分離出來的最后一個鏡像以外的所有鏡像以防止未受影響的節(jié)點的數(shù)據(jù)讀取量的不一致。然而,這種傳統(tǒng)的分離方法通常減少了鏡像冗余度,并沒有給受到影響的節(jié)點提供任何額外益處。發(fā)明概述本文提出了用于故障處理的系統(tǒng)和方法。在一個實施例中,一種故障處理方法包括:執(zhí)行一個錯誤類型檢測處理,該處理包括確定一個錯誤是介質(zhì)錯誤還是連接錯誤;執(zhí)行一個分離確定處理以建立一個適合的分離場景,其中如果該連接錯誤涉及全部鏡像,該適合的分離場景包括不分離任何鏡像;并且為應(yīng)用程序?qū)懖僮鞣祷厥 T谝粋€實施例中,該分離確定處理可以根據(jù)讀-寫-返回處理的結(jié)果來分離一個鏡像。在一個示例性實現(xiàn)方式中,該分離確定處理包括一個連接狀態(tài)查詢并且根據(jù)連接狀態(tài)查詢結(jié)果對鏡像進行分離。在一個示例性實現(xiàn)方式中,該連接狀態(tài)查詢包括一個SCSI連接查詢。在一個實施例中,通過利用一個讀-寫-返回操作保持鏡像之間的一致性和同步性。還可以分離不能接入絕大部分節(jié)點的鏡像。在一個實現(xiàn)方式中,執(zhí)行錯誤類型確定處理包括分析該錯誤涉及鏡像的一個子集還是全部,并且如果該錯誤錯誤涉及全部鏡像,就確定是否鏡像中的任意一個已經(jīng)遇到介質(zhì)錯誤。在一個示例性實現(xiàn)方式中,執(zhí)行分離確定處理包括針對分離來識別:已經(jīng)遇到一個介質(zhì)錯誤的鏡像的一個子集中的鏡像;以及如果所有鏡像都遇到介質(zhì)錯誤的場景下除了這些鏡像中的一個以外的所有鏡像。第一節(jié)點的角色可以轉(zhuǎn)移到第二節(jié)點,其中該第一節(jié)點受到存儲器存取丟失的影響,而第二節(jié)點具有足夠的存儲器存取。在一個實施例中,一種計算機可讀存儲介質(zhì)上存儲計算機可讀指令,當(dāng)由一個計算機系統(tǒng)執(zhí)行時,這些指令使得該計算機系統(tǒng)執(zhí)行一種方法。在一個實施例中,該方法包括:執(zhí)行一個錯誤類型檢測處理,從而確定一個錯誤是介質(zhì)錯誤還是連接錯誤;執(zhí)行一個分離確定處理以建立一個適合的分離場景,其中如果該連接錯誤涉及所有鏡像,則該適合的分離場景包括不分離任何鏡像;并且為一個應(yīng)用程序?qū)懖僮鞣祷厥?。在一個實現(xiàn)方式中,該分離確定處理根據(jù)讀-寫-返回處理的結(jié)果分離一個鏡像。在一個實現(xiàn)方式中,該分離確定處理根據(jù)讀-寫-返回處理的結(jié)果分離一個鏡像。在一個實現(xiàn)方式中,執(zhí)行分離確定處理包括一個連接狀態(tài)查詢并且根據(jù)該連接狀態(tài)查詢的結(jié)果對鏡像進行分離。在一個示例性實現(xiàn)方式中,連接狀態(tài)查詢包括SCSI連接查詢。在一個實施例中,利用讀-寫-返回操作保持鏡像間的一致性和同步性。還可以分離不能接入絕大多數(shù)節(jié)點的鏡像。第一節(jié)點的角色可以轉(zhuǎn)移到第二節(jié)點,其中該第一節(jié)點受到存儲器存取丟失的影響,而第二節(jié)點具有足夠的存儲器存取。在一個示例性實現(xiàn)方式中,一種計算機系統(tǒng)具有連接至一個計算機可讀存儲介質(zhì)的一個處理器并且該計算機系統(tǒng)執(zhí)行計算機可讀代碼,該計算機可讀代碼使該算計系統(tǒng)執(zhí)行多個操作,這些操作包括:執(zhí)行一個錯誤類型檢測處理,該處理包括確定一個錯誤是介質(zhì)錯誤還是連接錯誤;執(zhí)行一個分離確定處理以建立一個適合的分離場景,其中如果該連接錯誤涉及所有鏡像,則該適合的分離場景包括不分離任何鏡像;并且為一個應(yīng)用程序?qū)懖僮鞣祷厥?。在一個實施例中,該分離確定處理根據(jù)讀-寫-返回處理的結(jié)果分離一個鏡像。在一個實施例中,該分離確定處理根據(jù)讀-寫-返回處理的結(jié)果分離一個鏡像。在一個示例性實現(xiàn)方式中,該分離確定處理包括一個連接狀態(tài)查詢并根據(jù)該連接狀態(tài)查詢的結(jié)果對鏡像進行分離。在一個示例性實現(xiàn)方式中,該連接狀態(tài)查詢包括SCSI連接查詢。在一個實施例中,利用讀-寫-返回操作保持鏡像之間的一致性和同步性。還可以分離不能接入絕大多數(shù)節(jié)點的鏡像。第一節(jié)點的角色可以轉(zhuǎn)移到第二節(jié)點,其中該第一節(jié)點受到存儲器存取丟失的影響,而第二節(jié)點具有足夠的存儲器存取。附圖描述本文所包括的結(jié)合在本說明書中并形成其一部分的附圖用于示例性地展示本實施例的原則并且不用于將本發(fā)明限制于本文展示的特定實現(xiàn)方式。除非另有特別說明,附圖是非等比例的。
圖1A是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)的方框圖。圖1B是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)的方框圖,該系統(tǒng)具有位于存儲連接組件和存儲資源之間的集群全局故障。圖1C是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)方框圖,該系統(tǒng)具有主局部故障和從局部故障。圖1D是根據(jù)本發(fā)明的一個實施例的一種示例性數(shù)據(jù)存儲系統(tǒng)方框圖,該系統(tǒng)具有全局部分故障和局部部分故障。圖1E是根據(jù)本發(fā)明的一個實施例的一種示例性數(shù)據(jù)存儲系統(tǒng)方框圖,該系統(tǒng)具
有集群全局故障。圖2是根據(jù)本發(fā)明的一個實施例的一種示例性故障處理方法的方框圖。圖3A是根據(jù)本發(fā)明的一個實施例的一種示例性全部節(jié)點讀-寫-返回一致性維護處理的方框圖。圖3B是根據(jù)本發(fā)明的一個實施例的一種示例性初始連接查詢一致性維護處理的方框圖。圖4A是根據(jù)本發(fā)明的一個實施例的一種示例性分離確定處理的方框圖。圖4B是根據(jù)本發(fā)明的一個實施例的一種示例性介質(zhì)錯誤分離配置處理的方框圖。圖4C是根據(jù)本發(fā)明的一個實施例的一種示例性連接錯誤分離配置確定處理的方框圖。圖4D是根據(jù)本發(fā)明的一個實施例的一種示例性分離場景處理的方框圖。圖5是根據(jù)本發(fā)明的一個實施例的一種示例性連接錯誤分離配置處理的流程圖。圖6是根據(jù)本發(fā)明的一個實施例的一種示例性數(shù)據(jù)存儲系統(tǒng)的方框圖。圖7是根據(jù)本發(fā)明的一個實施例的在解決非一致性之后的一種示例性數(shù)據(jù)存儲系統(tǒng)的方框圖。圖8是根據(jù)本發(fā)明的一個實施例的一種示例性糾錯模塊的方框圖。圖9是根據(jù)本發(fā)明的一個實施例的一種示例性網(wǎng)絡(luò)架構(gòu)的方框圖。圖10描述了根據(jù)本發(fā)明的一個實施例的適于實施本方法的示例性計算機系統(tǒng)的方框圖。詳細說明現(xiàn)在將詳細參考優(yōu)選實施例,這些實施例的示例示于附圖中。盡管將結(jié)合優(yōu)選實施例描述本發(fā)明,但將會理解的是它們不用于將本發(fā)明限制于這些實施例。相反,本發(fā)明意在涵蓋替代形式、修改形式和等同形式,它們可以包含在所附權(quán)利要求定義的精神和范圍中。而且,在以下詳細說明中,給出了很多具體細節(jié)以提供透徹理解。然而,對于本領(lǐng)域普通技術(shù)人員將變得明顯的是,本發(fā)明可以在不具有這些具體細節(jié)的場景下實施。在其他示例中,并未詳細描述眾所周知的方法、過程、組件和電路,因為它們會不必要地使當(dāng)前發(fā)明的多個方面難以理解。本發(fā)明新系統(tǒng)和方法有助于高效且有效的信息存儲管理和故障處理。這些系統(tǒng)和方法有助于有效地管理I/o錯誤對數(shù)據(jù)存儲資源的影響,并可以補充現(xiàn)有的基礎(chǔ)設(shè)施。例如,本系統(tǒng)和方法在處理局部存儲連接問題時可以有助于具有縮減的不適當(dāng)分離的鏡像資源的魯棒維護。在一個實施例中,分離確定處理用于一個適合的分離場景,其中如果連接錯誤涉及全部鏡像,則該適合的分離場景包括不分離任何鏡像。該新系統(tǒng)和方法包括提高了避免從一個或多個節(jié)點的與完全存儲連接的丟失相關(guān)聯(lián)的鏡像分離,同時有助于鏡像之間的一致性和同步性。該新方法包括一個替代方法以通過分離完全局部連接故障中除了最后一個鏡像外的所有鏡像來處理前述場景,在這些場景中不必要的分離不為受影響的節(jié)點提供任何益處。在一個實施例中,本系統(tǒng)和方法實施在一個集群環(huán)境中。該系統(tǒng)和方法可以有助于從訪問其他鏡像的節(jié)點上恢復(fù)故障1/0,并從共享存儲集群中的受影響節(jié)點返回I/O的故障。該系統(tǒng)和方法可以有助于提高局部錯誤的處理,這些錯誤影響了共享存儲集群中的裝置的鏡像。共享存儲集群管理(例如,CFS/CVM等)在市場上十分重要并且隨著系統(tǒng)開始在CFS/CVM集群中支持更多數(shù)量的節(jié)點而正變得更加重要。鏡像冗余是許多共享存儲集群以及避免不必要的鏡像資源分離的關(guān)鍵因素,并且一致性和同步性的維護對集群管理是有幫助的。應(yīng)當(dāng)認識到,該新方法可以應(yīng)用于具有RAIDl配置或具有包含RAIDl的其他組合的配置的裝置上。圖1A是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)100的方框圖。數(shù)據(jù)存儲系統(tǒng)100包括存儲資源101、存儲連接組件155和集群170。存儲資源101包括存儲鏡像信息的磁盤112、113、114、115和177。鏡像信息120包括在磁盤112上存儲的數(shù)據(jù)122、123和124。鏡像信息130包括在磁盤113上存儲的數(shù)據(jù)132、133和134。鏡像信息140包括在磁盤114上存儲的數(shù)據(jù)142、143和144。鏡像信息150包括在磁盤115上存儲的數(shù)據(jù)152和153以及在磁盤117上存儲的數(shù)據(jù)154。集群170包括節(jié)點171、172、173和174。在一個實施例中,鏡像可以在虛擬層上實現(xiàn),并且鏡像卷在多個節(jié)點之間共享(例如,在一個共享集群中、在集群170中等)。示例性數(shù)據(jù)存儲系統(tǒng)100的組件協(xié)作地運行用于幫助高效且便利的數(shù)據(jù)信息存儲。磁盤112、113、114、115和117存儲信息。在一個實施例中,信息存儲在一個鏡像配置中。在一個示例性實現(xiàn)方式中,存儲在一個鏡像上的信息在其他鏡像上復(fù)制或“鏡像”。在一個示例性實現(xiàn)方式中,鏡像信息120與對應(yīng)的信息130、140和150相同。存儲連接組件155在節(jié)點集群170和存儲資源101之間提供連接。在一個實施例中,存儲連接組件155包含一個存儲陣列網(wǎng)絡(luò)(SAN)開關(guān)。節(jié)點171、172、173和174作為主機運行。應(yīng)當(dāng)認識到,本系統(tǒng)和方法可配置用于在各種安排和組織中實施。鏡像可以利用多個磁盤上的資源。例如,鏡像信息150可以利用磁盤115和磁盤117上的存儲資源。還應(yīng)當(dāng)認識到,磁盤資源可以由多個鏡像使用。在一個實施例中,磁盤上存儲資源的一些區(qū)塊可以分配給一個鏡像,而同一個磁盤上存儲資源的其他區(qū)塊可以分配給另一個鏡像。在一個示例性實現(xiàn)方式中,如果信息從一個應(yīng)用程序?qū)懙降谝荤R像(例如,鏡像信息130)并且其他鏡像中的一個不能存儲(例如,由于連接丟失等)相應(yīng)的信息(例如,鏡像信息140),數(shù)據(jù)存儲系統(tǒng)100開始處理或調(diào)整該故障或I/O錯誤。該系統(tǒng)確定I/O錯誤是由于存儲介質(zhì)故障引起還是其他錯誤的結(jié)果(例如,連接丟失等)。如果該錯誤與存儲介質(zhì)故障無關(guān),系統(tǒng)檢查在I/O錯誤中涉及哪些鏡像。如果在I/O錯誤中涉及一個或多個鏡像,可以分離該鏡像,只要仍存在另一個可用鏡像。然而,如果在I/O錯誤中涉及所有鏡像,則不分離任何鏡像。由于若分離了所有的鏡像,就不分離任何鏡像,所以系統(tǒng)可能失效于應(yīng)用程序,因為不存在剩余的鏡像用于讀取或?qū)懭?。在一個實施例中,該系統(tǒng)用于一種故障處理方法。該故障處理方法利用一個分離確定處理。在一個實施例中,分離確定處理包括由所有節(jié)點進行的讀-寫-返回處理并且分離基于讀-寫-返回處理結(jié)果。在一個替代實施例中,分離確定處理包括連接狀態(tài)查詢并且分離基于該連接狀態(tài)查詢的結(jié)果。該連接狀態(tài)查詢結(jié)果還用于為讀-寫-返回處理選擇一個指定的單一節(jié)點。在這兩種場景的任意一個中,讀-寫-返回處理用于協(xié)助一致性或同步性校正。例如,讀-寫-返回操作用于確保區(qū)塊122、123和124上的內(nèi)容分別鏡像在區(qū)塊132、133和134上、區(qū)塊142、143和144上以及區(qū)塊152、153和154上。在以下部分中將提供故障處理方法相關(guān)的附加信息和鏡像同步的示例。應(yīng)當(dāng)認識到,存在各種可能的故障或錯誤可能場景。圖1B是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)100的方框圖,集群全局故障191出現(xiàn)在存儲連接組件155和存儲資源101之間。在圖1B中,這種場景包括與所有鏡像失去連接的一個或多個節(jié)點。由于連接錯誤涉及所有鏡像,不分離任何鏡像。圖1C是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)100的方框圖,該系統(tǒng)具有主局部故障192和從局部故障193。主局部故障192導(dǎo)致主節(jié)點171和存儲資源101中的所有磁盤之間的錯誤或故障,并由此引起存儲資源101中所有鏡像的錯誤。從局部故障193導(dǎo)致從節(jié)點193和存儲資源101中的所有磁盤之間的錯誤或故障,并由此引起存儲資源101中所有鏡像的錯誤。在這種場景中不分離任何鏡像。在一個實施例中,第一節(jié)點的角色可以轉(zhuǎn)移到第二節(jié)點,其中第一節(jié)點受到存儲器存取丟失的影響,而第二節(jié)點具有足夠的存儲器存取。在一個示例性實現(xiàn)方式中,當(dāng)主節(jié)點171遇到主局部故障192并且失去連接時,主節(jié)點的角色可以轉(zhuǎn)移到具有足夠存儲器存取的存儲資源101的節(jié)點172。當(dāng)主角色轉(zhuǎn)移之后節(jié)點172將成為主節(jié)點而節(jié)點171將成為從節(jié)點。在一個實施例中,角色的轉(zhuǎn)移或分配可以基于不同的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)與所涉及的節(jié)點以及它們訪問存儲器的特性有關(guān)。在一個示例性實現(xiàn)方式中,轉(zhuǎn)移是基于具有存儲器最大訪問權(quán)的節(jié)點進行的。連接特性可以基于權(quán)重考慮或連接標(biāo)準(zhǔn)。圖1D是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)200的方框圖,該系統(tǒng)具有全局部分故障295和局部部分錯誤295。數(shù)據(jù)存儲系統(tǒng)200包括數(shù)據(jù)存儲陣列201、數(shù)據(jù)存儲陣列202、存儲連接組件255、存儲連接組件257和集群270。存儲陣列201包括磁盤212和213。存儲陣列202包括磁盤214、215和277。這些磁盤存儲鏡像信息。鏡像信息220包括在磁盤212上存儲的數(shù)據(jù)222、223和224。鏡像信息230包括在磁盤213上存儲的數(shù)據(jù)232、233和234。鏡像信息240包含在磁盤214上存儲的數(shù)據(jù)242、243和244。鏡像信息250包括在磁盤215上存儲的數(shù)據(jù)252和253以及在磁盤217上存儲的數(shù)據(jù)254。集群270包括節(jié)點271、272、273和274。在一個實施例中,鏡像實施在虛擬層中并且鏡像卷在多個節(jié)點之間共享(例如,在共享集群中、在集群270中等)。全局部分故障294導(dǎo)致非全部磁盤的錯誤或故障,這些錯誤被認為是全局性的,因為所有節(jié)點都經(jīng)歷過這些錯誤。例如,全局部分故障294在存儲陣列201上的磁盤與集群270中所有節(jié)點之間引起故障,但是不會在存儲陣列202上的磁盤與集群270中的節(jié)點之間引起故障。局部部分故障295導(dǎo)致非全部磁盤的錯誤或故障。例如,局部部分故障295在節(jié)點274和存儲陣列202之間引起故障,但不會在存儲陣列201上的磁盤和節(jié)點274之間引起故障。在一個實施例中,分離出涉及錯誤的鏡像的一個子集。例如,在節(jié)點271上的I/O會遇到與存儲陣列201有關(guān)而與存儲節(jié)點202無關(guān)的錯誤,因此將分離與存儲陣列201相關(guān)的鏡像的一個子集,而非與存儲陣列202相關(guān)的鏡像的一個子集。然而,與節(jié)點274上的I/O有關(guān)的錯誤將不會觸發(fā)分離,因為節(jié)點274失去了與所有鏡像的連接,因此不分離任何鏡像。例如,節(jié)點274由于全局部分故障294而失去與存儲鏡像201的連接并且由于局部部分故障295而失去與存儲矩陣202的連接。圖1E是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)100的示意圖,該系統(tǒng)具有集群全局故障197。在一個實施例中,集群全局故障197是磁盤112上的介質(zhì)故障的結(jié)果。集群全局故障197引起磁盤112和所有節(jié)點之間的錯誤或故障。在一個實施例中,如果發(fā)生介質(zhì)錯誤,就退出鏡像分離處理。在一個替代實施例中,當(dāng)發(fā)生介質(zhì)錯誤時,鏡像分離處理就基于遇到該介質(zhì)錯誤的一組鏡像(例如,全部鏡像、鏡像的一個子集等)而繼續(xù)進行。在一個示例性實現(xiàn)方式中,如果所有鏡像都遇到介質(zhì)錯誤,那么就分離除了鏡像之一外的所有鏡像,并且如果鏡像的一個子集中遇到介質(zhì)錯誤,就分離該部分鏡像。圖2是根據(jù)本發(fā)明的一個實施例的故障處理方法280的方框圖。在一個實施例中,故障處理方法280有助于在減少不適當(dāng)?shù)姆蛛x的場景下維護鏡像資源,同時在處理局部存儲連接問題時校正鏡像同步。故障處理方法280可以有助于提高影響了共享存儲集群中裝置的鏡像的局部故障的處理。在模塊281中,執(zhí)行錯誤類型檢測處理。在一個實施例中,執(zhí)行錯誤類型檢測處理包括確定錯誤是介質(zhì)錯誤還是連接錯誤。接收錯誤指示(例如,輸入/輸出(I/O)錯誤指示等)。I/O錯誤指示響應(yīng)于嘗試性的應(yīng)用程序?qū)戇^程中的連接錯誤。檢查I/O錯誤是否由介質(zhì)錯誤引起。在一個實施例中,確定I/O錯誤是否為介質(zhì)錯誤包括檢查I/O狀態(tài)。在一個示例性實現(xiàn)方式中,分析是否錯誤涉及鏡像的全部或一個子集,以及如果鏡像中任意一個遇到了介質(zhì)錯誤則該錯誤涉及全部鏡像。可以檢查錯誤代碼以便確定是否涉及介質(zhì)錯誤。在一個實施例中,如果錯誤是由介質(zhì)故障引起的,就將I/O錯誤返回給應(yīng)用程序并退出分離處理。在一個替代實施例中,如果結(jié)果表明錯誤是介質(zhì)錯誤,該處理進入到分離確定模塊284。如果結(jié)果表明錯誤是連接錯誤,該處理進入到分離確定模塊284之前的一致性維護模塊 282。在模塊282中,進行一致性性維護處理。進行一致性性維護處理是因為寫操作可能在鏡像之間產(chǎn)生不一致。讀-寫-返回操作可以用于對鏡像進行同步。在第一實施例中,使用所有節(jié)點讀-寫-返回一致性維護處理。在第二實施例中,使用初始連接查詢一致性維護處理。在第一個實施例中,所有節(jié)點都執(zhí)行讀-寫-返回操作,而在第二個實施例中,基于初始連接查詢所選擇的專用節(jié)點執(zhí)行讀-寫-返回操作。以下部分包括一致性維護處理的附加描述。轉(zhuǎn)發(fā)基于所有節(jié)點讀-寫-返回一致性維護處理的成功或失敗結(jié)果或基于初始連接查詢一致性維護處理的連接指示結(jié)果的連接指示以用于確定分離的鏡像。在模塊284中,執(zhí)行分離確定處理以建立適合的分離場景。在一個實施例中,分離確定處理可以包括基于遇到介質(zhì)錯誤的鏡像的介質(zhì)錯誤分離配置處理。在一個實施例中,分離確定處理可以包括基于與連接錯誤相關(guān)的鏡像的連接錯誤分離配置處理。在一個實施例中,基于模塊282中的一致性維護處理的結(jié)果來確定涉及連接錯誤的鏡像。應(yīng)當(dāng)認識到的是,根據(jù)涉及連接錯誤鏡像的指示,存在各種適合的分離場景。這些適合的分離場景可以包括如果連接錯誤涉及所有鏡像就包括不分離任何鏡像、分離涉及連接錯誤的一個鏡像子集、如果仍存至少一些可用的鏡像冗余就分離涉及連接錯誤的一個鏡像等。以下部分中給出分離確定處理和適合的分離場景的附加解釋。在模塊285中,給應(yīng)用程序?qū)懖僮鞣祷匾粋€失敗。在一個示例性實現(xiàn)方式中,在分離和一致性校正之后應(yīng)用程序能夠處理錯誤,因為該應(yīng)用程序希望寫入全部1/0,寫入I/O的一個子集,或不寫入I/o的任何部分,并能調(diào)解這些場景。圖3A是根據(jù)本發(fā)明的一個實施例的示例性全部節(jié)點讀-寫-返回一致性維護處理300A的方框圖。在一個實施例中,除有助于維護鏡像一致性以外的所有節(jié)點讀-寫-返回一致性維護處理300A的結(jié)果還提供一種適合的分離場景的指示。在模塊320A中,向集群中的其他節(jié)點發(fā)送消息以便校正鏡像不一致。在一個實施例中,發(fā)起或控制節(jié)點向集群中其他所有節(jié)點鏡像發(fā)送消息以校正鏡像不一致。該控制或發(fā)起節(jié)點還在消息中指定了裝置的受影響的地址范圍以及應(yīng)當(dāng)用于校正不一致的鏡像。應(yīng)當(dāng)認識到的是所指定的鏡像可用采用各種方式來選擇(例如,隨機地、基于連接查詢的結(jié)果
-rf* ) O在模塊330中,執(zhí)行讀-寫-返回處理,其中集群中的其他節(jié)點試圖通過在所指定地址范圍上從所指定鏡像進行讀取并寫入到其他鏡像來校正鏡像不一致。在一個實施例中,讀-寫-返回操作的結(jié)果與操作結(jié)果的指示(例如,失敗、成功等)轉(zhuǎn)發(fā)回發(fā)起或控制節(jié)點。如果所有節(jié)點都報告失敗,則讀-寫-返回協(xié)議可以利用一個不同的指定鏡像重新運行以便讀取。例如,如果對利用第一指定鏡像的讀-寫-返回處理響應(yīng)了失敗,則利用第二指定鏡像來重復(fù)運行讀-寫-返回處理。第二指定鏡像可以根據(jù)不同機制來選擇(例如,隨機地、基于連接查詢結(jié)果等)。在模塊340A中,校正操作的結(jié)果與校正操作過程中觀察到的任何故障傳回至控制或發(fā)起節(jié)點。在一個實施例中,控制或發(fā)起節(jié)點利用該結(jié)果來確定涉及連接錯誤的鏡像。在一個實施例中,示例性的所有節(jié)點讀-寫-返回一致性維護處理300A的結(jié)果可用在分離確定處理中(例如,類似于模塊284等)。在一個實施例中,分離確定處理利用所有節(jié)點讀-寫-返回一致性維護處理結(jié)果來確定涉及錯誤的鏡像。以下部分包括分離確定處理的附加詳細描述。圖3B是根據(jù)發(fā)明的一個實施例的初始連接查詢一致性維護處理300B的方框圖。在一個實施例中,除了有助于維護鏡像一致性以外的初始連接查詢一致性維護處理300B的結(jié)果還提供了適合的分離場景的指示。在模塊320B中,執(zhí)行連接查詢處理。在一個示例性實現(xiàn)方式中,連接查詢處理包括控制或發(fā)起節(jié)點請求其他節(jié)點回報與集群中鏡像的連接。在一個示例性實現(xiàn)方式中,連接狀態(tài)查詢包括SCSI連接查詢。例如,控制或發(fā)起節(jié)點可以為它與其通信的裝置中的每一個鏡像執(zhí)行SCSI查詢。在模塊330B中,向集群中的指定節(jié)點發(fā)送消息以便校正鏡像不一致。該指定節(jié)點的選擇是基于模塊320A中連接查詢處理的結(jié)果。在一個實施例中,發(fā)起或控制節(jié)點向該指定節(jié)點發(fā)送消息以校正鏡像不一致??刂苹虬l(fā)起節(jié)點還在該消息中指定裝置的受影響的地址范圍以及應(yīng)當(dāng)用于校正不一致的鏡像。應(yīng)當(dāng)認識到的是,指定的鏡像可以采用各種方式來選擇(例如,隨機地、基于連接查詢結(jié)果等)。在模塊340B中,讀-寫-返回處理由指定節(jié)點執(zhí)行以便通過在指定地址范圍上的指定鏡像進行讀取并寫入到其他鏡像來校正鏡像不一致。鏡像一致性校正可以基于由連接狀態(tài)查詢所確定的單一指定節(jié)點進行的讀-寫-返回處理。在一個示例性實現(xiàn)方式中,校正操作的結(jié)果與校正操作過程中觀察到的任何故障一起傳送回控制或發(fā)起節(jié)點。轉(zhuǎn)發(fā)校正操作結(jié)果可以作為指定節(jié)點能夠校正不一致的確認。如果指定節(jié)點報告失敗,讀-寫-返回協(xié)議利用不同的指定節(jié)點或鏡像重新運行以便讀取。例如,如果存在利用第一指定節(jié)點產(chǎn)生對讀-寫-返回處理的失敗響應(yīng),則利用第二指定節(jié)點重復(fù)讀-寫-返回處理。圖4A是根據(jù)本發(fā)明的一個實施例的分離確定處理400的方框圖。在一個實施例中,分離確定處理400類似于模塊284的分離確定處理。在模塊401中,接收錯誤類型指示。在一個實施例中,錯誤指示類型接收自錯誤檢測處理(例如,模塊281的錯誤檢測處理等)。在一個示例性實現(xiàn)方式中,如果錯誤涉及所有鏡像,則確定是否鏡像中的任意一個遇到介質(zhì)錯誤。如果該錯誤是介質(zhì)錯誤,處理進入到模塊402,而如果該錯誤是連接錯誤,處理進入到模塊403。在模塊402中,基于遇到介質(zhì)錯誤的鏡像來執(zhí)行介質(zhì)錯誤分離配置處理。介質(zhì)錯誤或失敗分離配置處理可以作為模塊284中的分離確定處理的一部分來執(zhí)行。圖4B是根據(jù)本發(fā)明的一個實施例的示例性介質(zhì)錯誤分離配置處理420的方框圖。在模塊421中,確定涉及介質(zhì)錯誤的鏡像。在一個實施例中,涉及介質(zhì)錯誤的鏡像可以基于檢查I/o狀態(tài)(例如,錯誤碼等)來確定。在模塊422中,如果所有鏡像都遇到介質(zhì)錯誤,那么分離除了鏡像之一外的所有鏡像。在模塊423中,如果鏡像的一個子集已經(jīng)遇到介質(zhì)錯誤,那么分離該子集中的鏡像。返回參見圖4A,在模塊403中,執(zhí)行連接錯誤分離配置確定處理。在一個實施例中,連接錯誤分離配置確定處理確定分離了哪些鏡像。以下部分包括連接錯誤分離配置確定處理的附加描述。圖4C是根據(jù)本發(fā)明的一個實施例的示例性連接錯誤分離配置確定處理430的方框圖。在一個實施例中,連接錯誤分離配置確定處理430類似于模塊403中使用的配置錯誤分離確定。在模塊431中,接收一致性維護結(jié)果信息。全節(jié)點讀-寫-返回一致性維護處理和初始連接查詢一致性維護處理的結(jié)果都提供涉及連接錯誤的鏡像的指示。在一個實施例中,一致性維護結(jié)果包括與模塊282中一致性維護操作相關(guān)聯(lián)的結(jié)果信息。在模塊432中,執(zhí)行連接錯誤鏡像涉及處理。鏡像錯誤涉及處理指示鏡像涉及連接錯誤。在一個實施例中,連接錯誤鏡像涉及處理包括分析哪些鏡像涉及錯誤,這包括錯誤涉及鏡像的一個子集還是全部。在基于全節(jié)點讀-寫-返回一致性維護處理(例如,300A等)的一個示例性實現(xiàn)方式中,分析哪個節(jié)點讀-寫-返回操作是成功的以及哪些是失敗的結(jié)果指示以確定涉及一致性錯誤的鏡像。在基于初始連接查詢一致性維護處理(例如,300B等)的一個替代示例性實施例中,根據(jù)連接查詢來分析哪些節(jié)點具有連接問題的結(jié)果指示以確定涉及一致性錯誤的鏡像。在模塊433中,基于模塊432的連接錯誤鏡像涉及處理的結(jié)果來執(zhí)行分離場景處理。分離場景處理確定哪些鏡像不應(yīng)當(dāng)分離以及哪些鏡像應(yīng)當(dāng)分離(例如,由于連接錯誤等)。在一個實施例中,分離場景處理高效且有效地選擇進行分離的鏡像。圖4D是根據(jù)本發(fā)明的一個實施例中的示例性分離場景處理490的方框圖。在模塊491內(nèi),如果所有鏡像都涉及連接錯誤,則不分離任何鏡像。在模塊492中,如果鏡像的一個子集相對于所有節(jié)點涉及連接問題,則分離該鏡像子集。在模塊493中,分離除了一個鏡像之外的鏡像的特定子集。在一個示例性實現(xiàn)方式中,如果鏡像的連接錯誤影響所有節(jié)點,即使只剩下一個鏡像的場景下也分離該鏡像。在模塊494中,如果鏡像相對于絕大部分節(jié)點涉及連接問題,就分離該鏡像。在一個示例性實現(xiàn)方式中,使用加權(quán)平均,其中不同權(quán)重分配給不同節(jié)點。圖5是根據(jù)本發(fā)明的一個實施例的示例性連接錯誤分離配置處理500的方框圖。連接錯誤分離配置處理500基于全節(jié)點的讀-寫-返回結(jié)果來確定涉及連接錯誤的鏡像的指示。在一個實施例中,控制或發(fā)起節(jié)點等待所有其他節(jié)點的讀-寫-返回操作(例如,類似于模塊330A等)響應(yīng)并基于該響應(yīng)采取進一步措施。在完成適當(dāng)?shù)牟僮骱?,可以為?yīng)用程序?qū)懖僮鞣祷厥?如上述313模塊所描述)。在模塊510中,如果至少一個節(jié)點返回成功,則不分離任何鏡像。在模塊520中,如果所有節(jié)點都針對鏡像的一個子集返回錯誤,則分離該部分中的那些鏡像。在模塊530中,如果所有節(jié)點都報告故障,則利用不同鏡像重新運行讀-寫-返回協(xié)議以便讀取。例如,如果所有節(jié)對利用第一指定節(jié)點的讀-寫-返回處理響應(yīng)了失敗,則利用第二指定鏡像重復(fù)讀-寫-返回處理以進行讀取。第二指定鏡像可以從剩余鏡像中選擇(例如,隨機地、基于連接查詢結(jié)果等)。在模塊540中,如果讀-寫-返回結(jié)果表明一個鏡像不可訪問節(jié)點中的任意一個,則該鏡像可以分離。在模塊550中,如果節(jié)點具有一組互斥的可訪問鏡像,還可以分離不可訪問的該組鏡像。在一個實施例中,用到簡單多數(shù)法。例如,如果五分之三的節(jié)點無法訪問一個鏡像,則可以分離該鏡像。在一個示例性實現(xiàn)方式中,使用加權(quán)平均,其中不同權(quán)重分配給不同節(jié)點。圖6是根據(jù)本發(fā)明一個實施例的示例性數(shù)據(jù)存儲系統(tǒng)600的方框圖。數(shù)據(jù)存儲系統(tǒng)650包括應(yīng)用程序610、鏡像620、鏡像630和鏡像640。鏡像620、鏡像630和鏡像640可以通信性地連接。示例性數(shù)據(jù)存儲系統(tǒng)650協(xié)作地運行用于幫助高效且便捷地存儲應(yīng)用程序610的數(shù)據(jù)信息。在一個實施例中,存儲在一個鏡像上的信息復(fù)制或“鏡像”在其他鏡像上。應(yīng)當(dāng)認識到的是,可易于配置本發(fā)明的系統(tǒng)和方法實施在不同的安排或組織中。在一個示例性實現(xiàn)方式中,信息從應(yīng)用程序610寫入到鏡像620。例如,內(nèi)容“AAAA”寫入到塊622,內(nèi)容寫入到塊623,內(nèi)容“CCCC”寫入到塊624。其他鏡像不能存儲相應(yīng)的信息。例如,內(nèi)容“AAAA”寫入到塊632,內(nèi)容寫入到塊633,但是“CCCC”不寫到塊634。內(nèi)容“AAAA”寫到塊642,內(nèi)容不寫到塊643并且內(nèi)容“CCCC”不寫到塊644上。數(shù)據(jù)存儲系統(tǒng)650開始處理或調(diào)整故障或I/O錯誤。在一個實施例中,該系統(tǒng)用于故障處理方法(例如,類似于故障處理方法280)。執(zhí)行分離確定處理(例如,類似于400A.400B等)。在一個示例性實現(xiàn)方式中,分離確定處理指示連接錯誤涉及所有鏡像,所以不分離任何鏡像。在一個示例性實現(xiàn)方式中,分離確定處理指示連接錯誤涉及鏡像的一個子集并且分離該部分鏡像。執(zhí)行一致性和同步性校正。在一個示例性實現(xiàn)方式中,采用讀-寫-返回操作。圖7是根據(jù)發(fā)明的一個實施例的在一致性和同步校正之后的示例性數(shù)據(jù)存儲系統(tǒng)650的方框圖。發(fā)起方指示鏡像與鏡像630同步。例如,在鏡像620上,內(nèi)容“AAAA”寫到塊622,內(nèi)容寫到塊623,內(nèi)容“0000”寫到塊624上。在鏡像630上,內(nèi)容“AAAA”寫到塊632,內(nèi)容寫到塊633,內(nèi)容“0000”寫到塊634。在鏡像640中,內(nèi)容“AAAA”寫到塊642,內(nèi)容寫到塊643,而內(nèi)容“0000”寫到塊644。圖8是一個故障處理模塊800的方框圖,該模塊包括用于引導(dǎo)處理器執(zhí)行一種存儲方法(例如,故障處理方法280等)的指令。故障處理方法800包括錯誤檢測模塊810、一致性維護模塊815、錯誤不一致校正模塊820、以及報告模塊830。錯誤檢測模塊810包括執(zhí)行錯誤檢測的指令。在一個實施例中,錯誤檢測模塊810包括執(zhí)行模塊281中所指示的錯誤檢測的指令。一致性維護模塊815包括執(zhí)行維護鏡像一致性處理的指令。在一個實施例中,一致性維護模塊815包括執(zhí)行模塊282中鏡像一致性維護的指令。分離確定模塊820包括執(zhí)行建立適合分離場景處理的指令,其中如果連接錯誤涉及全部鏡像,該適合的分離場景包括不分離任何鏡像。在一個實施例中,分離確定模塊820包括執(zhí)行模塊284中分離確定的指令。報告模塊830包括報告寫入失敗的指令。在一個實施例中,報告模塊830包括報告模塊285中所指示的失敗的指令。在一個實施例中,存儲方法(例如,故障處理方法280等)可以實施在網(wǎng)絡(luò)上。圖9是描繪網(wǎng)絡(luò)構(gòu)架1800的方框圖,其中客戶端系統(tǒng)1810、1820和1830以及存儲服務(wù)器1840A和1840B (它們中任何一個可以利用計算機系統(tǒng)1110實施)連接至網(wǎng)絡(luò)1850。存儲服務(wù)器1840A進一步描繪為具有直接附接的存儲裝置1860A(1)-(N),并且存儲服務(wù)器1840B描繪為具有直接附接的存儲裝置1860B(1)-(N)構(gòu)成。存儲服務(wù)器1840A和1840B還連接至SAN結(jié)構(gòu)1870上,盡管連接至一個存儲局域網(wǎng)絡(luò)并不要求運行本披露。SAN結(jié)構(gòu)1870支持通過網(wǎng)絡(luò)1850由存儲服務(wù)器1840A和1840B并且還由客戶端系統(tǒng)1810、1820和1830來訪問存儲裝置1880 (I)-(N)。智能存儲陣列1890還展示為通過SAN結(jié)構(gòu)1870可訪問的一種特定存儲裝置的示例。在一個實施例中,服務(wù)器1840A包括故障處理模塊1899。在一個實施例中,故障處理模塊1899類似于故障處理模塊800。應(yīng)當(dāng)認識到的是本系統(tǒng)和方法與各種實現(xiàn)方式相兼容。例如,信息的多個部分和相關(guān)指令可以分布在不同的資源中。圖10描繪了適于實現(xiàn)本方法的一個示例性計算機系統(tǒng)1110的方框圖。計算機系統(tǒng)1110包括總線1177,該總線將計算機系統(tǒng)1110的主子系統(tǒng)相互連接,如中央處理器1114、系統(tǒng)存儲器1117(通常是RAM,但是還可以包括ROM、閃存RAM、或類似的存儲器)、輸入/輸出控制器1118、外部音頻裝置(如經(jīng)由音頻輸出接口 1122的揚聲器系統(tǒng)1120)、外部裝置(如經(jīng)由顯示適配器1126的顯示屏1124)、串行端口 1128和1130、鍵盤1132 (與鍵盤控制器1133連接)、存儲接口 1134、可運行用于接收軟盤1138的軟盤驅(qū)動器1137、可運行用于連接光纖通道網(wǎng)絡(luò)1190的主機總線適配器(HBA)接口卡1135A、可運行用于連接到SCSI總線1139上的主機總線適配器(HBA)接口卡1135B、以及可運行用于接收光盤1142的光盤驅(qū)動器1140。還包括鼠標(biāo)1146或其他點擊裝置(經(jīng)由串行端口 1128連接至總線1112)、調(diào)制解調(diào)器1147 (經(jīng)由串行端口 1130連接至總線1112)、以及網(wǎng)絡(luò)接口 1148 (直接連接至總線 1112)??偩€1177允許在中央處理器1114和系統(tǒng)存儲器1117之間的數(shù)據(jù)通信,該系統(tǒng)存儲器包括前文指出的只讀存儲器(ROM)或閃存(均未示出)以及隨機訪問存儲器(RAM)(未示出)。在一個實施例中,執(zhí)行故障處理方法(例如,類似于故障處理方法280等)的指令存儲在計算機系統(tǒng)1100的一個或多個存儲器中(例如,在存儲單位1119中)。RAM通常是操作系統(tǒng)和應(yīng)用程序所載入的主存儲器。在一個實施例中,RAMl117包括一個故障處理模塊(例如,在存儲單元1119中)。在一個實施例中,存儲單元1119中存儲的故障處理模塊類似于故障處理模塊800。除其他代碼外,ROM或閃存還可以包含控制基本硬件操作(例如與外圍組件交互)的基本輸入-輸出系統(tǒng)(BIOS)。與計算機系統(tǒng)1110—起駐留的應(yīng)用程序通常存儲在計算機可讀介質(zhì)上并通過它進行訪問,該介質(zhì)例如是硬盤驅(qū)動器(例如,固定盤1144)、光盤驅(qū)動器(例如,光驅(qū)1140)、軟盤單元1137、或其他存儲器介質(zhì)。另外,當(dāng)通過網(wǎng)絡(luò)調(diào)制解調(diào)器1147或接口 248進行訪問時,應(yīng)用程序可以采用根據(jù)應(yīng)用程序和數(shù)據(jù)交換技術(shù)而調(diào)制的電信號形式。如同計算機系統(tǒng)1110的其他存儲器接口,存儲器接口 1134可以連接至一個標(biāo)準(zhǔn)計算機可讀介質(zhì)(例如固定磁盤驅(qū)動器1144)以便存儲和/或檢索信息。固定磁盤驅(qū)動器1144可以是計算機系統(tǒng)1110的一部分或可以是獨立的并且可通過其他接口系統(tǒng)訪問。調(diào)制解調(diào)器1147可以通過電話鏈路提供到遠程服務(wù)器或通過互聯(lián)網(wǎng)服務(wù)提供商(ISP)提供到互聯(lián)網(wǎng)的直接連接。網(wǎng)絡(luò)接口 1148可以通過直接網(wǎng)絡(luò)鏈路到遠程服務(wù)器或通過POP(撥入點)提供到互聯(lián)網(wǎng)的直接連接。網(wǎng)絡(luò)接口 1148可以利用無線技術(shù)提供這種連接,這些技術(shù)包括數(shù)字蜂窩電話連接、蜂窩數(shù)字分組數(shù)據(jù)(CDPD )連接、數(shù)字衛(wèi)星數(shù)據(jù)連接等。
很多其他裝置(例如,文檔掃描儀、數(shù)碼相機等)或子系統(tǒng)(未示出)可以采用類似的方式進行連接。相反,不需要圖10中所示的所有裝置來實施本披露。這些裝置和子系統(tǒng)可以采用不同于圖10所示的方式相互連接。實施本披露的代碼可以存儲在計算機可讀存儲介質(zhì)上,例如系統(tǒng)存儲器1117、固盤1144、光盤1142,或磁盤1138的一個或多個。計算機系統(tǒng) 1110 上提供的操作系統(tǒng)可以是 MS-DOS 、MS-WINDOWS 、OS κ UNIX 、Linux 、或另一種已知的操作系統(tǒng)。此外,就本文描述的信號而言,本領(lǐng)域的普通技術(shù)人員將認識到信號可以從第一模塊直接轉(zhuǎn)移到第二模塊,或者信號可以在模塊間進行修改(例如,放大、衰減、延遲、鎖存、緩沖、反相、過濾或以其他方式進行修改)。盡管以上所描述實施例的信號的特征是從一個模塊傳輸?shù)较乱粋€模塊,只要信號的信息和/或功能方面在模塊之間傳輸,本披露的其他實施例就包括替代這種直接傳輸?shù)男盘柕男薷男盘?。在某種程度上,由于所涉及電路的物理限制(例如,不可避免地有些衰減和延遲),在第二模塊上輸入的信號可以概念化為第二信號,該第二信號源自從第一模塊輸出的第一信號。因此,如本文所用,源自第一信號的第二信號包括第一信號或第一信號的任何修改形式,無論是由于電路限制或由于穿過其他電路元件(這些元件不改變第一信號的信息和/或最終的功能方面)。參見計算機系統(tǒng)1110,調(diào)制解調(diào)器1147、網(wǎng)絡(luò)接口 1148或一些其他的方法可用于提供從客戶端計算機系統(tǒng)1810、1820和1830的每一個到網(wǎng)絡(luò)1850的連接。客戶端系統(tǒng)1810、1820和1830能夠利用例如網(wǎng)絡(luò)瀏覽器或其他客戶端軟件(未示出)訪問在存儲服務(wù)器1840A或1840B上的信息。這種客戶端允許客戶端系統(tǒng)1810、1820和1830訪問由存儲服務(wù)器1840A或1840B或者1860A⑴_ (N)、1860B (I) - (N)、1880 (I) - (N)或智能存儲陣列1890之一托管的數(shù)據(jù)。圖9描述了使用網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))進行數(shù)據(jù)交換,但本披露不限于互聯(lián)網(wǎng)或任何具體的基于網(wǎng)絡(luò)的環(huán)境。在一個實施例中,通過以下步驟可以檢測新系統(tǒng)和方法的使用。利用其他產(chǎn)品創(chuàng)建多個節(jié)點(例如4個節(jié) 點)共享存儲集群。然后創(chuàng)建RAIDl裝置并啟動所有節(jié)點上的I/O負載。接著從一個節(jié)點斷開所有的存儲器并觀察裝置鏡像的狀態(tài)和鏡像一致性。如果沒有鏡像被標(biāo)記為分離并且鏡像內(nèi)容是一致的,那么建議使用本系統(tǒng)和方法。因此,本系統(tǒng)和方法有助于高效且有效的數(shù)據(jù)存儲和故障或故障處理。本系統(tǒng)和方法可以有助于以少量的不適當(dāng)分離來維護鏡像資源,同時校正鏡像同步。故障處理系統(tǒng)和方法可以有助于局部存儲連接問題和影響共享存儲集群中裝置的鏡像的增強處理。本系統(tǒng)和方法還有助于解決鏡像不一致。本文針對一種方法提出并討論了詳細說明的多個部分。盡管在本文描述該方法的操作的圖例中披露了多個步驟及其排序,但這些步驟和排序是示例性的。實施例十分適于執(zhí)行各種其他步驟或本文圖例的流程圖中列舉的這些步驟的變化形式,并且是以不同于本文描繪和描述的順序。詳細說明的某些部分是根據(jù)程序、步驟、邏輯塊、處理、以及在數(shù)據(jù)位元上的操作(可以在計算機存儲器內(nèi)執(zhí)行)的其他符號表示形式。這些描述和表示形式是由數(shù)據(jù)處理領(lǐng)域的普通技術(shù)人員所使用方式,以便將他們工作的實質(zhì)最有效地傳遞給本領(lǐng)域其他熟練技術(shù)人員。通常將這里的過程、計算機執(zhí)行步驟、邏輯塊、處理等設(shè)想為產(chǎn)生期望結(jié)果的一系列自洽性步驟或指令。這些步驟包括物理量的物理操作。通常,雖然不是必要的,但這些量采用電、磁、光或量子信號的形式,這些信號能夠進行存儲、傳輸、結(jié)合、比較、并且以其他方式在計算機系統(tǒng)中操作。主要出于習(xí)慣用法的原因,已經(jīng)證明有時將這些信號稱為比特、值、元件、符號、字符、術(shù)語、數(shù)字等是便利的。然而應(yīng)該記住的是,所有這些以及類似的術(shù)語應(yīng)當(dāng)與合適的物理量相關(guān)聯(lián),并且僅僅是應(yīng)用于這些量的方便標(biāo)簽。除非另有特別聲明,從以下討論可知,應(yīng)認識到貫穿全文利用術(shù)語如“處理”、“計算”、“核算”、“確定”、“顯示”、“訪問”、“寫入”、“包括”、“存儲”、“傳輸”、“遍歷”、“關(guān)聯(lián)”、“識別”等的討論是指計算機系統(tǒng)或類似的電子計算裝置的動作和處理,這些動作和處理將表示為計算機系統(tǒng)的寄存器和存儲器內(nèi)的物理(電子)量的數(shù)據(jù)操縱并轉(zhuǎn)換為其他數(shù)據(jù),這些數(shù)據(jù)同樣表示為計算機系統(tǒng)存儲器或寄存器或其他這類信息存儲、傳輸或顯示裝置中的物理量。計算裝置可以包括至少一些形式的計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算裝置訪問的任何可用介質(zhì)。通過舉例而非限制,計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)。計算機存儲介質(zhì)可以包括以存儲信息的任意方法和技術(shù)實施的易失性和非易失性的、可以移除的和不可移除的介質(zhì),這些信息例如是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)。計算機存儲介質(zhì)包括但不限于RAM、R0M、EEPR0M、閃存或其他存儲器技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或其他光存儲器、磁帶盒、磁帶、磁盤存儲器或其他磁存儲裝置、或可用于存儲所需信息并可以由計算裝置訪問的任何其他介質(zhì)。通信介質(zhì)通常示例化為載波或其他傳輸機制并且包括任何信息傳遞介質(zhì)。通過示例而非限制,通信介質(zhì)包括有線介質(zhì)(例如有線網(wǎng)絡(luò)或直接有線連接)、和無線介質(zhì)(例如聲音、RF、紅外、其他無線介質(zhì))、以及以上介質(zhì)中任意一些的組合。一些實施例可以在計算機可執(zhí)行指令(例如程序模塊)的一般環(huán)境中描述,這些指令由一個或多個計算機或其他裝置執(zhí)行。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行具體任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型。程序模塊的功能可以如所希望的那樣結(jié)合或分布在不同實施例中。給出具體實施例的前述描述的目的是用以說明和描述。它們無意于窮舉或?qū)⒈景l(fā)明限制到所披露的精確形式上,并且根據(jù)上述教義很多修改形式和變化形式是可能的。實施例的選擇和描述是為了更好地解釋原則及其實際應(yīng)用,從而使本領(lǐng)域的其他技術(shù)人員能夠最好地利用本發(fā)明以及具有各種修改形式的不同實施例,這些修改形式適于預(yù)期的特定用途。目的是發(fā)明范圍由所附權(quán)利要求及其等同形式來定義。
權(quán)利要求
1.一種故障處理方法,包括: 執(zhí)行一個錯誤類型檢測處理,該處理確定一個錯誤是介質(zhì)錯誤還是連接錯誤; 執(zhí)行一個分離確定處理以建立一個適合的分離場景,其中如果所述連接錯誤涉及全部鏡像,則所述適合的分離場景包括不分離任何鏡像;并且 為一個應(yīng)用程序?qū)懖僮鞣祷厥 ?br>
2.如權(quán)利要求1所述的故障處理方法,其中所述分離確定處理根據(jù)讀-寫-返回處理的結(jié)果來分離一個鏡像。
3.如權(quán)利要求1所述的故障處理方法,其中所述分離確定處理包括一個連接狀態(tài)查詢并且根據(jù)所述連接狀態(tài)查詢的結(jié)果對鏡像進行分離。
4.如權(quán)利要求3所述的故障處理方法,其中所述連接狀態(tài)查詢包括一個SCSI連接查 詢。
5.如權(quán)利要求1所述的故障處理方法,其中利用讀-寫-返回操作保持所述鏡像之間的一致性和同步性。
6.如權(quán)利要求1所述的故障處理方法,其中分離不能接入絕大部分節(jié)點的鏡像。
7.如權(quán)利要求1所述的故障處理方法,其中: 所述執(zhí)行所述錯誤類型檢測處理包括分析該錯誤涉及鏡像的一個子集還是全部,并且如果所述錯誤涉及所述鏡像的全部,就確定是否所述鏡像中的任意一個已經(jīng)遇到一個介質(zhì)錯誤;并且 所述執(zhí)行一個分離確定處理包括針對分離來識別: 已經(jīng)遇到一個介質(zhì)錯誤的鏡像的一個子集中的鏡像;以及 如果所述鏡像的全部都遇到介質(zhì)錯誤,除了所述鏡像之一外的所有鏡像。
8.如權(quán)利要求1所述的故障處理方法,進一步包括將一個第一節(jié)點的角色轉(zhuǎn)移到一個第二節(jié)點,其中所述第一節(jié)點受到存儲器存取丟失的影響,而所述第二節(jié)點具有足夠的存儲器存取。
9.一種計算機可讀存儲介質(zhì),在該介質(zhì)上存儲有計算機可讀指令,當(dāng)由一個計算機系統(tǒng)執(zhí)行時,這些指令使得該計算機系統(tǒng)執(zhí)行一種方法,該方法包括: 執(zhí)行一個錯誤類型檢測處理,該處理確定一個錯誤是介質(zhì)錯誤還是連接錯誤; 執(zhí)行一個分離確定處理以建立一個適合的分離場景,其中如果所述連接錯誤涉及全部鏡像,則所述適合的分離場景包括不分離任何鏡像;并且 為一個應(yīng)用程序?qū)懖僮鞣祷厥 ?br>
10.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中所述分離確定處理根據(jù)讀-寫-返回處理的結(jié)果來分離一個鏡像。
11.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中所述分離確定處理包括一個連接狀態(tài)查詢并且根據(jù)所述連接狀態(tài)查詢的結(jié)果對鏡像進行分離。
12.如權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中所述連接狀態(tài)查詢包括一個SCSI連接查詢。
13.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中利用讀-寫-返回操作來保持所述鏡像之間的一致性和同步性。
14.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中分離不能接入絕大部分節(jié)點的鏡像。
15.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中 所述執(zhí)行所述錯誤類型檢測處理包括分析該錯誤涉及所述鏡像的一個子集還是全部,并且如果所述錯誤涉及所述鏡像的全部,就確定是否所述鏡像中的任意一個已經(jīng)遇到一個介質(zhì)錯誤;并且 所述執(zhí)行一個分離確定處理包括針對處理來識別: 已經(jīng)遇到一個介質(zhì)錯誤的鏡像的一個子集中的鏡像;以及 如果所述鏡像的全部都遇到介質(zhì)錯誤,除了所述鏡像之一外的所有鏡像。
16.如權(quán)利要求9所述的故障處理方法,進一步包括將一個第一節(jié)點的角色轉(zhuǎn)移到一個第二節(jié)點,其中所述第一節(jié)點受到存儲器存取丟失的影響,而所述第二節(jié)點具有足夠的存儲器存取。
17.一種計算系統(tǒng),包括: 一種計算機系統(tǒng),該計算機系統(tǒng)具有連接至一個計算機可讀存儲介質(zhì)并執(zhí)行計算機可讀代碼的一個處理器,該計算機可讀代碼使得該計算機系統(tǒng)執(zhí)行以下操作,這些操作包括: 執(zhí)行一個錯誤類型檢測處理,該處理確定一個錯誤是介質(zhì)錯誤還是連接錯誤; 執(zhí)行一個分離確定處理以建立一個適合的分離場景,其中如果所述連接錯誤涉及全部鏡像,則所述適合的分離場景包括不分離任何鏡像;并且為一個應(yīng)用程序?qū)懖僮鞣祷厥 ?br>
18.如權(quán)利要求17所述的計算機系統(tǒng),其中所述分離確定處理根據(jù)讀-寫-返回處理的結(jié)果來分離一個鏡像。
19.如權(quán)利要求17所述的計算機系統(tǒng),所述分離確定處理包括一個連接狀態(tài)查詢并且根據(jù)所述連接狀態(tài)查詢的結(jié)果對鏡像進行分離。
20.如權(quán)利要求19所述的計算機系統(tǒng),其中所述連接狀態(tài)查詢包括一個SCSI連接查詢。
21.如權(quán)利要求17所述的計算機系統(tǒng),其中利用讀-寫-返回操作保持所述鏡像之間的一致性和同步性。
22.如權(quán)利要求17所述的計算機系統(tǒng),其中分離不能接入絕大部分節(jié)點的鏡像。
23.如權(quán)利要求17所述的計算機系統(tǒng),其中 所述執(zhí)行所述錯誤類型檢測處理包括分析該錯誤涉及所述鏡像的一個子集還是全部,并且如果所述錯誤涉及所述鏡像的全部,就確定是否所述鏡像的任意一個已經(jīng)遇到一個介質(zhì)錯誤;并且 所述分離確定處理包括針對分離來識別: 已經(jīng)遇到一個介質(zhì)錯誤的鏡像的一個子集中的鏡像;并且 如果所述鏡像的全部都遇到介質(zhì)錯誤,除了鏡像之一外的所有鏡像。
24.如權(quán)利要求17所述的計算機系統(tǒng), 進一步包括將一個第一節(jié)點的角色轉(zhuǎn)移到一個第二節(jié)點,其中所述第一節(jié)點受到存儲器存取丟失的影響,而所述第二節(jié)點具有足夠的存儲器存取。
全文摘要
本發(fā)明提供了用于故障處理的系統(tǒng)和方法。在一個實施例中,一種故障處理方法包括執(zhí)行錯誤類型檢測處理,包括確定一個錯誤是介質(zhì)錯誤還是連接錯誤;執(zhí)行分離確定處理以建立一個適合的分離場景,其中如果連接錯誤涉及所有鏡像,則該適合的分離場景包括不分離任何鏡像;并且為一個應(yīng)用程序?qū)懖僮鞣祷厥?。在一個實施例中,分離確定處理根據(jù)讀-寫-返回處理結(jié)果來分離一個鏡像。在一個示例性實現(xiàn)方式中,分離確定處理包括連接狀態(tài)查詢并且根據(jù)連接狀態(tài)查詢的結(jié)果對鏡像進行分離。在一個示例性實現(xiàn)方式中,連接狀態(tài)查詢包括SCSI連接查詢。在一個實施例中,利用讀-寫-返回操作保持鏡像之間的一致性和同步性。
文檔編號G06F11/07GK103180831SQ201180051339
公開日2013年6月26日 申請日期2011年9月16日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者S·馬拉施, R·科普瑞 申請人:賽門鐵克公司