本發(fā)明涉及計算機,特別是涉及一種輸入輸出超時處理方法、裝置及介質(zhì)。
背景技術(shù):
1、在服務(wù)器的運行過程中,可能因為眾多因素導(dǎo)致存在部分輸入/輸出(input/output,io)處理超時的問題。若出現(xiàn)io處理超時,則反映到服務(wù)端,即可能會出現(xiàn)異常告警、導(dǎo)致系統(tǒng)重啟等異常問題。
2、目前,對于超時io的處理方案主要是通過在識別到超時io時,向下層發(fā)送特殊的io指令;響應(yīng)于獨立硬盤冗余陣列(redundant?array?of?independent?disks,raid,簡稱為磁盤陣列)模塊檢測到特殊io,觸發(fā)raid模塊下線;并將各模塊自身的、待由raid模塊處理的io,以離線的方式進行處理后,將離線處理結(jié)果返回至主機;從而避免了用戶主機在下發(fā)io后出現(xiàn)超長時間等待返回結(jié)果的情況。
3、但是,這種方案只能針對于主機下發(fā)的io完整響應(yīng)到下層raid的場景,沒有辦法對由資源不足引發(fā)io超時等特殊場景下的異常io進行處理。在由于資源不足而引發(fā)io超時的場景中,頁資源(pages)會被無法被下刷到下層的臟數(shù)據(jù)占用。所以在主機io運行到一定規(guī)模后,下層就會被“寫滿”,部分卷離線,無法下刷數(shù)據(jù)。進而上述方案中針對下層raid的離線響應(yīng)技術(shù)即不再使用,對于上述的特殊io超時情形無法有效解決,仍然會造成io超長等待返回結(jié)果后系統(tǒng)熱重啟的異常狀態(tài)。
4、所以,現(xiàn)在本領(lǐng)域的技術(shù)人員亟需要一種輸入輸出超時處理方法,用于解決傳統(tǒng)方案無法實現(xiàn)由資源不足而引發(fā)的特殊io超時問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的是提供一種輸入輸出超時處理方法、裝置及介質(zhì),以解決傳統(tǒng)方案無法實現(xiàn)由資源不足而引發(fā)的特殊io超時問題。
2、為解決上述技術(shù)問題,本發(fā)明提供一種輸入輸出超時處理方法,包括:
3、監(jiān)測存儲池中是否有卷離線;
4、若是,則通過全鎖定檢查函數(shù)判斷所述存儲池是否滿足全鎖定條件;
5、若滿足,則將資源異常狀態(tài)位設(shè)置為有效狀態(tài);其中,所述資源異常狀態(tài)位為預(yù)先設(shè)置的狀態(tài)標志位,與所述存儲池對應(yīng);
6、將所述資源異常狀態(tài)位的值上傳至對應(yīng)的所述存儲池中;
7、當所述資源異常狀態(tài)位為有效狀態(tài)時,通過所述存儲池中各卷數(shù)據(jù)端中的狀態(tài)機將各卷的上層路徑輸出設(shè)置為離線狀態(tài),以使卷離線。
8、在一種可能的實施例中,當所述資源異常狀態(tài)位為有效狀態(tài)時,還包括:
9、通過所述存儲池中各卷的控制端,向卷的業(yè)務(wù)端下發(fā)輸入/輸出清理指令,以觸發(fā)所述業(yè)務(wù)端中預(yù)先設(shè)置的卷內(nèi)離線流程;
10、其中,所述卷內(nèi)離線流程包括:
11、對卷內(nèi)各個輸入/輸出隊列上的輸入/輸出進行結(jié)束流程處理,以結(jié)束所述輸入/輸出并使所述輸入/輸出向主機端返回離線錯誤信息;
12、所述輸入/輸出隊列包括:活躍輸入/輸出隊列、非活躍輸入/輸出隊列和等待隊列。
13、在一種可能的實施例中,還包括:
14、依次統(tǒng)計卷內(nèi)前n個流量控制輸入/輸出的輸入/輸出規(guī)模之和,以得到流量總和;其中,n值為正整數(shù),且n值隨統(tǒng)計次數(shù)的遞增而加1;
15、判斷所述流量總和的值是否超過預(yù)設(shè)的流量閾值;
16、若否,則對本次統(tǒng)計的各所述流量控制輸入/輸出設(shè)置流量控制標識;其中,所述流量控制標識為一個特殊符號值,用于指示當前所述流量控制輸入/輸出為正常的所述輸入/輸出;
17、若是,則確定本次統(tǒng)計中新納入統(tǒng)計范圍的所述流量控制輸入/輸出,為首個異常輸入/輸出;并確定首個所述異常輸入/輸出之后的所述流量控制輸入/輸出為所述異常輸入/輸出;
18、將各所述異常輸入/輸出添加至對應(yīng)線程預(yù)先創(chuàng)建的流量控制輸入/輸出鏈表中;
19、所述卷內(nèi)離線流程還包括:
20、遍歷各所述線程對應(yīng)的所述流量控制輸入/輸出鏈表;
21、當遍歷到的所述異常輸入/輸出屬于離線卷時,則對該所述異常輸入/輸出進行所述結(jié)束流程處理,以結(jié)束所述異常輸入/輸出并使所述異常輸入/輸出向主機端返回離線錯誤信息。
22、在一種可能的實施例中,在所述遍歷各所述線程對應(yīng)的所述流量控制輸入/輸出鏈表之后,還包括:
23、當遍歷到的所述異常輸入/輸出不屬于離線卷時,則將當前遍歷到的所述異常輸入/輸出從所述流量控制輸入/輸出鏈表的頭部摘下,并放在所述流量控制輸入/輸出鏈表的尾部。
24、在一種可能的實施例中,還包括:
25、在所述資源異常狀態(tài)位為有效狀態(tài)的所述存儲池被添加盤以完成擴容池之后,判斷是否存在離線的卷重新上線;
26、若存在,則重新返回至所述通過全鎖定檢查函數(shù)判斷所述存儲池是否滿足全鎖定條件的步驟;
27、在所述通過全鎖定檢查函數(shù)判斷所述存儲池是否滿足全鎖定條件之后,還包括:
28、當所述存儲池不滿足所述全鎖定條件時,將所述存儲池中其他離線的卷的所述上層路徑輸出設(shè)置為在線狀態(tài)。
29、在一種可能的實施例中,所述通過全鎖定檢查函數(shù)判斷所述存儲池是否滿足全鎖定條件包括:
30、通過運行路徑切換函數(shù)調(diào)用所述全鎖定檢查函數(shù),以判斷各所述存儲池是否滿足所述全鎖定條件;
31、其中,所述運行路徑切換函數(shù)在所述存儲池中有卷的路徑發(fā)生變化時觸發(fā)運行。
32、在一種可能的實施例中,判斷所述存儲池是否滿足全鎖定條件包括:
33、獲取所述存儲池內(nèi)分配的最大頁資源數(shù)、所述存儲池內(nèi)應(yīng)達到并維持的目標頁資源數(shù);
34、比較所述最大頁資源數(shù)和所述目標頁資源數(shù)的大小關(guān)系,確定其中的較小值作為當前所述存儲池的頁資源代表數(shù);
35、根據(jù)所述頁資源代表數(shù)確定資源閾值;
36、判斷當前所述存儲池已被占用的頁資源數(shù)是否大于所述資源閾值;
37、若是,則判斷所述存儲池滿足所述全鎖定條件;
38、若否,則判斷所述存儲池不滿足所述全鎖定條件。
39、為解決上述技術(shù)問題,本發(fā)明還提供一種輸入輸出超時處理裝置,包括:
40、卷離線監(jiān)測模塊,用于監(jiān)測存儲池中是否有卷離線,若是,則觸發(fā)資源檢測模塊;
41、所述資源檢測模塊,用于通過全鎖定檢查函數(shù)判斷所述存儲池是否滿足全鎖定條件,若滿足,則觸發(fā)狀態(tài)置位模塊;
42、所述狀態(tài)置位模塊,用于將資源異常狀態(tài)位設(shè)置為有效狀態(tài);其中,所述資源異常狀態(tài)位為預(yù)先設(shè)置的狀態(tài)標志位,與所述存儲池對應(yīng);
43、狀態(tài)上傳模塊,用于將所述資源異常狀態(tài)位的值上傳至對應(yīng)的所述存儲池中;
44、卷離線模塊,用于當所述資源異常狀態(tài)位為有效狀態(tài)時,通過所述存儲池中各卷數(shù)據(jù)端中的狀態(tài)機將各卷的上層路徑輸出設(shè)置為離線狀態(tài),以使卷離線。
45、為解決上述技術(shù)問題,本發(fā)明還提供一種輸入輸出超時處理裝置,包括:
46、存儲器,用于存儲計算機程序;
47、處理器,用于執(zhí)行所述計算機程序時實現(xiàn)如上所述的輸入輸出超時處理方法的步驟。
48、為解決上述技術(shù)問題,本發(fā)明還提供一種非易失性存儲介質(zhì),所述非易失性存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上所述的輸入輸出超時處理方法的步驟。
49、本發(fā)明提供的一種輸入輸出超時處理方法,通過檢測存儲池內(nèi)的資源是否充足以控制池內(nèi)卷的路徑狀態(tài),避免出現(xiàn)io超時。具體的,由于在因為資源不足而導(dǎo)致io超時這一場景下,是因為當前存儲池中的精簡(se)池被寫滿;緩存的臟數(shù)據(jù)無法再下發(fā)到下層,使得當前存儲池中的資源使用達到上限;進而導(dǎo)致處理io時因為資源不足而等待資源超時;而當se池被寫滿后,會有部分卷離線。故基于上述原理,本方法通過監(jiān)測存儲池中是否有卷離線實現(xiàn)存儲池資源是否充足的第一步判斷,以提高檢測池資源不足的效率和準確性;若有卷離線,則通過全鎖定檢查(is?all?pinned)函數(shù)判斷當前存儲池是否滿足全鎖定條件;全鎖定檢查函數(shù)原本用于判斷空閑列表(free-list)和替換器(replacer)是否都為空,若空閑列表和替換器均為空,則表示當前存儲池中沒有空閑的頁資源,也即滿足全鎖定條件;當滿足全鎖定條件時,可確定當前存儲池中會因為資源不足導(dǎo)致io超時。
50、故本方法通過設(shè)置存儲池的資源異常狀態(tài)位并上傳,以指示存儲池中各卷數(shù)據(jù)端中的狀態(tài)機將存儲池中所有卷的上層路徑輸出設(shè)置為離線狀態(tài),以使這些卷對外離線,使這些卷不再接收io,也就不會因為沒有資源處理io而導(dǎo)致io超時。由此可見,本方法通過檢測存儲池中是否出現(xiàn)資源不足的問題,并在資源不足時間當前存儲池中的所有卷離線,阻止后續(xù)io在這些資源不足的卷上處理,從而避免產(chǎn)生超時io,可以有效地避免因為資源不足而導(dǎo)致的io超時問題。
51、本發(fā)明提供的輸入輸出超時處理裝置、及非易失性存儲介質(zhì),與上述方法對應(yīng),效果同上。