本技術(shù)涉及存儲,尤其涉及一種數(shù)據(jù)緩存方法、裝置、存儲系統(tǒng)、計算機可讀存儲介質(zhì)以及計算機程序產(chǎn)品。
背景技術(shù):
1、隨著計算產(chǎn)業(yè)的發(fā)展,產(chǎn)生了海量的數(shù)據(jù)。上述數(shù)據(jù)可以存儲在存儲系統(tǒng)中,以便后續(xù)可以訪問存儲系統(tǒng)獲得數(shù)據(jù)。例如,客戶端可以向存儲系統(tǒng)發(fā)送輸入輸出(inputoutput,io)請求,以請求訪問存儲系統(tǒng)。
2、為了提高io效率,存儲系統(tǒng)通常采用高速存儲介質(zhì)如動態(tài)隨機存取存儲器(dynamic?random?access?memory,dram),或者存儲級存儲器(storage?class?memory,scm)為慢速存儲介質(zhì)如機械硬盤(hard?disk?drive,hdd)或固態(tài)硬盤(solid?state?disk,ssd)緩存數(shù)據(jù)。具體地,存儲系統(tǒng)包括緩存,緩存依賴淘汰算法進行數(shù)據(jù)的換入換出。例如,緩存可以緩存熱點數(shù)據(jù),保障熱點數(shù)據(jù)的讀時延。又例如,對于順序讀,緩存可以通過預(yù)取算法,將數(shù)據(jù)提前加載到緩存中,以保證順序讀的時延。
3、考慮到存儲成本,存儲系統(tǒng)通常還支持進行重復(fù)數(shù)據(jù)刪除(即重刪)。重刪具體是對數(shù)據(jù)進行細粒度分塊,基于數(shù)據(jù)內(nèi)容計算指紋特征,通過指紋特征的比對,識別并刪除數(shù)據(jù)中的重復(fù)內(nèi)容,重復(fù)內(nèi)容只存儲一份,進而達到數(shù)據(jù)縮減的目標。
4、然而,重刪的引入使得數(shù)據(jù)從按照邏輯尋址轉(zhuǎn)變成按照內(nèi)容尋址,對重刪后數(shù)據(jù)的讀轉(zhuǎn)換為對重刪塊的讀,由于重刪會導致重刪塊的物理布局隨機化,大塊順序讀實際退化成多個小塊隨機讀(也即數(shù)據(jù)碎片化),讀性能下降嚴重。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種數(shù)據(jù)緩存方法,該方法通過確定io請求所讀取的數(shù)據(jù)是否為重刪數(shù)據(jù),對于是重刪數(shù)據(jù)的目標數(shù)據(jù),緩存該目標數(shù)據(jù),從而可以實現(xiàn)感知重刪語義,并對重刪數(shù)據(jù)和非重刪數(shù)據(jù)進行差異化處理,保證后續(xù)對重刪數(shù)據(jù)的讀io能夠在緩存中命中,提升讀性能。
2、第一方面,本技術(shù)提供一種數(shù)據(jù)緩存方法。該方法可以由存儲系統(tǒng)執(zhí)行。具體地,存儲系統(tǒng)可以接收io請求,確定io請求所訪問的目標數(shù)據(jù)是否為重刪數(shù)據(jù),以及執(zhí)行io請求以讀取目標數(shù)據(jù),當io請求所訪問的目標數(shù)據(jù)為重刪數(shù)據(jù),緩存目標數(shù)據(jù)。
3、該方法通過確定io請求所讀取的目標數(shù)據(jù)是否為重刪數(shù)據(jù),對于被確定為重刪數(shù)據(jù)的目標數(shù)據(jù),緩存該目標數(shù)據(jù),從而可以實現(xiàn)感知重刪語義,并對重刪數(shù)據(jù)和非重刪數(shù)據(jù)進行差異化處理,保證后續(xù)對重刪數(shù)據(jù)的讀io能夠在緩存中命中,提升讀性能。
4、在一些可能的實現(xiàn)方式中,存儲系統(tǒng)可以通過查詢已存儲數(shù)據(jù)的索引信息,確定io請求所訪問的目標數(shù)據(jù)是否為重刪數(shù)據(jù)。該方法通過利用已存儲數(shù)據(jù)的索引信息實現(xiàn)感知重刪語義,進而為差異化處理重刪數(shù)據(jù)和非重刪數(shù)據(jù)提供支持。
5、在一些可能的實現(xiàn)方式中,索引信息為鍵值對,其中,鍵值對中的鍵為已存儲數(shù)據(jù)的邏輯地址,鍵值對中的值為已存儲數(shù)據(jù)的物理地址或指紋。已存儲數(shù)據(jù)可以包括重刪數(shù)據(jù)(觸發(fā)重刪的數(shù)據(jù))或非重刪數(shù)據(jù)(未觸發(fā)重刪的數(shù)據(jù))。重刪數(shù)據(jù)、非重刪數(shù)據(jù)可以存儲在同一文件,例如存儲在同一個表。對于非重刪數(shù)據(jù),鍵值對中的值為物理地址,對于重刪數(shù)據(jù),鍵值對中的值為指紋(例如是由物理地址修改為指紋)。相應(yīng)地,存儲系統(tǒng)可以根據(jù)io請求中的邏輯地址,查詢索引信息中與io請求中的邏輯地址匹配的鍵值對,當與io請求中的邏輯地址匹配的鍵值對中的值為指紋,確定io請求所讀取的目標數(shù)據(jù)為重刪數(shù)據(jù)。
6、針對重刪數(shù)據(jù)和非重刪數(shù)據(jù)的索引信息存儲在相同文件的情況,該方法通過確定匹配成功的鍵值對中的值為物理地址或指紋,來快速確定io請求所訪問的目標數(shù)據(jù)為重刪數(shù)據(jù)或非重刪數(shù)據(jù),提高了感知重刪語義的效率,降低了感知重刪語義的難度。
7、在一些可能的實現(xiàn)方式中,已存儲數(shù)據(jù)的索引信息包括重刪數(shù)據(jù)的索引信息,重刪數(shù)據(jù)的索引信息可以與非重刪數(shù)據(jù)的索引信息分開存儲在不同文件,例如分別存儲在不同表中。重刪數(shù)據(jù)的索引信息包括所述重刪數(shù)據(jù)的邏輯地址。相應(yīng)地,存儲系統(tǒng)可以根據(jù)io請求中的邏輯地址,查詢索引信息中與io請求中的邏輯地址匹配的索引項。當查詢到與所述io請求中的邏輯地址匹配的索引項,存儲系統(tǒng)可以確定io請求所讀取的目標數(shù)據(jù)為重刪數(shù)據(jù)。
8、針對重刪數(shù)據(jù)和非重刪數(shù)據(jù)的索引信息分別存儲在不同文件的情況,該方法通過確定重刪數(shù)據(jù)的索引信息中是否匹配到io請求中的邏輯地址,來快速確定io請求所訪問的目標數(shù)據(jù)為重刪數(shù)據(jù)或非重刪數(shù)據(jù),提高了感知重刪語義的效率,降低了感知重刪語義的難度。
9、在一些可能的實現(xiàn)方式中,當io請求所訪問的目標數(shù)據(jù)為非重刪數(shù)據(jù),存儲系統(tǒng)還可以淘汰目標數(shù)據(jù)。如此可以實現(xiàn)差異化處理緩存中的重刪數(shù)據(jù)流和非重刪數(shù)據(jù)流,將高價值的重刪數(shù)據(jù)流在緩存中駐留,加速淘汰掉低價值的非重刪數(shù)據(jù)流,最大化緩存空間效率,獲得整體性能收益最大化。
10、在一些可能的實現(xiàn)方式中,io請求屬于順序io。該方法通過確定順序io所讀取的目標數(shù)據(jù)感知重刪語義,并對重刪數(shù)據(jù)和非重刪數(shù)據(jù)進行差異化處理,避免順序讀退化為小塊隨機讀,性能提升較為顯著。
11、在一些可能的實現(xiàn)方式中,當io請求的熱度滿足設(shè)定條件,存儲系統(tǒng)可以確定io請求所訪問的目標數(shù)據(jù)是否為重刪數(shù)據(jù)。其中,熱度可以通過相應(yīng)的熱度指標表征,例如可以通過重用距離的平均值、最大值、最小值,或者是重用距離的積分結(jié)果表征。設(shè)定條件可以是與閾值相關(guān)的條件。例如,設(shè)定條件可以為重用距離的平均值小于對應(yīng)的閾值,又例如,設(shè)定條件可以為重用距離的積分結(jié)果小于對應(yīng)的閾值。
12、該方法通過識別io請求的熱度,在熱度滿足相應(yīng)的設(shè)定條件時,確定該io請求所訪問的目標數(shù)據(jù)為具有緩存價值的熱數(shù)據(jù),針對熱數(shù)據(jù),感知其重刪語義,并對熱數(shù)據(jù)中的重刪數(shù)據(jù)和非重刪數(shù)據(jù)進行差異化處理,可以充分利用緩存空間,提升整體性能。
13、第二方面,本技術(shù)提供一種數(shù)據(jù)緩存裝置。所述裝置包括:
14、重刪信息感知模塊,用于接收輸入輸出io請求,確定所述io請求所訪問的目標數(shù)據(jù)是否為重刪數(shù)據(jù);
15、緩存數(shù)據(jù)布局模塊,用于執(zhí)行所述io請求以讀取目標數(shù)據(jù),當所述io請求所訪問的所述目標數(shù)據(jù)為重刪數(shù)據(jù),緩存所述目標數(shù)據(jù)。
16、在一些可能的實現(xiàn)方式中,所述重刪信息感知模塊具體用于:
17、通過查詢已存儲數(shù)據(jù)的索引信息,確定所述io請求所訪問的目標數(shù)據(jù)是否為重刪數(shù)據(jù)。
18、在一些可能的實現(xiàn)方式中,所述索引信息為鍵值對,所述鍵值對中的鍵為已存儲數(shù)據(jù)的邏輯地址,所述鍵值對中的值為已存儲數(shù)據(jù)的物理地址或指紋;
19、所述重刪信息感知模塊具體用于:
20、根據(jù)所述io請求中的邏輯地址,查詢所述索引信息中與所述io請求中的邏輯地址匹配的鍵值對;
21、當與所述io請求中的邏輯地址匹配的鍵值對中的值為指紋,確定所述io請求所讀取的目標數(shù)據(jù)為重刪數(shù)據(jù)。
22、在一些可能的實現(xiàn)方式中,所述已存儲數(shù)據(jù)的索引信息包括重刪數(shù)據(jù)的索引信息,所述重刪數(shù)據(jù)的索引信息包括所述重刪數(shù)據(jù)的邏輯地址;
23、所述重刪信息感知模塊具體用于:
24、根據(jù)所述io請求中的邏輯地址,查詢所述索引信息中與所述io請求中的邏輯地址匹配的索引項;
25、當查詢到與所述io請求中的邏輯地址匹配的索引項,確定所述io請求所讀取的目標數(shù)據(jù)為重刪數(shù)據(jù)。
26、在一些可能的實現(xiàn)方式中,所述緩存數(shù)據(jù)布局模塊還用于:
27、當所述io請求所訪問的目標數(shù)據(jù)為非重刪數(shù)據(jù),淘汰所述目標數(shù)據(jù)。
28、在一些可能的實現(xiàn)方式中,所述io請求屬于順序io。
29、在一些可能的實現(xiàn)方式中,所述重刪信息感知模塊具體用于:
30、當所述io請求的熱度滿足設(shè)定條件,確定所述io請求所訪問的目標數(shù)據(jù)是否為重刪數(shù)據(jù)。
31、第三方面,本技術(shù)提供一種存儲系統(tǒng)。所述存儲系統(tǒng)包括控制器和硬盤。所述控制器、所述硬盤進行相互的通信。所述控制器用于執(zhí)行計算機可讀指令,以使得存儲系統(tǒng)執(zhí)行如第一方面或第一方面的任一種實現(xiàn)方式所述的數(shù)據(jù)緩存方法。
32、第四方面,本技術(shù)提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有指令,所述指令指示存儲系統(tǒng)執(zhí)行上述第一方面或第一方面的任一種實現(xiàn)方式所述的數(shù)據(jù)緩存方法。
33、第五方面,本技術(shù)提供了一種包含指令的計算機程序產(chǎn)品,當其在存儲系統(tǒng)上運行時,使得存儲系統(tǒng)執(zhí)行上述第一方面或第一方面的任一種實現(xiàn)方式所述的數(shù)據(jù)緩存方法。
34、本技術(shù)在上述各方面提供的實現(xiàn)方式的基礎(chǔ)上,還可以進行進一步組合以提供更多實現(xiàn)方式。