本申請涉及存儲,特別是涉及一種raid數(shù)據(jù)處理方法、系統(tǒng)和電子裝置。
背景技術(shù):
1、raid(redundant?arrays?of?independent?disks,獨(dú)立冗余磁盤陣列)由多塊獨(dú)立磁盤組合成一個更大容量的磁盤組,通過磁盤并發(fā)提高性能,利用數(shù)據(jù)冗余提高數(shù)據(jù)安全性。raid的工作原理是,通過預(yù)設(shè)規(guī)則構(gòu)造出冗余數(shù)據(jù)作為校驗(yàn)數(shù)據(jù),當(dāng)有部分?jǐn)?shù)據(jù)丟失時,通過逆運(yùn)算從遺留數(shù)據(jù)中重新計(jì)算出丟失部分的數(shù)據(jù)。所以,為了能逆運(yùn)算找回丟失的數(shù)據(jù),就需要保證該冗余的校驗(yàn)數(shù)據(jù)跟正常數(shù)據(jù)之間符合預(yù)設(shè)規(guī)則。
2、在raid剛創(chuàng)建或者raid在使用過程中發(fā)生掉盤并加入新盤時,內(nèi)部的數(shù)據(jù)是不符合這個規(guī)則的。而按這個規(guī)則進(jìn)行校驗(yàn)數(shù)據(jù)計(jì)算和寫入的過程,叫做raid同步。一般情況下,同步是需要一段時間的,并且希望同步過程越快完成越好。但每塊磁盤的讀寫帶寬是有限的,同步過程會占用一部分帶寬,并且造成磁頭的跳轉(zhuǎn),會影響正常業(yè)務(wù)的帶寬。如果同步速度太快,可能會造成正常業(yè)務(wù)無法正常寫入raid;如果同步速度太慢,會造成同步周期太長,萬一在同步期間有磁盤損壞,可能會造成raid失效而丟失數(shù)據(jù)。
3、目前對這個問題的處理,通常是不太智能的。如linux內(nèi)核中的raid,只是提供最小速度和最大速度的設(shè)置,然后控制同步速度處于最小速度和最大速度的區(qū)間內(nèi)。這樣的處理是有缺陷的,如速度設(shè)置太小,會造成同步速度太慢,同步周期太長;如速度設(shè)置太大,會造成同步io任務(wù)占用磁盤帶寬太大,影響業(yè)務(wù)io任務(wù)。
4、針對相關(guān)技術(shù)中存在業(yè)務(wù)io任務(wù)和同步io任務(wù)之間的raid磁盤帶寬調(diào)度不合理的問題,目前還沒有提出有效的解決方案。
技術(shù)實(shí)現(xiàn)思路
1、在本實(shí)施例中提供了一種raid數(shù)據(jù)處理方法、系統(tǒng)和電子裝置,以解決相關(guān)技術(shù)中業(yè)務(wù)io任務(wù)和同步io任務(wù)之間的磁盤帶寬調(diào)度不合理的問題。
2、第一個方面,在本實(shí)施例中提供了一種raid數(shù)據(jù)處理方法,包括:
3、判斷獨(dú)立冗余磁盤陣列(raid)中的內(nèi)存緩沖區(qū)內(nèi)是否存在業(yè)務(wù)io任務(wù);
4、在判斷到所述獨(dú)立冗余磁盤陣列中的內(nèi)存緩沖區(qū)內(nèi)存在業(yè)務(wù)io任務(wù)的情況下,將所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配至所述獨(dú)立冗余磁盤陣列的執(zhí)行模塊;
5、當(dāng)所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配完畢時,生成并分配同步io任務(wù)至所述執(zhí)行模塊,其中,所述執(zhí)行模塊用于執(zhí)行所述業(yè)務(wù)io任務(wù)和所述同步io任務(wù),將所述業(yè)務(wù)io任務(wù)和所述同步io任務(wù)讀寫至存儲區(qū)域。
6、在其中一些實(shí)施例中,判斷獨(dú)立冗余磁盤陣列(raid)中的內(nèi)存緩沖區(qū)內(nèi)是否存在業(yè)務(wù)io任務(wù),包括:
7、獲取所述內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的計(jì)數(shù)值;
8、判斷所述內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的計(jì)數(shù)值是否大于0;
9、若判斷到所述內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的計(jì)數(shù)值大于0,則將所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配至所述執(zhí)行模塊。
10、在其中一些實(shí)施例中,在將所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配至所述執(zhí)行模塊之后,所述方法還包括:
11、更新所述內(nèi)存緩沖區(qū)內(nèi)所述業(yè)務(wù)io任務(wù)的計(jì)數(shù)值。
12、在其中一些實(shí)施例中,當(dāng)所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配完畢時,生成并分配同步io任務(wù)至所述執(zhí)行模塊,包括:
13、將所述同步io任務(wù)基于預(yù)設(shè)的窗口值分配至所述執(zhí)行模塊。
14、在其中一些實(shí)施例中,當(dāng)所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配完畢時,生成并分配同步io任務(wù)至所述執(zhí)行模塊,包括:
15、獲取所述同步io任務(wù)在每個窗口值的平均執(zhí)行時間;
16、判斷所述同步io任務(wù)在每個窗口值的平均執(zhí)行時間是否大于時間閾值;
17、若判斷到所述同步io任務(wù)在每個窗口值的平均執(zhí)行時間不大于所述時間閾值,則將所述同步io任務(wù)基于當(dāng)前窗口值分配至所述執(zhí)行模塊。
18、在其中一些實(shí)施例中,所述方法還包括:
19、若判斷到所述同步io任務(wù)在每個窗口值的平均執(zhí)行時間大于所述時間閾值,則暫停生成和分配當(dāng)前窗口值的同步io任務(wù),并把所述同步io任務(wù)的平均執(zhí)行時間設(shè)定為0。
20、在其中一些實(shí)施例中,在將所述同步io任務(wù)基于預(yù)設(shè)的窗口值分配至所述執(zhí)行模塊之后,所述方法還包括:
21、獲取所述內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的計(jì)數(shù)值;
22、判斷所述內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的計(jì)數(shù)值是否大于0;
23、若判斷到所述內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的計(jì)數(shù)值大于0,則暫停生成并分配下一個窗口值的同步io任務(wù)至所述執(zhí)行模塊,并將所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配至所述執(zhí)行模塊。
24、在其中一些實(shí)施例中,在判斷獨(dú)立冗余磁盤陣列(raid)中的內(nèi)存緩沖區(qū)內(nèi)是否存在業(yè)務(wù)io任務(wù)之前,方法還包括:
25、當(dāng)獨(dú)立冗余磁盤陣列接收到業(yè)務(wù)io任務(wù)時,將業(yè)務(wù)io任務(wù)發(fā)送至內(nèi)存緩沖區(qū)。
26、第二個方面,在本實(shí)施例中提供了一種raid數(shù)據(jù)處理系統(tǒng),包括:內(nèi)存緩沖區(qū)、調(diào)度模塊、執(zhí)行模塊和存儲區(qū)域;其中,
27、所述內(nèi)存緩沖區(qū)用于緩存業(yè)務(wù)io任務(wù);
28、所述調(diào)度模塊分別耦合至所述內(nèi)存緩沖區(qū)和所述執(zhí)行模塊,用于執(zhí)行上述第一個方面所述的raid數(shù)據(jù)處理方法;
29、所述執(zhí)行模塊分別耦合至所述調(diào)度模塊和所述存儲區(qū)域,用于執(zhí)行所述業(yè)務(wù)io任務(wù)和所述同步io任務(wù),將所述業(yè)務(wù)io任務(wù)和所述同步io任務(wù)讀寫至所述存儲區(qū)域。
30、第三個方面,在本實(shí)施例中提供了一種電子裝置,包括存儲器和處理器,所述存儲器中存儲有計(jì)算機(jī)程序,所述處理器被設(shè)置為運(yùn)行所述計(jì)算機(jī)程序以執(zhí)行上述第一個方面所述的raid數(shù)據(jù)處理方法。
31、上述raid數(shù)據(jù)處理方法、系統(tǒng)和電子裝置,通過在raid中設(shè)置內(nèi)存緩沖區(qū)來緩存業(yè)務(wù)io任務(wù),根據(jù)內(nèi)存緩沖區(qū)內(nèi)業(yè)務(wù)io任務(wù)的存量情況,調(diào)度業(yè)務(wù)io任務(wù)和同步io任務(wù),在保證業(yè)務(wù)io任務(wù)正常完成的同時,能讓同步io任務(wù)充分利用raid的磁盤帶寬,以最大程度地發(fā)揮磁盤的性能,達(dá)到同步速度最大化,提升同步性能,解決了業(yè)務(wù)io任務(wù)和同步io任務(wù)之間的raid磁盤帶寬調(diào)度不合理的問題,提升了同步io任務(wù)的自適應(yīng)執(zhí)行速度。
32、本申請的一個或多個實(shí)施例的細(xì)節(jié)在以下附圖和描述中提出,以使本申請的其他特征、目的和優(yōu)點(diǎn)更加簡明易懂。
1.一種raid數(shù)據(jù)處理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的raid數(shù)據(jù)處理方法,其特征在于,判斷獨(dú)立冗余磁盤陣列(raid)中的內(nèi)存緩沖區(qū)內(nèi)是否存在業(yè)務(wù)io任務(wù),包括:
3.根據(jù)權(quán)利要求2所述的raid數(shù)據(jù)處理方法,其特征在于,在將所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配至所述執(zhí)行模塊之后,所述方法還包括:
4.根據(jù)權(quán)利要求1所述的raid數(shù)據(jù)處理方法,其特征在于,當(dāng)所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配完畢時,生成并分配同步io任務(wù)至所述執(zhí)行模塊,包括:
5.根據(jù)權(quán)利要求4所述的raid數(shù)據(jù)處理方法,其特征在于,當(dāng)所述內(nèi)存緩沖區(qū)內(nèi)的業(yè)務(wù)io任務(wù)分配完畢時,生成并分配同步io任務(wù)至所述執(zhí)行模塊,包括:
6.根據(jù)權(quán)利要求5所述的raid數(shù)據(jù)處理方法,其特征在于,所述方法還包括:
7.根據(jù)權(quán)利要求4所述的raid數(shù)據(jù)處理方法,其特征在于,在將所述同步io任務(wù)基于預(yù)設(shè)的窗口值分配至所述執(zhí)行模塊之后,所述方法還包括:
8.根據(jù)權(quán)利要求1所述的raid數(shù)據(jù)處理方法,其特征在于,在判斷獨(dú)立冗余磁盤陣列(raid)中的內(nèi)存緩沖區(qū)內(nèi)是否存在業(yè)務(wù)io任務(wù)之前,所述方法還包括:
9.一種raid數(shù)據(jù)處理系統(tǒng),其特征在于,包括:內(nèi)存緩沖區(qū)、調(diào)度模塊、執(zhí)行模塊和存儲區(qū)域;其中,
10.一種電子裝置,包括存儲器和處理器,其特征在于,所述存儲器中存儲有計(jì)算機(jī)程序,所述處理器被設(shè)置為運(yùn)行所述計(jì)算機(jī)程序以執(zhí)行權(quán)利要求1至7中任一項(xiàng)所述的raid數(shù)據(jù)處理方法。