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