本技術涉及信息,特別是涉及一種故障處理方法、裝置、計算機設備、計算機可讀存儲介質和計算機程序產(chǎn)品。
背景技術:
1、一直以來,保證分布式存儲系統(tǒng)的高可用性都是一項復雜而關鍵的任務,來使得系統(tǒng)能夠在面對硬件故障、軟件錯誤、網(wǎng)絡問題等各種突發(fā)狀況時,仍然保持穩(wěn)定運行和數(shù)據(jù)可訪問性。為此,傳統(tǒng)分布式存儲系統(tǒng)采用了多種技術手段,如數(shù)據(jù)冗余、多副本存儲、跨區(qū)域復制和自動故障恢復等。
2、然而,傳統(tǒng)的故障處理方法,故障處理后的分布式存儲系統(tǒng)仍存在可用性較低的問題。
技術實現(xiàn)思路
1、基于此,有必要針對上述技術問題,提供一種能夠提高分布式存儲系統(tǒng)的可用性的故障處理方法、裝置、計算機設備、計算機可讀存儲介質和計算機程序產(chǎn)品。
2、第一方面,本技術提供了一種故障處理方法,應用于分布式存儲系統(tǒng)的接入層;所述方法包括:
3、獲取錯誤信息,并確定所述錯誤信息的錯誤類型和錯誤來源;
4、根據(jù)所述錯誤類型確定所述錯誤信息的故障等級;
5、根據(jù)所述故障等級和所述錯誤來源,確定與所述錯誤信息相關的故障對象;所述故障對象包括故障磁盤和故障數(shù)據(jù)集合中的至少一種,所述故障數(shù)據(jù)集合是代理服務的緩存中與所述錯誤信息相關的數(shù)據(jù)集合,所述代理服務用于完成所述接入層的功能;
6、將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽。
7、在其中一個實施例中,所述根據(jù)所述錯誤類型確定所述錯誤信息的故障等級,包括:
8、若所述錯誤類型表征數(shù)據(jù)塊發(fā)生錯誤,則確定所述錯誤信息的故障等級是數(shù)據(jù)塊級別故障;
9、若所述錯誤類型表征磁盤發(fā)生錯誤,則確定所述錯誤信息的故障等級是磁盤級別故障;
10、若所述錯誤類型表征服務進程發(fā)生錯誤,則確定所述錯誤信息的故障等級是進程級別故障。
11、在其中一個實施例中,所述根據(jù)所述故障等級和所述錯誤來源,確定與所述錯誤信息相關的故障對象,包括:
12、若所述故障等級是數(shù)據(jù)塊級別故障,則確定與所述錯誤信息相關的第一對象,所述第一對象包括所述代理服務的緩存中與所述錯誤信息相關、且發(fā)生錯誤的故障數(shù)據(jù)集合;
13、若所述故障等級是磁盤級別故障,則確定與所述錯誤信息相關的第二對象,所述第二對象包括所述錯誤來源所在的第一磁盤,以及所述代理服務的緩存中與所述錯誤信息相關、且與所述第一磁盤關聯(lián)的故障數(shù)據(jù)集合;
14、若所述故障等級是進程級別故障,則確定與所述錯誤信息相關的第三對象,所述第三對象包括與所述錯誤來源處于同一數(shù)據(jù)存儲服務進程下的第二磁盤,以及所述代理服務的緩存中與所述錯誤信息相關、且與所述第二磁盤關聯(lián)的故障數(shù)據(jù)集合;所述第一對象、所述第二對象和所述第三對象均屬于故障對象。
15、在其中一個實施例中,所述分布式存儲系統(tǒng)還包括控制層;所述將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽之后,還包括:
16、響應于外部寫請求,檢查所述代理服務緩存的數(shù)據(jù)組集合中的正常數(shù)據(jù)組的數(shù)量是否充足;
17、若是,則從所述數(shù)據(jù)組集合中確定不處于所述故障名單內(nèi)的目標數(shù)據(jù)組;
18、若否,則排除所述故障名單內(nèi)的故障磁盤,并向所述控制層請求分配未受所述錯誤信息影響的目標數(shù)據(jù)組;
19、向所述目標數(shù)據(jù)組發(fā)起代理寫請求。
20、在其中一個實施例中,所述分布式存儲系統(tǒng)還包括控制層和存儲層;所述將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽之后,還包括:
21、響應于外部讀請求,檢查所述外部讀請求對應的待讀取數(shù)據(jù)所在的數(shù)據(jù)組是否在所述代理服務的緩存中命中;
22、若是,則從所述緩存中選擇未處于所述故障名單中的目標數(shù)據(jù)塊;
23、若否,則向所述控制層請求指定數(shù)據(jù)組信息,將所述指定數(shù)據(jù)組信息加入所述代理服務的緩存中,并所述緩存中選擇未處于所述故障名單中的目標數(shù)據(jù)塊;
24、向所述存儲層發(fā)起對所述目標數(shù)據(jù)塊的讀請求。
25、在其中一個實施例中,所述分布式存儲系統(tǒng)還包括控制層和存儲層;所述方法還包括:
26、若所述故障名單中的第一故障對象觸發(fā)控制層的故障處理功能,則獲取所述控制層發(fā)送的更新或刪除故障對象的通知;按照所述通知,將所述故障名單中的所述第一故障對象進行更新或刪除,以配合所述控制層進行故障處理;
27、若所述故障名單中的第二故障對象未觸發(fā)控制層的故障處理功能,且所述第二故障對象在所述故障名單中的時長達到生存時長,則將所述第二故障對象從所述故障名單中刪除。
28、第二方面,本技術還提供了一種故障處理裝置,應用于分布式存儲系統(tǒng)的接入層;所述裝置包括:
29、錯誤類型和錯誤來源確定模塊,用于獲取錯誤信息,并確定所述錯誤信息的錯誤類型和錯誤來源;
30、故障等級確定模塊,用于根據(jù)所述錯誤類型確定所述錯誤信息的故障等級;
31、故障對象確定模塊,用于根據(jù)所述故障等級和所述錯誤來源,確定與所述錯誤信息相關的故障對象;所述故障對象包括故障磁盤和故障數(shù)據(jù)集合中的至少一種,所述故障數(shù)據(jù)集合是代理服務的緩存中與所述錯誤信息相關的數(shù)據(jù)集合,所述代理服務用于完成所述接入層的功能;
32、故障屏蔽模塊,用于將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽。
33、第三方面,本技術還提供了一種計算機設備,包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)以下步驟:
34、獲取錯誤信息,并確定所述錯誤信息的錯誤類型和錯誤來源;
35、根據(jù)所述錯誤類型確定所述錯誤信息的故障等級;
36、根據(jù)所述故障等級和所述錯誤來源,確定與所述錯誤信息相關的故障對象;所述故障對象包括故障磁盤和故障數(shù)據(jù)集合中的至少一種,所述故障數(shù)據(jù)集合是代理服務的緩存中與所述錯誤信息相關的數(shù)據(jù)集合,所述代理服務用于完成所述接入層的功能;
37、將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽。
38、第四方面,本技術還提供了一種計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)以下步驟:
39、獲取錯誤信息,并確定所述錯誤信息的錯誤類型和錯誤來源;
40、根據(jù)所述錯誤類型確定所述錯誤信息的故障等級;
41、根據(jù)所述故障等級和所述錯誤來源,確定與所述錯誤信息相關的故障對象;所述故障對象包括故障磁盤和故障數(shù)據(jù)集合中的至少一種,所述故障數(shù)據(jù)集合是代理服務的緩存中與所述錯誤信息相關的數(shù)據(jù)集合,所述代理服務用于完成所述接入層的功能;
42、將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽。
43、第五方面,本技術還提供了一種計算機程序產(chǎn)品,包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)以下步驟:
44、獲取錯誤信息,并確定所述錯誤信息的錯誤類型和錯誤來源;
45、根據(jù)所述錯誤類型確定所述錯誤信息的故障等級;
46、根據(jù)所述故障等級和所述錯誤來源,確定與所述錯誤信息相關的故障對象;所述故障對象包括故障磁盤和故障數(shù)據(jù)集合中的至少一種,所述故障數(shù)據(jù)集合是代理服務的緩存中與所述錯誤信息相關的數(shù)據(jù)集合,所述代理服務用于完成所述接入層的功能;
47、將所述故障對象加入故障名單中,并確定所述故障對象在所述故障名單中的生存時長,使得所述代理服務在所述生存時長內(nèi)進行數(shù)據(jù)處理時對所述故障對象進行故障屏蔽。
48、上述故障處理方法、裝置、計算機設備、計算機可讀存儲介質和計算機程序產(chǎn)品,應用于分布式存儲系統(tǒng)的接入層;獲取錯誤信息,并確定錯誤信息的錯誤類型和錯誤來源;根據(jù)錯誤類型確定錯誤信息的故障等級;根據(jù)故障等級和錯誤來源,確定與錯誤信息相關的故障對象,該故障對象包括故障磁盤和故障數(shù)據(jù)集合中的至少一種,故障數(shù)據(jù)集合是代理服務的緩存中與錯誤信息相關的數(shù)據(jù)集合,代理服務用于完成接入層的功能;那么,將故障對象加入故障名單中,并確定故障對象在故障名單中的生存時長,使得代理服務在生存時長內(nèi)進行數(shù)據(jù)處理時對故障對象進行故障屏蔽,也即通過分布式存儲系統(tǒng)的接入層屏蔽故障,可以在直接與外部進行通信的位置(接入層)攔截故障影響,減少外部對分布式存儲系統(tǒng)(集群)故障的感知,將故障影響范圍控制在分布式存儲系統(tǒng)(集群)內(nèi)部不向外擴散,使得該分布式存儲系統(tǒng)的不受局部故障的影響,提高了該分布式存儲系統(tǒng)的整體可用性。