一種順序流識別的方法以及裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種順序流識別的方法以及裝置,其中,所述方法包括:查找當前I/O請求所訪問的數(shù)據(jù)所處的目標存儲塊;在特征位圖中查找出所述目標存儲塊的I/O訪問特征,所述特征位圖用于標識所述目標存儲塊的I/O訪問特征;當查找出所述目標存儲塊的I/O訪問特征為順序訪問特征時,識別所述當前I/O請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/O請求查找順序流尾。采用本發(fā)明,可快速對順序流進行識別,并且可以減少預(yù)取浪費。
【專利說明】一種順序流識別的方法以及裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,尤其涉及一種順序流識別的方法以及裝置。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中的順序流識別一般是通過前后請求的距離進行判斷,且每個請求都進行判斷,這種方法雖然現(xiàn)實簡單,但是容易出現(xiàn)誤識別,且對順序流識別不夠及時,即無法快速找到順序流頭,從而造成了更多的磁盤訪問負載;同時,現(xiàn)有技術(shù)中的存儲系統(tǒng)也無法及時的識別出順序流尾,從而容易造成預(yù)取浪費的現(xiàn)象。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種順序流識別的方法以及裝置,可快速對順序流進行識別,并且可以減少預(yù)取浪費。
[0004]本發(fā)明第一方面提供了一種順序流識別的方法,包括:
[0005]查找當前I/O請求所訪問的數(shù)據(jù)所處的目標存儲塊;
[0006]在特征位圖中查找出所述目標存儲塊的I/O訪問特征,所述特征位圖用于標識所述目標存儲塊的I/o訪問特征;
[0007]當查找出所述目標存儲塊的I/O訪問特征為順序訪問特征時,識別所述當前I/O請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/o請求查找順序流尾。
[0008]在第一種可能的實現(xiàn)方式中,所述當查找出所述目標存儲塊的I/O訪問特征為順序訪問特征時,識別所述當前I/o請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/o請求查找順序流尾,包括:
[0009]當查找出所述目標存儲塊的I/o訪問特征為順序訪問特征時,識別所述當前I/O請求所訪問的數(shù)據(jù)的起始位置為順序流頭;
[0010]根據(jù)所述當前I/O請求所訪問的數(shù)據(jù)長度加上預(yù)設(shè)的預(yù)取長度查找初始順序流尾;
[0011]當檢測到所述初始順序流尾不處于所述目標存儲塊中時,判斷所述初始順序流尾所處于的存儲塊是否與所述目標存儲塊為連續(xù)關(guān)系;
[0012]若判斷為是,則確定所述初始順序流尾為當前順序流中的順序流尾;
[0013]否則,將所述初始順序流尾重新定位至所述目標存儲塊的尾部地址,并確定重新定位后的初始順序流尾為當前順序流中的順序流尾。
[0014]結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,還包括:
[0015]對包含有所述順序流頭和所述順序流尾的當前順序流進行順序預(yù)?。?br>
[0016]其中,所述對包含有所述順序流頭和所述順序流尾的當前順序流進行順序預(yù)取,具體包括:
[0017]從所述順序流頭開始預(yù)取,并將當前順序流的所述順序流尾標識為預(yù)讀標記,所述當前順序流包括所述順序流頭和所述順序流尾;
[0018]當命中所述預(yù)讀標記時,判斷在所述順序流尾的位置上加上所述預(yù)設(shè)的預(yù)取長度后是否存在新的順序流尾;
[0019]若判斷為是,則根據(jù)所述新的順序流尾確定新的當前順序流,并對所述新的當前順序流進行順序預(yù)?。?br>
[0020]若判斷為否,則停止對所述當前順序流進行順序預(yù)取。
[0021]結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,在所述查找當前I/o請求所訪問的數(shù)據(jù)所處的目標存儲塊的步驟之前,還包括:
[0022]識別存儲塊的I/O訪問特征;
[0023]將識別出的所述存儲塊的I/O訪問特征添加或更新至特征位圖中。
[0024]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述識別存儲塊的I/o訪問特征,包括:
[0025]當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的歷史I/O請求個數(shù)大于或等于預(yù)設(shè)的第一數(shù)量閾值,且各個所述歷史I/o請求之間的間距小于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征;
[0026]當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/O請求個數(shù)小于預(yù)設(shè)的第二數(shù)量閾值,且各個所述歷史I/o請求之間的間距大于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征;
[0027]當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/O請求個數(shù)大于或等于預(yù)設(shè)的第二數(shù)量閾值,且小于預(yù)設(shè)的第一數(shù)量閾值時,標示所述存儲塊的I/O訪問特征為暫未識別;其中,所述第一數(shù)量閾值大于所述第二數(shù)量閾值。
[0028]結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,還包括:
[0029]當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率大于或等于預(yù)設(shè)的第一覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征;
[0030]當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率小于或等于預(yù)設(shè)的第二覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征;
[0031]當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率大于預(yù)設(shè)的第二覆蓋率閾值,且小于預(yù)設(shè)的第一覆蓋率閾值時,標示所述存儲塊的I/o訪問特征為暫未識別;其中,所述第一覆蓋率閾值大于所述第二覆蓋率閾值。
[0032]結(jié)合第一方面的第四種可能的實現(xiàn)方式,或第一方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,還包括:
[0033]在識別出所述存儲塊的I/O訪問特征后,記錄所述存儲塊的頭部地址的最新訪問時間戳和所述存儲塊的尾部地址的最新訪問時間戳;
[0034]當檢測到兩個相鄰的存儲塊的I/O訪問特征均為順序訪問特征時,進一步判斷先被訪問的存儲塊的尾部地址的最新訪問時間戳與后被訪問的存儲塊的頭部地址的最新訪問時間戳之間的時長是否小于預(yù)設(shè)的時長閾值;
[0035]若判斷為是,則確定所述兩個相鄰的存儲塊之間為連續(xù)關(guān)系;
[0036]若判斷為否,則確定所述兩個相鄰的存儲塊之間為不連續(xù)關(guān)系。
[0037]結(jié)合第一方面的第三種可能的實現(xiàn)方式,或第一方面的第四種可能的實現(xiàn)方式,或第一方面的第五種可能的實現(xiàn)方式,或第一方面的第六種可能的實現(xiàn)方式,在第七種可能的實現(xiàn)方式中,在所述識別存儲塊的I/O訪問特征的步驟之前,還包括:
[0038]判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù)是否在本地內(nèi)存中,所述元數(shù)據(jù)至少包括所述存儲塊中所述歷史I/o請求個數(shù)和所述歷史I/o請求的覆蓋率;
[0039]若判斷為在所述本地內(nèi)存中,則更新所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù);
[0040]當更新后的元數(shù)據(jù)所對應(yīng)的所述存儲塊滿足啟動識別條件時,執(zhí)行所述識別存儲塊的I/o訪問特征。
[0041]結(jié)合第一方面的第七種可能的實現(xiàn)方式,在第八種可能的實現(xiàn)方式中,還包括:
[0042]當判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù)不在本地內(nèi)存中時,則進一步判斷所述本地內(nèi)存中的所述元數(shù)據(jù)的個數(shù)是否達到預(yù)設(shè)的元數(shù)據(jù)閾值;
[0043]若判斷為未達到預(yù)設(shè)的元數(shù)據(jù)閾值,則生成所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù),并將所生成的元數(shù)據(jù)存儲于所述本地內(nèi)存中,以便于更新所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù);
[0044]若判斷為達到預(yù)設(shè)的元數(shù)據(jù)閾值時,則從所述本地內(nèi)存中刪除啟動識別時間戳最靠前的元數(shù)據(jù),以便于在所述本地內(nèi)存中生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù);
[0045]計算被刪除的元數(shù)據(jù)所對應(yīng)的存儲塊的I/O訪問特征,以將計算出的所述I/O訪問特征添加或更新至特征位圖中。
[0046]本發(fā)明第二方面提供了一種順序流識別的裝置,包括:
[0047]存儲塊查找模塊,用于查找當前I/O請求所訪問的數(shù)據(jù)所處的目標存儲塊;
[0048]訪問特征查找模塊,用于在特征位圖中查找出所述目標存儲塊的I/O訪問特征,所述特征位圖用于標識所述目標存儲塊的I/o訪問特征;
[0049]識別查找模塊,用于當查找出所述目標存儲塊的I/O訪問特征為順序訪問特征時,識別所述當前I/o請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/O請求查找順序流尾。
[0050]在第一種可能的實現(xiàn)方式中,所述識別查找模塊包括:
[0051]順序流頭識別單元,用于當查找出所述目標存儲塊的I/O訪問特征為順序訪問特征時,識別所述當前I/o請求所訪問的數(shù)據(jù)的起始位置為順序流頭;
[0052]順序流尾查找單元,用于根據(jù)所述當前I/O請求所訪問的數(shù)據(jù)長度加上預(yù)設(shè)的預(yù)取長度查找初始順序流尾;
[0053]順序流尾判斷單元,用于當檢測到所述初始順序流尾不處于所述目標存儲塊中時,判斷所述初始順序流尾所處于的存儲塊是否與所述目標存儲塊為連續(xù)關(guān)系;
[0054]第一確定單元,用于若所述順序流尾判斷單元判斷為是,則確定所述初始順序流尾為當前順序流中的順序流尾;
[0055]第二確定單元,用于若所述順序流尾判斷單元判斷為否,則將所述初始順序流尾重新定位至所述目標存儲塊的尾部地址,并確定重新定位后的初始順序流尾為當前順序流中的順序流尾。
[0056]結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,還包括:
[0057]預(yù)取模塊,用于對包含有所述順序流頭和所述順序流尾的當前順序流進行順序預(yù)取;
[0058]其中,所述預(yù)取模塊包括:
[0059]預(yù)讀標識單元,用于從所述順序流頭開始預(yù)取,并將當前順序流的所述順序流尾標識為預(yù)讀標記,所述當前順序流包括所述順序流頭和所述順序流尾;
[0060]更新判斷單元,用于當命中所述預(yù)讀標記時,判斷在所述順序流尾的位置上加上所述預(yù)設(shè)的預(yù)取長度后是否存在新的順序流尾;
[0061]順序流更新單元,用于若所述更新判斷單元判斷為是,則根據(jù)所述新的順序流尾確定新的當前順序流,并對所述新的當前順序流進行順序預(yù)??;
[0062]停止單元,用于若所述更新判斷單元判斷為否,則停止對所述當前順序流進行順序預(yù)取。
[0063]結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,或第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,還包括:
[0064]訪問特征識別模塊,用于識別存儲塊的I/O訪問特征;
[0065]添加更新模塊,用于將識別出的所述存儲塊的I/O訪問特征添加或更新至特征位圖中。
[0066]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述訪問特征識別模塊包括:
[0067]特征識別單元,用于當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的歷史I/O請求個數(shù)大于或等于預(yù)設(shè)的第一數(shù)量閾值,且各個所述歷史I/o請求之間的間距小于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征;
[0068]所述特征識別單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/o請求個數(shù)小于預(yù)設(shè)的第二數(shù)量閾值,且各個所述歷史I/O請求之間的間距大于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征;
[0069]特征標示單元,用于當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/O請求個數(shù)大于或等于預(yù)設(shè)的第二數(shù)量閾值,且小于預(yù)設(shè)的第一數(shù)量閾值時,標示所述存儲塊的I/o訪問特征為暫未識別;其中,所述第一數(shù)量閾值大于所述第二數(shù)量閾值。
[0070]結(jié)合第二方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,
[0071]所述特征識別單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率大于或等于預(yù)設(shè)的第一覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征;
[0072]所述特征識別單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率小于或等于預(yù)設(shè)的第二覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征;
[0073]所述特征標示單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率大于預(yù)設(shè)的第二覆蓋率閾值,且小于預(yù)設(shè)的第一覆蓋率閾值時,標示所述存儲塊的I/O訪問特征為暫未識別;其中,所述第一覆蓋率閾值大于所述第二覆蓋率閾值。
[0074]結(jié)合第二方面的第四種可能的實現(xiàn)方式,或第二方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,還包括:
[0075]記錄模塊,用于在識別出所述存儲塊的I/O訪問特征后,記錄所述存儲塊的頭部地址的最新訪問時間戳和所述存儲塊的尾部地址的最新訪問時間戳;
[0076]時長判斷模塊,用于當檢測到兩個相鄰的存儲塊的I/O訪問特征均為順序訪問特征時,進一步判斷先被訪問的存儲塊的尾部地址的最新訪問時間戳與后被訪問的存儲塊的頭部地址的最新訪問時間戳之間的時長是否小于預(yù)設(shè)的時長閾值;
[0077]關(guān)系確定模塊,用于若所述時長判斷模塊判斷為是,則確定所述兩個相鄰的存儲塊之間為連續(xù)關(guān)系;
[0078]所述關(guān)系確定模塊,還用于若所述時長判斷模塊判斷為否,則確定所述兩個相鄰的存儲塊之間為不連續(xù)關(guān)系。
[0079]結(jié)合第二方面的第三種可能的實現(xiàn)方式,或第二方面的第四種可能的實現(xiàn)方式,或第二方面的第五種可能的實現(xiàn)方式,或第二方面的第六種可能的實現(xiàn)方式,在第七種可能的實現(xiàn)方式中,還包括:
[0080]元數(shù)據(jù)判斷模塊,用于判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù)是否在本地內(nèi)存中,所述元數(shù)據(jù)至少包括所述存儲塊中所述歷史I/o請求個數(shù)和所述歷史I/O請求的覆蓋率;
[0081]元數(shù)據(jù)更新模塊,用于若所述元數(shù)據(jù)判斷模塊判斷為在所述本地內(nèi)存中,則更新所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù);
[0082]通知模塊,用于當所述元數(shù)據(jù)更新模塊更新后的元數(shù)據(jù)所對應(yīng)的所述存儲塊滿足啟動識別條件時,通知所述訪問特征識別模塊識別存儲塊的I/o訪問特征。
[0083]結(jié)合第二方面的第七種可能的實現(xiàn)方式,在第八種可能的實現(xiàn)方式中,還包括:
[0084]個數(shù)判斷模塊,用于當所述元數(shù)據(jù)判斷模塊判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù)不在本地內(nèi)存中時,則進一步判斷所述本地內(nèi)存中的所述元數(shù)據(jù)的個數(shù)是否達到預(yù)設(shè)的元數(shù)據(jù)閾值;
[0085]生成存儲模塊,用于若所述個數(shù)判斷模塊判斷為未達到預(yù)設(shè)的元數(shù)據(jù)閾值,則生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù),并將所生成的元數(shù)據(jù)存儲于所述本地內(nèi)存中,以便于更新所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù);
[0086]刪除模塊,用于若所述個數(shù)判斷模塊判斷為達到預(yù)設(shè)的元數(shù)據(jù)閾值時,則從所述本地內(nèi)存中刪除啟動識別時間戳最靠前的元數(shù)據(jù),以便于在所述本地內(nèi)存中生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù);
[0087]特征計算模塊,用于計算被刪除的元數(shù)據(jù)所對應(yīng)的存儲塊的I/O訪問特征,以將計算出的所述I/O訪問特征添加或更新至特征位圖中。
[0088]由上可見,本發(fā)明實施例在查找出當前I/O請求所訪問的數(shù)據(jù)所處的目標存儲塊的I/O訪問特征為順序訪問特征時,可以快速識別出所述當前I/O請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并可以根據(jù)所述當前I/o請求查找順序流尾,即可提前感知順序流的結(jié)束,以減少預(yù)取浪費。
【專利附圖】
【附圖說明】
[0089]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0090]圖1是本發(fā)明實施例提供的一種順序流識別的方法的流程示意圖;
[0091]圖2是本發(fā)明實施例提供的另一種順序流識別的方法的流程示意圖;
[0092]圖3是本發(fā)明實施例提供的其中一種識別方法的流程示意圖;
[0093]圖4是本發(fā)明實施例提供的其中一種順序預(yù)取的方法的流程示意圖;
[0094]圖5是本發(fā)明實施例提供的其中一種對元數(shù)據(jù)的處理方法的流程示意圖;
[0095]圖6是本發(fā)明實施例提供的一種順序流識別的裝置的結(jié)構(gòu)示意圖;
[0096]圖7是本發(fā)明實施例提供的另一種順序流識別的裝置的結(jié)構(gòu)示意圖;
[0097]圖8是本發(fā)明實施例提供的一種識別查找模塊的結(jié)構(gòu)示意圖;
[0098]圖9是本發(fā)明實施例提供的一種預(yù)取模塊的結(jié)構(gòu)示意圖;
[0099]圖10是本發(fā)明實施例提供的一種訪問特征識別模塊的結(jié)構(gòu)示意圖;
[0100]圖11是本發(fā)明實施例提供的又一種順序流識別的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0101]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0102]請參見圖1,是本發(fā)明實施例提供的一種順序流識別的方法的流程示意圖,所述方法包括:
[0103]S101,查找當前I/O請求所訪問的數(shù)據(jù)所處的目標存儲塊;
[0104]具體的,所述存儲塊是通過預(yù)先對LUN空間進行均等容量劃分所得到的,例如,將一個40M大小的LUN空間劃分成10個4M大小的存儲塊,即從LUN空間的初始位置開始,每4M的連續(xù)空間對應(yīng)一個存儲塊。由于主機發(fā)到存儲系統(tǒng)的I/O請求中攜帶有請求訪問地址和請求訪問長度,所以存儲系統(tǒng)可以根據(jù)主機側(cè)所發(fā)送的當前I/O請求確定出所述當前I/O請求所訪問的數(shù)據(jù)處于哪個存儲塊。在查找到當前I/O請求所訪問的數(shù)據(jù)所處的存儲塊后,還可以將該存儲塊作為目標存儲塊。
[0105]S102,在特征位圖中查找出所述目標存儲塊的I/O訪問特征,所述特征位圖用于標識所述目標存儲塊的I/o訪問特征;
[0106]具體的,所述特征位圖包含每個存儲塊的I/O訪問特征,所以所述特征位圖可以用于標識所述目標存儲塊的I/o訪問特征,所述I/O訪問特征至少包括順序訪問特征和隨機訪問特征。根據(jù)多個歷史I/o請求可以識別出存儲塊的I/O訪問特征,例如,在Ims內(nèi),若統(tǒng)計出其中一個存儲塊中的歷史I/O請求的個數(shù)超過200個,且歷史I/O請求間的間距均小于8個扇區(qū)大小,則可識別出該存儲塊的I/O訪問特征為順序訪問特征;若統(tǒng)計出另一個存儲塊中的歷史I/O請求的個數(shù)少于10個,且歷史I/O請求間的間距均大于8個扇區(qū)大小,則可識別出該存儲塊的I/O訪問特征為隨機訪問特征。在識別出各個存儲塊的I/O訪問特征后,可以將識別出的所述存儲塊的I/O訪問特征添加或更新至特征位圖中。在設(shè)置好所述特征位圖后,可以在所述特征位圖中查找出所述目標存儲塊的I/O訪問特征。例如,請參見如下表1所示的特征位圖:
[0107]
【權(quán)利要求】
1.一種順序流識別的方法,其特征在于,包括: 查找當前I/o請求所訪問的數(shù)據(jù)所處的目標存儲塊; 在特征位圖中查找出所述目標存儲塊的I/o訪問特征,所述特征位圖用于標識所述目標存儲塊的I/o訪問特征; 當查找出所述目標存儲塊的I/o訪問特征為順序訪問特征時,識別所述當前I/O請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/o請求查找順序流尾。
2.如權(quán)利要求1所述的方法,其特征在于,所述當查找出所述目標存儲塊的I/O訪問特征為順序訪問特征時,識別所述當前I/o請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/o請求查找順序流尾,包括: 當查找出所述目標存儲塊的I/o訪問特征為順序訪問特征時,識別所述當前I/O請求所訪問的數(shù)據(jù)的起始位置為順序流頭; 根據(jù)所述當前I/o請求所訪問的數(shù)據(jù)長度加上預(yù)設(shè)的預(yù)取長度查找初始順序流尾;當檢測到所述初始順序流尾不處于所述目標存儲塊中時,判斷所述初始順序流尾所處于的存儲塊是否與所述目標存儲塊為連續(xù)關(guān)系; 若判斷為是,則確定所述初始順序流尾為當前順序流中的順序流尾; 否則,將所述初始順序流尾重新定位至所述目標存儲塊的尾部地址,并確定重新定位后的初始順序流尾為當前順序流中的順序流尾。
3.如權(quán)利要求1或2所述的方法,其特征在于,還包括: 對包含有所述順序流頭和所述順序流尾的當前順序流進行順序預(yù)??; 其中,所述對包含有所述順序流頭和所述順序流尾的當前順序流進行順序預(yù)取,具體包括: 從所述順序流頭開始預(yù)取,并將當前順序流的所述順序流尾標識為預(yù)讀標記,所述當前順序流包括所述順序流頭和所述順序流尾; 當命中所述預(yù)讀標記時,判斷在所述順序流尾的位置上加上所述預(yù)設(shè)的預(yù)取長度后是否存在新的順序流尾; 若判斷為是,則根據(jù)所述新的順序流尾確定新的當前順序流,并對所述新的當前順序流進行順序預(yù)?。? 若判斷為否,則停止對所述當前順序流進行順序預(yù)取。
4.如權(quán)利要求1至3任一項所述的方法,其特征在于,在所述查找當前I/O請求所訪問的數(shù)據(jù)所處的目標存儲塊的步驟之前,還包括: 識別存儲塊的I/O訪問特征; 將識別出的所述存儲塊的I/O訪問特征添加或更新至特征位圖中。
5.如權(quán)利要求4所述的方法,其特征在于,所述識別存儲塊的I/O訪問特征,包括: 當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的歷史I/o請求個數(shù)大于或等于預(yù)設(shè)的第一數(shù)量閾值,且各個所述歷史I/o請求之間的間距小于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征; 當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/o請求個數(shù)小于預(yù)設(shè)的第二數(shù)量閾值,且各個所述歷史I/o請求之間的間距大于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征; 當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/o請求個數(shù)大于或等于預(yù)設(shè)的第二數(shù)量閾值,且小于預(yù)設(shè)的第一數(shù)量閾值時,標示所述存儲塊的I/o訪問特征為暫未識別;其中,所述第一數(shù)量閾值大于所述第二數(shù)量閾值。
6.如權(quán)利要求5所述的方法,其特征在于,還包括: 當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/o請求在所述存儲塊中的覆蓋率大于或等于預(yù)設(shè)的第一覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征; 當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/o請求在所述存儲塊中的覆蓋率小于或等于預(yù)設(shè)的第二覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征; 當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/o請求在所述存儲塊中的覆蓋率大于預(yù)設(shè)的第二覆蓋率閾值,且小于預(yù)設(shè)的第一覆蓋率閾值時,標示所述存儲塊的I/o訪問特征為暫未識別;其中,所述第一覆蓋率閾值大于所述第二覆蓋率閾值。
7.如權(quán)利要求5或6所述的方法,其特征在于,還包括: 在識別出所述存儲塊的I/o訪問特征后,記錄所述存儲塊的頭部地址的最新訪問時間戳和所述存儲塊的尾部地址的最新訪問時間戳; 當檢測到兩個相鄰的存儲塊的I/o訪問特征均為順序訪問特征時,進一步判斷先被訪問的存儲塊的尾部地址的最新訪問時間戳與后被訪問的存儲塊的頭部地址的最新訪問時間戳之間的時長是否小于預(yù)設(shè)的時長閾值; 若判斷為是,則確定所述兩個相鄰的存儲塊之間為連續(xù)關(guān)系; 若判斷為否,則確定所述兩個相鄰的存儲塊之間為不連續(xù)關(guān)系。
8.如權(quán)利要求4至7任一項所述的方法,其特征在于,在所述識別存儲塊的I/O訪問特征的步驟之前,還包括: 判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù)是否在本地內(nèi)存中,所述元數(shù)據(jù)至少包括所述存儲塊中所述歷史I/O請求個數(shù)和所述歷史I/O請求的覆蓋率; 若判斷為在所述本地內(nèi)存中,則更新所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù); 當更新后的元數(shù)據(jù)所對應(yīng)的所述存儲塊滿足啟動識別條件時,執(zhí)行所述識別存儲塊的I/o訪問特征。
9.如權(quán)利要求8所述的方法,其特征在于,還包括: 當判斷所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù)不在本地內(nèi)存中時,則進一步判斷所述本地內(nèi)存中的所述元數(shù)據(jù)的個數(shù)是否達到預(yù)設(shè)的元數(shù)據(jù)閾值; 若判斷為未達到預(yù)設(shè)的元數(shù)據(jù)閾值,則生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù),并將所生成的元數(shù)據(jù)存儲于所述本地內(nèi)存中,以便于更新所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù); 若判斷為達到預(yù)設(shè)的元數(shù)據(jù)閾值時,則從所述本地內(nèi)存中刪除啟動識別時間戳最靠前的元數(shù)據(jù),以便于在所述本地內(nèi)存中生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù); 計算被刪除的元數(shù)據(jù)所對應(yīng)的存儲塊的I/o訪問特征,以將計算出的所述I/O訪問特征添加或更新至特征位圖中。
10.一種順序流識別的裝置,其特征在于,包括: 存儲塊查找模塊,用于查找當前I/o請求所訪問的數(shù)據(jù)所處的目標存儲塊; 訪問特征查找模塊,用于在特征位圖中查找出所述目標存儲塊的I/o訪問特征,所述特征位圖用于標識所述目標存儲塊的I/o訪問特征; 識別查找模塊,用于當查找出所述目標存儲塊的I/o訪問特征為順序訪問特征時,識別所述當前I/o請求所訪問的數(shù)據(jù)的起始位置為順序流頭,并根據(jù)所述當前I/O請求查找順序流尾。
11.如權(quán)利要求10所述的裝置,其特征在于,所述識別查找模塊包括: 順序流頭識別單元,用于當查找出所述目標存儲塊的I/o訪問特征為順序訪問特征時,識別所述當前I/o請求所訪問的數(shù)據(jù)的起始位置為順序流頭; 順序流尾查找單元,用于根據(jù)所述當前I/o請求所訪問的數(shù)據(jù)長度加上預(yù)設(shè)的預(yù)取長度查找初始順序流尾; 順序流尾判斷單元,用于當檢測到所述初始順序流尾不處于所述目標存儲塊中時,判斷所述初始順序流尾所處于的存儲塊是否與所述目標存儲塊為連續(xù)關(guān)系; 第一確定單元,用于若所述順序流尾判斷單元判斷為是,則確定所述初始順序流尾為當前順序流中的順序流尾; 第二確定單元,用于若所述順序流尾判斷單元判斷為否,則將所述初始順序流尾重新定位至所述目標存儲塊的尾部地址,并確定重新定位后的初始順序流尾為當前順序流中的順序流尾。
12.如權(quán)利要求10或11所述的裝置,其特征在于,還包括: 預(yù)取模塊,用于對包含有所述順序流頭和所述順序流尾的當前順序流進行順序預(yù)?。? 其中,所述預(yù)取模塊包括: 預(yù)讀標識單元,用于從所述順序流頭開始預(yù)取,并將當前順序流的所述順序流尾標識為預(yù)讀標記,所述當前順序流包括所述順序流頭和所述順序流尾; 更新判斷單元,用于當命中所述預(yù)讀標記時,判斷在所述順序流尾的位置上加上所述預(yù)設(shè)的預(yù)取長度后是否存在新的順序流尾; 順序流更新單元,用于若所述更新判斷單元判斷為是,則根據(jù)所述新的順序流尾確定新的當前順序流,并對所述新的當前順序流進行順序預(yù)取; 停止單元,用于若所述更新判斷單元判斷為否,則停止對所述當前順序流進行順序預(yù)取。
13.如權(quán)利要求10至12任一項所述的裝置,其特征在于,還包括: 訪問特征識別模塊,用于識別存儲塊的I/o訪問特征; 添加更新模塊,用于將識別出的所述存儲塊的I/o訪問特征添加或更新至特征位圖中。
14.如權(quán)利要求13所述的裝置,其特征在于,所述訪問特征識別模塊包括: 特征識別單元,用于當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的歷史I/o請求個數(shù)大于或等于預(yù)設(shè)的第一數(shù)量閾值,且各個所述歷史I/o請求之間的間距小于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為順序訪問特征; 所述特征識別單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/o請求個數(shù)小于預(yù)設(shè)的第二數(shù)量閾值,且各個所述歷史I/O請求之間的間距大于預(yù)設(shè)的扇區(qū)數(shù)量閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征; 特征標示單元,用于當達到統(tǒng)計時間窗閾值,且判斷出所述存儲塊中的所述歷史I/O請求個數(shù)大于或等于預(yù)設(shè)的第二數(shù)量閾值,且小于預(yù)設(shè)的第一數(shù)量閾值時,標示所述存儲塊的I/o訪問特征為暫未識別;其中,所述第一數(shù)量閾值大于所述第二數(shù)量閾值。
15.如權(quán)利要求14所述的裝置,其特征在于, 所述特征識別單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/O請求在所述存儲塊中的覆蓋率大于或等于預(yù)設(shè)的第一覆蓋率閾值時,識別出所述存儲塊的I/O訪問特征為順序訪問特征; 所述特征識別單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/o請求在所述存儲塊中的覆蓋率小于或等于預(yù)設(shè)的第二覆蓋率閾值時,識別出所述存儲塊的I/o訪問特征為隨機訪問特征; 所述特征標示單元,還用于當達到統(tǒng)計時間窗閾值,且判斷出所述歷史I/o請求在所述存儲塊中的覆蓋率大于預(yù)設(shè)的第二覆蓋率閾值,且小于預(yù)設(shè)的第一覆蓋率閾值時,標示所述存儲塊的I/o訪問特征為暫未識別;其中,所述第一覆蓋率閾值大于所述第二覆蓋率閾值。
16.如權(quán)利要求14或15所述的裝置,其特征在于,還包括: 記錄模塊,用于在識別出所述存儲塊的I/o訪問特征后,記錄所述存儲塊的頭部地址的最新訪問時間戳和所述存儲塊的尾部地址的最新訪問時間戳; 時長判斷模塊,用于當檢測到兩個相鄰的存儲塊的I/o訪問特征均為順序訪問特征時,進一步判斷先被訪問的存儲塊的尾部地址的最新訪問時間戳與后被訪問的存儲塊的頭部地址的最新訪問時間戳之間的時長是否小于預(yù)設(shè)的時長閾值; 關(guān)系確定模塊,用于若所述時長判斷模塊判斷為是,則確定所述兩個相鄰的存儲塊之間為連續(xù)關(guān)系; 所述關(guān)系確定模塊,還用于若所述時長判斷模塊判斷為否,則確定所述兩個相鄰的存儲塊之間為不連續(xù)關(guān)系。
17.如權(quán)利要求13至16任一項所述的裝置,其特征在于,還包括: 元數(shù)據(jù)判斷模塊,用于判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù)是否在本地內(nèi)存中,所述元數(shù)據(jù)至少包括所述存儲塊中所述歷史I/O請求個數(shù)和所述歷史I/O請求的覆蓋率; 元數(shù)據(jù)更新模塊,用于若所述元數(shù)據(jù)判斷模塊判斷為在所述本地內(nèi)存中,則更新所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù); 通知模塊,用于當所述元數(shù)據(jù)更新模塊更新后的元數(shù)據(jù)所對應(yīng)的所述存儲塊滿足啟動識別條件時,通知所述訪問特征識別模塊識別存儲塊的I/o訪問特征。
18.如權(quán)利要求17所述的裝置,其特征在于,還包括: 個數(shù)判斷模塊,用于當所述元數(shù)據(jù)判斷模塊判斷所述歷史I/O請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù)不在本地內(nèi)存中時,則進一步判斷所述本地內(nèi)存中的所述元數(shù)據(jù)的個數(shù)是否達到預(yù)設(shè)的元數(shù)據(jù)閾值; 生成存儲模塊,用于若所述個數(shù)判斷模塊判斷為未達到預(yù)設(shè)的元數(shù)據(jù)閾值,則生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/O訪問特征的元數(shù)據(jù),并將所生成的元數(shù)據(jù)存儲于所述本地內(nèi)存中,以便于更新所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù); 刪除模塊,用于若所述個數(shù)判斷模塊判斷為達到預(yù)設(shè)的元數(shù)據(jù)閾值時,則從所述本地內(nèi)存中刪除啟動識別時間戳最靠前的元數(shù)據(jù),以便于在所述本地內(nèi)存中生成所述歷史I/o請求所訪問的數(shù)據(jù)所處的存儲塊的用于識別I/o訪問特征的元數(shù)據(jù); 特征計算模塊,用于計算被刪除的元數(shù)據(jù)所對應(yīng)的存儲塊的I/o訪問特征,以將計算出的所述I/o訪問特征添加或更新至特征位圖中。
【文檔編號】G06F21/32GK104134027SQ201410352520
【公開日】2014年11月5日 申請日期:2014年7月23日 優(yōu)先權(quán)日:2014年7月23日
【發(fā)明者】王明迪, 覃偉峰 申請人:華為技術(shù)有限公司