两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種非易失性緩存實(shí)現(xiàn)方法及裝置制造方法

文檔序號:6639683閱讀:452來源:國知局
一種非易失性緩存實(shí)現(xiàn)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種非易失性緩存實(shí)現(xiàn)方法及裝置,該非易失性緩存實(shí)現(xiàn)方法為:首先將物理的閃存存儲資源虛擬化為閃存存儲池,然后在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元、小緩存單元和寫鏡像單元,所述大緩存單元用于提供常規(guī)的緩存服務(wù),所述小緩存單元用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元用于為大緩存和小緩存中的臟數(shù)據(jù)提供冗余備份保護(hù)功能。本發(fā)明的非易失性緩存實(shí)現(xiàn)方法避免了產(chǎn)生巨大的緩存狀態(tài)表問題,也避免了嚴(yán)重影響寫性能的冗余備份方式,能夠做到超大容量和超高性能,從而顯著提高了集中控制設(shè)備的讀寫性能。
【專利說明】一種非易失性緩存實(shí)現(xiàn)方法及裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲【技術(shù)領(lǐng)域】,特別是涉及一種應(yīng)用于集中分布式存儲架構(gòu)的集中控制設(shè)備中,提高集中控制設(shè)備及整個存儲系統(tǒng)的存儲性能的非易失性緩存實(shí)現(xiàn)方法及裝置。

【背景技術(shù)】
[0002]隨著半導(dǎo)體技術(shù)的發(fā)展,高速非易失性存儲器件(例如閃存)的存儲密度越來越高,目前已經(jīng)作為數(shù)據(jù)訪問加速設(shè)備在數(shù)據(jù)中心中被廣泛使用。與機(jī)械磁盤相比,非易失性存儲器件(例如閃存)具有更快的隨機(jī)訪問速度;與DRAM相比,非易失性存儲器件(例如閃存)能夠在電源關(guān)閉后繼續(xù)保持?jǐn)?shù)據(jù),并且具有更大的存儲密度。
[0003]閃存的高存儲密度,非易失性,以及高訪問速度的特點(diǎn),使得閃存在存儲系統(tǒng)中得到廣泛的應(yīng)用,其中一種應(yīng)用就是作為存儲系統(tǒng)的加速設(shè)備。閃存作為存儲系統(tǒng)的加速設(shè)備,也有多種實(shí)現(xiàn)形式。有閃存加速卡,閃存加速存儲層,以及閃存加速緩存。
[0004]閃存作為加速緩存應(yīng)用時,需要記錄緩存的每一個緩存行(Cache Line)的信息。例如緩存對象的地址,緩存的狀態(tài)(臟,無效,凍結(jié),清除中,裝載中等),以及緩存行的老化程度等。緩存行的個數(shù)和閃存緩存的大小和10請求的顆粒度有關(guān)。
[0005]閃存作為加速緩存應(yīng)用時,還需要保證閃存緩存和后端連接的存儲系統(tǒng)(例如分布式存儲集群203)之間的數(shù)據(jù)一致性,即閃存緩存中的數(shù)據(jù)要和后端連接的存儲系統(tǒng)中的數(shù)據(jù)保持一致。
[0006]現(xiàn)有的閃存緩存方法中,有僅作為讀緩存使用的。有作為讀寫緩存使用的,但是對寫操作的加速效果有限,原因是為了保證數(shù)據(jù)的可靠性,而使用了對寫性能影響很大的冗余備份技術(shù)。另一方面,現(xiàn)有的閃存緩存實(shí)現(xiàn)中,閃存的容量并沒有達(dá)到百TB級別。
[0007]以上【背景技術(shù)】內(nèi)容的公開僅用于輔助理解本發(fā)明的發(fā)明構(gòu)思及技術(shù)方案,其并不必然屬于本專利申請的現(xiàn)有技術(shù),在沒有明確的證據(jù)表明上述內(nèi)容在本專利申請的申請日已經(jīng)公開的情況下,上述【背景技術(shù)】不應(yīng)當(dāng)用于評價本申請的新穎性和創(chuàng)造性。


【發(fā)明內(nèi)容】

[0008]本發(fā)明的目的在于提出一種非易失性緩存實(shí)現(xiàn)方法,以解決上述現(xiàn)有技術(shù)存在的閃存緩存中存在的緩存行表項(xiàng)管理和數(shù)據(jù)一致性問題導(dǎo)致的緩存狀態(tài)表巨大及控制設(shè)備的讀寫性能差的技術(shù)問題。
[0009]為此,本發(fā)明提出一種非易失性緩存實(shí)現(xiàn)方法,首先將物理的閃存存儲資源虛擬化為閃存存儲池,然后在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元、小緩存單元和寫鏡像單元,所述大緩存單元用于提供常規(guī)的緩存服務(wù),所述小緩存單元用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元用于為大緩存單元和小緩存單元中的臟數(shù)據(jù)提供冗余備份保護(hù)功能;
[0010]數(shù)據(jù)寫入時,如該寫操作命中了小緩存單元的緩存行,則把數(shù)據(jù)寫入小緩存單元,如未命中小緩存單元但命中了大緩存單元的緩存行,則把數(shù)據(jù)寫入大緩存單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則將數(shù)據(jù)寫入小緩存單元,否則數(shù)據(jù)不寫入閃存存儲資源而直接寫入后端存儲集群;
[0011]數(shù)據(jù)讀取時,如該讀操作命中了小緩存單元的緩存行,則把小緩存單元中的數(shù)據(jù)返回,如未命中小緩存單元但是命中了大緩存單元的緩存行,則把大緩存單元中的數(shù)據(jù)返回,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則從后端存儲集群讀取大緩存單元的緩存行對應(yīng)大小的數(shù)據(jù)并裝載到大緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識無效但數(shù)據(jù)暫存標(biāo)識有效,則從后端存儲集群讀取對應(yīng)小緩存單元的緩存行數(shù)據(jù)并裝載到小緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存存儲資源而直接送給前端數(shù)據(jù)申請單元。
[0012]優(yōu)選地,本發(fā)明的方法還可以具有如下技術(shù)特征:
[0013]所述大緩存單元、小緩存單元和寫鏡像單元的大小滿足如下公式(Little_Size+Mirror_size)/Li 111e_granu1ar i ty+B i g_S i z e/B i g_granu1ar i ty< = available—DRAM_Size/entry_size,其中,Big_Size為大緩存單元的大小,Little_Size為小緩存單元的大小,Mirror_size為寫鏡像單元的大小,Little_granularity為小緩存單元緩存行的大小,Big_granularity為大緩存單元緩存行的大小,avai 1 ab 1 e_DRAM_Size是可用的存儲緩存狀態(tài)表的DRAM的大小,entry_size是緩存每個表項(xiàng)的大小。
[0014]所述寫鏡像單元由至少一個邏輯寫鏡像子單元組成,所述大緩存單元、小緩存單元分別由至少一個邏輯大緩存子單元、至少一個邏輯小緩存子單元組成。
[0015]所述物理的閃存存儲資源包括兩個以上物理托盤,所述大緩存單元、小緩存單元和寫鏡像單元均橫跨所述兩個以上物理托盤。
[0016]數(shù)據(jù)在寫入所述大緩存單元、小緩存單元和寫鏡像單元時,所述大緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置處于不同的所述物理托盤上,所述小緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置亦處于不同的所述物理托盤上。
[0017]所述小緩存單元和寫鏡像單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤,所述大緩存單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤。
[0018]數(shù)據(jù)寫入操作和數(shù)據(jù)讀取操作落到哪個物理托盤按以下原則:當(dāng)某個物理托盤損壞時,僅僅將原來映射到該物理托盤上的操作轉(zhuǎn)移到其他的物理托盤上,而原來就映射到其他物理托盤上的讀寫操作維持映射關(guān)系不變。
[0019]所述大緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)和無效狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中無有效數(shù)據(jù);當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,只有收到緩存行清除請求時跳轉(zhuǎn)為干凈狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到失效請求時跳轉(zhuǎn)到無效狀態(tài)。
[0020]所述小緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)、無效狀態(tài)和凍結(jié)狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中沒有有效數(shù)據(jù),所述凍結(jié)狀態(tài)表示當(dāng)前緩存行處于凍結(jié)狀態(tài),只能被讀取,不能被寫入;當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,收到緩存行清除請求時跳轉(zhuǎn)為無效狀態(tài),收到移動請求時跳轉(zhuǎn)為凍結(jié)狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到讀請求時跳轉(zhuǎn)到無效狀態(tài);當(dāng)緩存行處于凍結(jié)狀態(tài)時,只有收到移動完成的返回時緩存行跳轉(zhuǎn)到無效狀態(tài)。
[0021]還包括守護(hù)單元,該守護(hù)單元用于在后臺將寫鏡像單元中的臟數(shù)據(jù)清除到后端存儲集群,以限制所述閃存存儲資源中需做冗余備份的臟數(shù)據(jù)在預(yù)定的范圍內(nèi)。
[0022]所述冗余備份采用寫鏡像方式。
[0023]所述物理的閃存存儲資源為閃存、相位存儲器。
[0024]本發(fā)明還提出一種非易失性緩存實(shí)現(xiàn)裝置,包括:閃存存儲資源虛擬化單元,用于將物理的閃存存儲資源虛擬化為閃存存儲池;
[0025]邏輯存儲單元創(chuàng)建單元,用于在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元、小緩存單元和寫鏡像單元,所述大緩存單元用于提供常規(guī)的緩存服務(wù),所述小緩存單元用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元用于為大緩存和小緩存中的臟數(shù)據(jù)提供冗余備份保護(hù)功能;
[0026]數(shù)據(jù)寫入單元和數(shù)據(jù)讀取單元;
[0027]所述數(shù)據(jù)寫入單元進(jìn)行數(shù)據(jù)寫入時,如該寫操作命中了小緩存單元的緩存行,則把數(shù)據(jù)寫入小緩存單元,如未命中小緩存單元但命中了大緩存單元的緩存行,則把數(shù)據(jù)寫入大緩存單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則將數(shù)據(jù)寫入小緩存單元,否則數(shù)據(jù)不寫入閃存存儲資源而直接寫入后端存儲集群;
[0028]所述數(shù)據(jù)讀取單元進(jìn)行數(shù)據(jù)讀取時,如該讀操作命中了小緩存單元的緩存行,則把小緩存單元中的數(shù)據(jù)返回,如未命中小緩存單元但是命中了大緩存單元的緩存行,則把大緩存單元中的數(shù)據(jù)返回,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則從后端存儲集群讀取大緩存單元的緩存行對應(yīng)大小的數(shù)據(jù)并裝載到大緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識無效但數(shù)據(jù)暫存標(biāo)識有效,則從后端存儲集群讀取對應(yīng)小緩存單元的緩存行數(shù)據(jù)并裝載到小緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存存儲資源而直接送給前端前端數(shù)據(jù)申請單元。
[0029]優(yōu)選地,本發(fā)明的裝置還可以具有如下技術(shù)特征:
[0030]所述大緩存單元、小緩存單元和寫鏡像單元的大小滿足如下公式(Little_Size+Mirror_size)/Li 111e_granu1ar i ty+B i g_S i z e/B i g_granu1ar i ty< = available—DRAM_Size/entry_size,其中,Big_Size為大緩存單元的大小,Little_Size為小緩存單元的大小,Mirror_size為寫鏡像單元的大小,Little_granularity為小緩存單元緩存行的大小,Big_granularity為大緩存單元緩存行的大小,avai 1 ab 1 e_DRAM_Size是可用的存儲緩存狀態(tài)表的DRAM的大小,entry_size是緩存每個表項(xiàng)的大小。
[0031 ] 所述寫鏡像單元可由多個邏輯寫鏡像子單元構(gòu)成。
[0032]所述物理的閃存存儲資源包括兩個以上物理托盤,所述大緩存單元、小緩存單元和寫鏡像單元均可以橫跨所述兩個以上物理托盤。
[0033]所述數(shù)據(jù)寫入單元在將數(shù)據(jù)寫入所述大緩存單元、小緩存單元和寫鏡像單元時,所述大緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置處于不同的物理托盤上,所述小緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置亦處于不同的物理托盤上。
[0034]所述小緩存單元和寫鏡像單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤,所述大緩存單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤。
[0035]所述數(shù)據(jù)寫入單元和數(shù)據(jù)讀取單元的操作落到哪個物理托盤按以下原則:當(dāng)某個物理托盤損壞時,僅僅將原來映射到該物理托盤上的操作轉(zhuǎn)移到其他的物理托盤上,而原來就映射到其他物理托盤上的讀寫操作維持映射關(guān)系不變。
[0036]所述大緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)和無效狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中無有效數(shù)據(jù);當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,只有收到緩存行清除請求時跳轉(zhuǎn)為干凈狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到失效請求時跳轉(zhuǎn)到無效狀態(tài)。
[0037]所述小緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)、無效狀態(tài)和凍結(jié)狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中沒有有效數(shù)據(jù),所述凍結(jié)狀態(tài)表示當(dāng)前緩存行處于凍結(jié)狀態(tài),只能被讀取,不能被寫入;當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,收到緩存行清除請求時跳轉(zhuǎn)為無效狀態(tài),收到移動請求時跳轉(zhuǎn)為凍結(jié)狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到讀請求時跳轉(zhuǎn)到無效狀態(tài);當(dāng)緩存行處于凍結(jié)狀態(tài)時,只有收到移動完成的返回時緩存行跳轉(zhuǎn)到無效狀態(tài)。
[0038]還包括守護(hù)單元,該守護(hù)單元用于在后臺將寫鏡像單元中的臟數(shù)據(jù)清除到后端存儲集群,以限制所述閃存存儲資源中需做冗余備份的臟數(shù)據(jù)在預(yù)定的范圍內(nèi)。
[0039]所述冗余備份采用寫鏡像方式。
[0040]本發(fā)明與現(xiàn)有技術(shù)對比的有益效果包括:通過將物理的閃存存儲資源虛擬化為閃存存儲池,并在所述存儲池上創(chuàng)建三種邏輯存儲單元,以及所采用的數(shù)據(jù)寫入和讀取方法,本發(fā)明的非易失性緩存實(shí)現(xiàn)方法避免了產(chǎn)生巨大的緩存狀態(tài)表問題,也避免了嚴(yán)重影響寫性能的冗余備份方式,能夠做到超大容量和超高性能,從而顯著提高了集中控制設(shè)備的讀寫性能,并能夠做到不間斷提供存儲服務(wù)。

【專利附圖】

【附圖說明】
[0041]圖1是實(shí)施例1的閃存緩存的整體邏輯結(jié)構(gòu)示意圖;
[0042]圖2是實(shí)施例1的集中分布式存儲架構(gòu)示意圖;
[0043]圖3是實(shí)施例1中閃存緩存的整體物理結(jié)構(gòu)示意圖;
[0044]圖4是實(shí)施例1中大緩存單元的緩存行簡化狀態(tài)轉(zhuǎn)換表;
[0045]圖5是實(shí)施例1中小緩存單元的緩存行簡化狀態(tài)轉(zhuǎn)換表;
[0046]圖6是實(shí)施例1中閃存緩存寫入操作流程圖;
[0047]圖7是實(shí)施例1中閃存緩存讀取操作的一個流程圖;
[0048]圖8是實(shí)施例1中閃存緩存讀取操作的又一個流程圖;
[0049]圖9是實(shí)施例1中閃存緩存邏輯模塊和物理模塊對應(yīng)例圖。

【具體實(shí)施方式】
[0050]本發(fā)明公開的緩存實(shí)現(xiàn)方法中的非易失性存儲器件(即閃存存儲資源)包括但不限于閃存、相位存儲器等。本發(fā)明后端所接的存儲系統(tǒng)包括但不限于圖2中203給出的集中分布式存儲系統(tǒng)(集群),以下僅是以集中分布式存儲系統(tǒng)架構(gòu)為例對本發(fā)明進(jìn)行說明。
[0051]圖2所示的集中分布式存儲系統(tǒng)架構(gòu)中,集中控制設(shè)備中的閃存緩存需要具備超大容量、超高性能(是指提供高1PS以及低延遲)的特點(diǎn)這是因?yàn)?集中控制設(shè)備連接的分布存儲集群的存儲容量為PB級別,相對應(yīng)的緩存容量為上百TB級別的。但是,超大容量的閃存緩存在兩個難題,即緩存行表項(xiàng)管理問題和數(shù)據(jù)一致性問題。
[0052]閃存作為緩存使用時,需要將整個存儲資源按照一定的顆粒度分解為很多緩存行(cache line),針對每個緩存行,都需要記錄這個緩存行的相關(guān)信息,如緩存行存放的數(shù)據(jù)來自哪里,緩存行當(dāng)前的狀態(tài)等,當(dāng)閃存緩存的容量達(dá)到上百TB byte,例如200T Byte時,如果按照4K Byte的顆粒度來劃分緩存行,則一共有200TB/4KB = 50 X 109個緩存行,假設(shè)每個緩存行需要16Byte來記錄其狀態(tài),那么就一共需要800GByte的表來標(biāo)識記錄整個閃存緩存的狀態(tài),這是一個巨大的并且是不可承受的表。而4KByte的顆粒度是由虛擬機(jī)201決定的,即作為虛擬機(jī)201的塊存儲設(shè)備,存儲數(shù)據(jù)的塊訪問單元就是4KByte的。這就會產(chǎn)生巨大的緩存狀態(tài)表即緩存行表項(xiàng)管理問題。
[0053]閃存作為緩存使用時,還需要保證緩存中的數(shù)據(jù)和后端分布存儲集群203數(shù)據(jù)的一致性,當(dāng)緩存中的數(shù)據(jù)和分布存儲集群203中的數(shù)據(jù)不一致時,需要對緩存中的數(shù)據(jù)做備份保護(hù)。目前被采用最多的保護(hù)方式就是RAID5/6,但是RAID5/6是以巨大的寫性能犧牲為代價的。另外一種方式就是僅作為讀緩存使用,任何的寫操作都直接寫入后端分布存儲集群203,并且將閃存緩存中的相關(guān)數(shù)據(jù)置為無效狀態(tài),從而保證緩存中的數(shù)據(jù)永遠(yuǎn)和后端存儲集群數(shù)據(jù)保持一致,避免對緩存中的數(shù)據(jù)進(jìn)行備份保護(hù),但是這樣的實(shí)現(xiàn)方式只能針對部分讀操作進(jìn)行加速,并且不能對寫操作進(jìn)行加速。這就是數(shù)據(jù)一致性問題,及其帶來的不利影響。
[0054]下面結(jié)合【具體實(shí)施方式】并對照附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。應(yīng)該強(qiáng)調(diào)的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。
[0055]參照以下附圖1-9,將描述非限制性和非排他性的實(shí)施例,其中相同的附圖標(biāo)記表示相同的部件,除非另外特別說明。
[0056]實(shí)施例一:
[0057]一種非易失性緩存實(shí)現(xiàn)方法,首先將物理的閃存存儲資源虛擬化為閃存存儲池,然后在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元101、小緩存單元102和寫鏡像單元103,如圖1所示。所述大緩存單元101用于提供常規(guī)的緩存服務(wù),所述小緩存單元102用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元103用于為大緩存單元101和小緩存單元102中的臟數(shù)據(jù)提供冗余備份保護(hù)功能;數(shù)據(jù)寫入時,如該寫操作命中了小緩存單元102的緩存行,則把數(shù)據(jù)寫入小緩存單元102,如未命中小緩存單元102但命中了大緩存單元101的緩存行,則把數(shù)據(jù)寫入大緩存單元101,如大緩存單元101和小緩存單元102都未命中且加速標(biāo)識有效,則將數(shù)據(jù)寫入小緩存單元102,否則數(shù)據(jù)不寫入閃存存儲資源而直接寫入后端存儲集群203 ;數(shù)據(jù)讀取時,如該讀操作命中了小緩存單元102的緩存行,則把小緩存單元102中的數(shù)據(jù)返回,如未命中小緩存單元102但是命中了大緩存單元101的緩存行,則把大緩存單元101中的數(shù)據(jù)返回,如大緩存單元101和小緩存單元102都未命中且加速標(biāo)識有效,則從后端存儲集群讀取大緩存單元101的緩存行對應(yīng)大小的數(shù)據(jù)并裝載到大緩存單元101的緩存行,再把數(shù)據(jù)返回給虛擬機(jī)201,如大緩存單元101和小緩存單元102都未命中且加速標(biāo)識無效但數(shù)據(jù)暫存標(biāo)識有效,則從后端存儲集群讀取對應(yīng)小緩存單元102的緩存行數(shù)據(jù)并裝載到小緩存單元102的緩存行,再把數(shù)據(jù)返回給虛擬機(jī)201,否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存緩存100而直接送給前端虛擬機(jī)201。其中,所述虛擬機(jī)201作為前端數(shù)據(jù)申請單元的一種,僅為舉例,本發(fā)明中的前端數(shù)據(jù)申請單元并不局限于此。
[0058]本實(shí)施例中,所述物理的閃存存儲資源(或稱閃存緩存100)的結(jié)構(gòu)示意圖如圖3所示,每個托盤提供物理的閃存存儲資源,并且內(nèi)部采用相應(yīng)的技術(shù)保證托盤內(nèi)部的可靠性和穩(wěn)定性。將物理閃存存儲資源劃分為大緩存單元101和小緩存單元102,可以有效的解決超大容量閃存緩存狀態(tài)表過大的問題。
[0059]如圖4所示,為大緩存單元的緩存行狀態(tài)表舉例,即大緩存單元的緩存行的狀態(tài)包括但不限于圖4中列出的狀態(tài)。大緩存單元的緩存行簡化后的基本狀態(tài)有三個:臟狀態(tài),即緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)203中的數(shù)據(jù)不一致;干凈狀態(tài),即緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)203中的數(shù)據(jù)一致;無效狀態(tài),即緩存行中沒有有效數(shù)據(jù)。狀態(tài)跳轉(zhuǎn)過程為:當(dāng)緩存行處于無效狀態(tài)時,如果收到緩存行大小的數(shù)據(jù)寫入請求時(例如來自虛擬機(jī)201的寫入請求),緩存行跳轉(zhuǎn)到臟狀態(tài),如果收到干凈數(shù)據(jù)裝載請求時(例如來自存儲系統(tǒng)203的寫入請求),緩存行跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,只有收到緩存行清除請求時,狀態(tài)跳轉(zhuǎn)為干凈狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,如果收到數(shù)據(jù)寫入請求,緩存行跳轉(zhuǎn)到臟狀態(tài),如果收到失效請求,緩存行跳轉(zhuǎn)到無效狀態(tài)。
[0060]如圖5所示,為小緩存單元的緩存行狀態(tài)表舉例,即小緩存單元緩存行的狀態(tài)包括但不限于圖5中列出的狀態(tài)。小緩存單元的緩存行簡化后的基本狀態(tài)有四個:臟狀態(tài),即緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)203中的數(shù)據(jù)不一致;干凈狀態(tài),即緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)203中的數(shù)據(jù)一致;無效狀態(tài),即緩存行中沒有有效數(shù)據(jù);凍結(jié)狀態(tài),即當(dāng)前緩存行處于凍結(jié)狀態(tài),只能被讀取,不能被寫入。狀態(tài)跳轉(zhuǎn)過程為:當(dāng)緩存行處于無效狀態(tài)時,如果收到數(shù)據(jù)寫入請求時(例如來自虛擬機(jī)201的寫入請求),緩存行跳轉(zhuǎn)到臟狀態(tài),如果收到干凈數(shù)據(jù)裝載請求時(例如來自存儲系統(tǒng)203的寫入請求),緩存行跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,如果收到緩存行清除請求時,狀態(tài)跳轉(zhuǎn)為無效狀態(tài),如果收到移動請求,狀態(tài)跳轉(zhuǎn)為凍結(jié)狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,如果收到數(shù)據(jù)寫入請求,緩存行跳轉(zhuǎn)到臟狀態(tài),如果收到讀請求,緩存行跳轉(zhuǎn)到無效狀態(tài);當(dāng)緩存行處于凍結(jié)狀態(tài)時,只有收到移動完成的返回,緩存行跳轉(zhuǎn)到無效狀態(tài)。
[0061 ] 大/小緩存單元不同的狀態(tài)及跳轉(zhuǎn)實(shí)現(xiàn)了加速讀操作和寫操作。本例中,大緩存單元和小緩存單元狀態(tài)以及跳轉(zhuǎn)的不同是因?yàn)樗鼈兊姆?wù)目的不同,對讀寫訪問進(jìn)行緩存加速時使用大緩存單兀還是小緩存單兀,取決于策略提不?目息以及大緩存單兀和小緩存單元的狀態(tài)信息。策略提示信息包括但不限于服務(wù)等級、命中概率預(yù)測等。策略提示信息可以直接來自于集中控制設(shè)備202,也可以來自于虛擬機(jī)201。狀態(tài)信息包括但不限于是否命中。本例中,大緩存單元用于提供常規(guī)的緩存服務(wù),并可根據(jù)服務(wù)等級對不同的緩存行采用不同的老化策略;小緩存單元為首次沒有命中大緩存單元的寫操作提供緩存加速功能,并為沒有命中大緩存單元的讀操作提供數(shù)據(jù)暫存功能。
[0062]小緩存單元102的緩存行是小的,譬如是4KByte ;大緩存單元101的緩存行是大的,譬如是4Mbytes ;寫鏡像單元103的緩存行和小緩存單元102的緩存行可保持一致。具體的緩存行的大小可以根據(jù)實(shí)際情況進(jìn)行調(diào)整,例如根據(jù)虛擬機(jī)201存儲請求情況決定小緩存單元102的緩存行大小,根據(jù)后端分布存儲集群203的實(shí)現(xiàn)情況決定大緩存單元101的緩存行大小。
[0063]而小緩存單元102、大緩存單元101和寫鏡像單元103的大小及相互關(guān)系,可以根據(jù)集中控制設(shè)備202中的DRAM資源確定。例如,需要將所有記錄緩存狀態(tài)的表都放入到集中控制設(shè)備202相應(yīng)的DRAM資源中,那么就要滿足(Little_Size+Mirror_size)/Little_granularity+Big_Size/Big_granularity< = available_DRAM_Size/entry_size。其中,Little_Size就是小緩存單元102的大小,Mirror_size是寫鏡像單元103的大小,Little_granularity是小緩存單元102的緩存行的大小,本實(shí)施例中小緩存單元102的緩存行大小與虛擬機(jī)201數(shù)據(jù)訪問的塊大小保持一致,Big_Size是大緩存單元101的大小,Big_granularity是大緩存單元101緩存行的大小,available_DRAM_Size是可用的存儲緩存狀態(tài)表的DRAM的大小,entry_size是緩存每個表項(xiàng)的大小。
[0064]寫鏡像單元103為大緩存單元101和小緩存單元102中的臟數(shù)據(jù)提供冗余備份保護(hù)功能。來自虛擬機(jī)201的數(shù)據(jù)在寫入大緩存單元101或者小緩存單元102的同時,也被寫入寫鏡像單元103中。
[0065]一個較佳的做法是,還進(jìn)一步包括一個守護(hù)單元,其負(fù)責(zé)在后臺將寫鏡像單元103中的臟數(shù)據(jù)清除到后端存儲集群203。因?yàn)閷戠R像單元103僅備份大緩存單元101和小緩存單元102中的臟數(shù)據(jù),并且有守護(hù)單元不斷的將臟數(shù)據(jù)按預(yù)定的規(guī)則清除到后端存儲集群203中,所以閃存緩存100中的臟數(shù)據(jù)是有限的,不需要對整個閃存緩存100中的所有數(shù)據(jù)做冗余備份。同時,備份策略采用寫鏡像的方式,一方面降低了冗余備份對性能的要求,另一方面實(shí)現(xiàn)了對所有寫操作進(jìn)行加速的效果。
[0066]如圖8所示,為守護(hù)單元的處理流程,首先檢測寫鏡像單元103的情況,當(dāng)寫鏡像單元103為非空,守護(hù)單元從寫鏡像中取出一個臟數(shù)據(jù)及相關(guān)信息(例如地址信息),根據(jù)相關(guān)?目息查詢閃存緩存狀態(tài)表,獲得閃存緩存狀態(tài)。如果緩存狀態(tài)顯不命中小緩存單兀102的緩存行,沒有命中大緩存單元101的緩存行,則直接將小緩存單元102的緩存行中的數(shù)據(jù)清除到后端存儲集群203中。如果緩存狀態(tài)顯示既命中小緩存單元102的緩存行也命中大緩存單元101的緩存行,則首先將小緩存單元102的緩存行中的數(shù)據(jù)搬移到大緩存單元101的緩存行中,然后再將大緩存單元101的緩存行中的數(shù)據(jù)清除到后端存儲集群203中。如果緩存狀態(tài)顯示沒有命中小緩存單元102的緩存行,命中大緩存單元101的緩存行,并且大緩存單元101的緩存行含有臟數(shù)據(jù),則將大緩存單元101的緩存行中的數(shù)據(jù)清除到后端存儲集群203中。如果緩存狀態(tài)顯示沒有命中小緩存單元102的緩存行,命中大緩存單元101的緩存行,并且大緩存單元101的緩存行中沒有臟數(shù)據(jù),則不需要對大/小緩存單元做任何操作。值得說明的是,此處所述僅為舉例,本流程還可以根據(jù)狀態(tài)信息的變化進(jìn)行相應(yīng)的修改。同時,寫鏡像單元103可由多個邏輯寫鏡像子單元構(gòu)成,每個小寫鏡像子單元都有自己的守護(hù)程序。
[0067]緩存邏輯單元與物理單元(物理托盤)的對應(yīng)關(guān)系示意如圖9所示,每個邏輯單元、大緩存單元101、小緩存單元102、寫鏡像單元103都可以橫跨所有物理托盤,這樣做的好處是可提高各個物理托盤的并發(fā)程度,提高性能。寫鏡像邏輯單元可以被分割為多個小的寫鏡像邏輯子單元,例如每個托盤上有一個邏輯寫鏡像子單元,分割為多個小的邏輯寫鏡像子單元的好處是可以并發(fā)多個寫鏡像守護(hù)單元,提高將臟數(shù)據(jù)清除到后端存儲集群的速度。
[0068]如圖9所示,來自虛擬機(jī)201的新寫入數(shù)據(jù)在寫入大緩存單元101、小緩存單元102和寫鏡像單元103時,可按以下原則:寫入大緩存單元或者小緩存單元的物理位置和寫入寫鏡像單元103的物理位置不處于同一個物理托盤上。例如寫入寫鏡像單元103的物理托盤序號可以是寫入大緩存單元101或者小緩存單元102的物理托盤序號加一這樣一個簡單規(guī)則(不局限于此)。這樣做的好處是可保證冗余備份和原數(shù)據(jù)處于不同的物理托盤上,在單個物理托盤損壞時,閃存緩存100仍然有可用的數(shù)據(jù)提供。圖9中給出的大緩存的緩存行的大小為4MByte,但實(shí)際使用中,可以根據(jù)實(shí)際情況進(jìn)行調(diào)整。
[0069]所述小緩存單元102和寫鏡像單元103的單個緩存行均可位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤,所述大緩存單元的單個緩存行既可以橫跨多個物理托盤,也可以位于同一個物理托盤內(nèi)。本例中以大緩存單元的單個緩存行位于同一個物理托盤內(nèi)為例進(jìn)行說明,該方式更加便于實(shí)現(xiàn)單個物理托盤損壞時,仍然能夠提供不間斷服務(wù)的技術(shù)效果Ο
[0070]基于大緩存單元、小緩存單元及寫鏡像單元分割模式下,在其中一個物理托盤損壞的情況下,不間斷服務(wù)提供方式如下例所示。
[0071]假如圖9中托盤1損壞,不能提供服務(wù),并且托盤1上的寫鏡像備份的是在托盤0上的臟數(shù)據(jù),數(shù)據(jù)恢復(fù)及不間斷服務(wù)提供過程如下:
[0072]第一步:首先將托盤0和托盤1標(biāo)志為不可提供空閑緩存行狀態(tài)。
[0073]第二步:遍歷清除臟數(shù)據(jù),線程如下:
[0074]線程1:遍歷托盤0的緩存行狀態(tài)表,處于干凈狀態(tài)的就將其失效,處于臟狀態(tài)的就將數(shù)據(jù)清除到后端存儲集群,再將其失效。
[0075]線程2:遍歷托盤1的緩存行狀態(tài)表,處于干凈狀態(tài)的就將其失效,處于臟狀態(tài)就等待至狀態(tài)變?yōu)楦蓛魻顟B(tài)。
[0076]線程3:提高托盤2上寫鏡像守護(hù)單元的運(yùn)行優(yōu)先級為最高級。
[0077]線程1、2和3是并發(fā)執(zhí)行的。
[0078]第三步:等待托盤0和1遍歷都結(jié)束后,再將托盤0置為可以提供空閑緩存行的狀態(tài)。因?yàn)樾碌那闆r下,托盤0要用托盤2上的寫鏡像單元做雙備份。
[0079]來自虛擬機(jī)的讀寫操作落到哪個物理托盤可選擇的算法按照以下原則確定:當(dāng)某個物理托盤損壞時,僅僅將原來映射到這個物理托盤上的操作轉(zhuǎn)移到其他的物理托盤上,而原來就映射到其他物理托盤上的讀寫操作維持映射關(guān)系不變。滿足這個要求的算法目前有很多,例如CRUSH算法等。
[0080]在解決了本發(fā)明的基本技術(shù)問題即緩存行表項(xiàng)管理問題和數(shù)據(jù)一致性問題外,發(fā)明人還發(fā)現(xiàn),由于來自虛擬機(jī)201的讀寫操作的顆粒度和小緩存單元102的緩存行大小一致,但大緩存單元101的緩存行的大小較大,因此會出現(xiàn)同時命中大/小緩存單元的情況??赏ㄟ^以下描述的方法予以解決:
[0081]如圖2和圖6所示,當(dāng)來自虛擬機(jī)201的寫操作被送到閃存緩存100時,如果這個寫操作命中了小緩存單元102的緩存行,則把數(shù)據(jù)寫入小緩存單元102,如果沒有命中小緩存單元102的緩存行,但是命中了大緩存單元101的緩存行,則把數(shù)據(jù)寫入大緩存單元101,如果大/小緩存單元都沒有命中,則查詢加速標(biāo)識是否有效,如果有效,則將數(shù)據(jù)寫入小緩存單元102,否則數(shù)據(jù)不寫入閃存緩存100,直接經(jīng)過集中控制設(shè)備202寫入后端存儲集群203。這樣的寫操作流程保證了,在寫操作命中小緩存單元102的緩存行的情況下,那么小緩存單元102中的數(shù)據(jù)永遠(yuǎn)是最新的。
[0082]如圖2和圖7所示,當(dāng)來自虛擬機(jī)201的讀操作被送到閃存緩存100時,如果這個讀操作命中了小緩存單元102的緩存行,則把小緩存單元102中的數(shù)據(jù)返回,如果沒有命中小緩存單元102的緩存行,但是命中了大緩存單元101的緩存行,則把大緩存單元101中的數(shù)據(jù)返回,如果大/小緩存的緩存行都沒有命中,則查詢加速標(biāo)識是否有效,如果有效,則從后端存儲集群203讀取大緩存行大小的數(shù)據(jù),裝載到大緩存單元101的緩存行,讓后再把數(shù)據(jù)返回給虛擬機(jī)201,如果無效,則查詢數(shù)據(jù)暫存標(biāo)識是否有效,如果有效,則從后端存儲集群203讀取小緩存單元102的緩存行數(shù)據(jù),裝載到小緩存單元102的緩存行,然后再把數(shù)據(jù)返回給虛擬機(jī)201,否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存緩存100,直接經(jīng)過集中控制設(shè)備202送給前端虛擬機(jī)201。
[0083]本實(shí)施例的非易失性緩存實(shí)現(xiàn)方法,可將記錄緩存狀態(tài)的狀態(tài)表的大小控制在一定范圍內(nèi),除了可以對讀取操作進(jìn)行加速外,還能夠?qū)θ繉懖僮鬟M(jìn)行加速。此外,備份時只對部分?jǐn)?shù)據(jù)進(jìn)行備份,備份數(shù)據(jù)量有限且備份操作對性能影響小。再者,還沒有熱備盤,能夠提供不間斷服務(wù)。
[0084]實(shí)施例二:
[0085]本實(shí)施例的裝置與前述實(shí)施例中的非易失性緩存實(shí)現(xiàn)方法對應(yīng)一致。
[0086]一種非易失性緩存實(shí)現(xiàn)裝置,包括閃存存儲資源虛擬化單元,邏輯存儲單元創(chuàng)建單元,數(shù)據(jù)寫入單元和數(shù)據(jù)讀取單元。
[0087]所述閃存存儲資源虛擬化單元用于將物理的閃存存儲資源虛擬化為閃存存儲池。
[0088]所述邏輯存儲單元創(chuàng)建單元用于在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元、小緩存單元和寫鏡像單元,所述大緩存單元用于提供常規(guī)的緩存服務(wù),所述小緩存單元用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元用于為大緩存和小緩存中的臟數(shù)據(jù)提供冗余備份保護(hù)功能。
[0089]所述物理的閃存存儲資源優(yōu)選可包括兩個以上物理托盤,所述大緩存單元、小緩存單元和寫鏡像單元均橫跨所述兩個以上物理托盤。且優(yōu)選:所述小緩存單元和寫鏡像單元的單個緩存行位于同一個物理托盤內(nèi),所述大緩存單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤。
[0090]所述數(shù)據(jù)寫入單元進(jìn)行數(shù)據(jù)寫入時,如該寫操作命中了小緩存單元的緩存行,則把數(shù)據(jù)寫入小緩存單元,如未命中小緩存單元但命中了大緩存單元的緩存行,則把數(shù)據(jù)寫入大緩存單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則將數(shù)據(jù)寫入小緩存單元,否則數(shù)據(jù)不寫入閃存存儲資源而直接寫入后端存儲集群。
[0091]所述數(shù)據(jù)寫入單元在將數(shù)據(jù)寫入所述大緩存單元、小緩存單元和寫鏡像單元時,所述大緩存單元的寫入物理位置優(yōu)選與所述寫鏡像單元的寫入物理位置處于不同的物理托盤上,所述小緩存單元的寫入物理位置優(yōu)選與所述寫鏡像單元的寫入物理位置亦處于不同的物理托盤上。
[0092]所述數(shù)據(jù)讀取單元進(jìn)行數(shù)據(jù)讀取時,如該讀操作命中了小緩存單元的緩存行,則把小緩存單元中的數(shù)據(jù)返回,如未命中小緩存單元但命中了大緩存單元的緩存行,則把大緩存單元中的數(shù)據(jù)返回,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則從后端存儲集群讀取大緩存單元的緩存行對應(yīng)大小的數(shù)據(jù)并裝載到大緩存單元的緩存行,再把數(shù)據(jù)返回給虛擬機(jī),如大緩存單元和小緩存單元都未命中且加速標(biāo)識無效但數(shù)據(jù)暫存標(biāo)識有效,則從后端存儲集群讀取對應(yīng)小緩存單元的緩存行數(shù)據(jù)并裝載到小緩存單元的緩存行,再把數(shù)據(jù)返回給虛擬機(jī),否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存存儲資源而直接送給前端虛擬機(jī)。
[0093]所述大緩存單元、小緩存單元和寫鏡像單元的大小劃分可由多種方式,優(yōu)選采用滿足如下公式
[0094](Little_Size+Mirror_size)/Little_granularity+Big_ Size/Bi g_granularity< = available_DRAM_Size/entry_size,其中,
[0095]Big_Size為大緩存單元的大小,
[0096]Little_Size為小緩存單元的大小,
[0097]Mirror_size為寫鏡像單元的大小,
[0098]Little_granularity為小緩存單元緩存行的大小,
[0099]Big_granularity為大緩存單元緩存行的大小,
[0100]available_DRAM_Size是可用的存儲緩存狀態(tài)表的DRAM的大小,
[0101]entry_size是緩存每個表項(xiàng)的大小。
[0102]此外,所述寫鏡像單元可由多個邏輯寫鏡像子單元構(gòu)成。
[0103]所述數(shù)據(jù)寫入單元和數(shù)據(jù)讀取單元的操作落到哪個物理托盤優(yōu)選按以下原則:當(dāng)某個物理托盤損壞時,僅僅將原來映射到該物理托盤上的操作轉(zhuǎn)移到其他的物理托盤上,而原來就映射到其他物理托盤上的讀寫操作維持映射關(guān)系不變。
[0104]所述大緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)和無效狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中無有效數(shù)據(jù);當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,只有收到緩存行清除請求時跳轉(zhuǎn)為干凈狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到失效請求時跳轉(zhuǎn)到無效狀態(tài)。
[0105]所述小緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)、無效狀態(tài)和凍結(jié)狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中沒有有效數(shù)據(jù),所述凍結(jié)狀態(tài)表示當(dāng)前緩存行處于凍結(jié)狀態(tài),只能被讀取,不能被寫入;當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài);當(dāng)緩存處于臟狀態(tài)時,收到緩存行清除請求時跳轉(zhuǎn)為無效狀態(tài),收到移動請求時跳轉(zhuǎn)為凍結(jié)狀態(tài);當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到讀請求時跳轉(zhuǎn)到無效狀態(tài);當(dāng)緩存行處于凍結(jié)狀態(tài)時,只有收到移動完成的返回時緩存行跳轉(zhuǎn)到無效狀態(tài)。
[0106]本實(shí)施例中,還優(yōu)選包括守護(hù)單元,該守護(hù)單元用于在后臺將寫鏡像單元中的臟數(shù)據(jù)清除到后端存儲集群,以限制所述閃存存儲資源中需做冗余備份的臟數(shù)據(jù)在預(yù)定的范圍內(nèi)。所述冗余備份優(yōu)選采用寫鏡像方式。
[0107]本領(lǐng)域技術(shù)人員將認(rèn)識到,對以上描述做出眾多變通是可能的,所以實(shí)施例僅是用來描述一個或多個特定實(shí)施方式。
[0108]盡管已經(jīng)描述和敘述了被看作本發(fā)明的示范實(shí)施例,本領(lǐng)域技術(shù)人員將會明白,可以對其作出各種改變和替換,而不會脫離本發(fā)明的精神。另外,可以做出許多修改以將特定情況適配到本發(fā)明的教義,而不會脫離在此描述的本發(fā)明中心概念。所以,本發(fā)明不受限于在此披露的特定實(shí)施例,但本發(fā)明可能還包括屬于本發(fā)明范圍的所有實(shí)施例及其等同物。
【權(quán)利要求】
1.一種非易失性緩存實(shí)現(xiàn)方法,其特征在于:首先將物理的閃存存儲資源虛擬化為閃存存儲池,然后在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元、小緩存單元和寫鏡像單元,所述大緩存單元用于提供常規(guī)的緩存服務(wù),所述小緩存單元用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元用于為大緩存單元和小緩存單元中的臟數(shù)據(jù)提供冗余備份保護(hù)功能; 數(shù)據(jù)寫入時,如該寫操作命中了小緩存單元的緩存行,則把數(shù)據(jù)寫入小緩存單元,如未命中小緩存單元但命中了大緩存單元的緩存行,則把數(shù)據(jù)寫入大緩存單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則將數(shù)據(jù)寫入小緩存單元,否則數(shù)據(jù)不寫入閃存存儲資源而直接寫入后端存儲集群; 數(shù)據(jù)讀取時,如該讀操作命中了小緩存單元的緩存行,則把小緩存單元中的數(shù)據(jù)返回,如未命中小緩存單元但命中了大緩存單元的緩存行,則把大緩存單元中的數(shù)據(jù)返回,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則從后端存儲集群讀取大緩存單元的緩存行對應(yīng)大小的數(shù)據(jù)并裝載到大緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識無效但數(shù)據(jù)暫存標(biāo)識有效,則從后端存儲集群讀取對應(yīng)小緩存單元的緩存行數(shù)據(jù)并裝載到小緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存存儲資源而直接送給前端數(shù)據(jù)申請單元。
2.如權(quán)利要求1所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述大緩存單元、小緩存單元和寫鏡像單元的大小滿足如下公式
(Little_Size+Mirror_size)/Little_granularity+Big_Size/Big_granularity< =
avaiIabIe_DRAM_Size/entry_size,其中, Big_Size為大緩存單元的大小, Little_Size為小緩存單元的大小, Mirror_size為寫鏡像單元的大小, Little_granularity為小緩存單元緩存行的大小, Big_granuIarity為大緩存單元緩存行的大小, available_DRAM_Size是可用的存儲緩存狀態(tài)表的DRAM的大小, entry_size是緩存每個表項(xiàng)的大小。
3.如權(quán)利要求1所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述寫鏡像單元由至少一個邏輯寫鏡像子單元組成,所述大緩存單元、小緩存單元分別由至少一個邏輯大緩存子單元、至少一個邏輯小緩存子單元組成。
4.如權(quán)利要求1所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述物理的閃存存儲資源包括兩個以上物理托盤,所述大緩存單元、小緩存單元和寫鏡像單元均橫跨所述兩個以上物理托盤。
5.如權(quán)利要求4所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:數(shù)據(jù)在寫入所述大緩存單元、小緩存單元和寫鏡像單元時,所述大緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置處于不同的所述物理托盤上,所述小緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置亦處于不同的所述物理托盤上。
6.如權(quán)利要求4所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述小緩存單元和寫鏡像單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤,所述大緩存單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤。
7.如權(quán)利要求4所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于,數(shù)據(jù)寫入操作和數(shù)據(jù)讀取操作落到哪個物理托盤按以下原則:當(dāng)某個物理托盤損壞時,僅僅將原來映射到該物理托盤上的操作轉(zhuǎn)移到其他的物理托盤上,而原來就映射到其他物理托盤上的讀寫操作維持映射關(guān)系不變。
8.如權(quán)利要求1所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述大緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)和無效狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中無有效數(shù)據(jù); 當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài); 當(dāng)緩存行處于臟狀態(tài)時,只有收到緩存行清除請求時跳轉(zhuǎn)為干凈狀態(tài); 當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到失效請求時跳轉(zhuǎn)到無效狀態(tài)。
9.如權(quán)利要求1所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述小緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)、無效狀態(tài)和凍結(jié)狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中沒有有效數(shù)據(jù),所述凍結(jié)狀態(tài)表示當(dāng)前緩存行處于凍結(jié)狀態(tài),只能被讀取,不能被寫入; 當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài); 當(dāng)緩存行處于臟狀態(tài)時,收到緩存行清除請求時跳轉(zhuǎn)為無效狀態(tài),收到移動請求時跳轉(zhuǎn)為凍結(jié)狀態(tài); 當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到讀請求時跳轉(zhuǎn)到無效狀態(tài); 當(dāng)緩存行處于凍結(jié)狀態(tài)時,只有收到移動完成的返回時緩存行跳轉(zhuǎn)到無效狀態(tài)。
10.如權(quán)利要求1所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:還包括守護(hù)單元,該守護(hù)單元用于在后臺將寫鏡像單元中的臟數(shù)據(jù)清除到后端存儲集群,以限制所述閃存存儲資源中需做冗余備份的臟數(shù)據(jù)在預(yù)定的范圍內(nèi)。
11.如權(quán)利要求10所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述冗余備份采用寫鏡像方式。
12.如權(quán)利要求1-11任一項(xiàng)所述的非易失性緩存實(shí)現(xiàn)方法,其特征在于:所述物理的閃存存儲資源是閃存或相位存儲器。
13.一種非易失性緩存實(shí)現(xiàn)裝置,其特征在于包括: 閃存存儲資源虛擬化單元,用于將物理的閃存存儲資源虛擬化為閃存存儲池; 邏輯存儲單元創(chuàng)建單元,用于在所述存儲池上創(chuàng)建三種邏輯存儲單元,大緩存單元、小緩存單元和寫鏡像單元,所述大緩存單元用于提供常規(guī)的緩存服務(wù),所述小緩存單元用于提供隨機(jī)寫操作的加速服務(wù)和讀操作的數(shù)據(jù)暫存服務(wù),所述寫鏡像單元用于為大緩存和小緩存中的臟數(shù)據(jù)提供冗余備份保護(hù)功能; 數(shù)據(jù)寫入單元和數(shù)據(jù)讀取單元; 所述數(shù)據(jù)寫入單元進(jìn)行數(shù)據(jù)寫入時,如該寫操作命中了小緩存單元的緩存行,則把數(shù)據(jù)寫入小緩存單元,如未命中小緩存單元但命中了大緩存單元的緩存行,則把數(shù)據(jù)寫入大緩存單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則將數(shù)據(jù)寫入小緩存單元,否則數(shù)據(jù)不寫入閃存存儲資源而直接寫入后端存儲集群; 所述數(shù)據(jù)讀取單元進(jìn)行數(shù)據(jù)讀取時,如該讀操作命中了小緩存單元的緩存行,則把小緩存單元中的數(shù)據(jù)返回,如未命中小緩存單元但是命中了大緩存單元的緩存行,則把大緩存單元中的數(shù)據(jù)返回,如大緩存單元和小緩存單元都未命中且加速標(biāo)識有效,則從后端存儲集群讀取大緩存單元的緩存行對應(yīng)大小的數(shù)據(jù)并裝載到大緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,如大緩存單元和小緩存單元都未命中且加速標(biāo)識無效但數(shù)據(jù)暫存標(biāo)識有效,則從后端存儲集群讀取對應(yīng)小緩存單元的緩存行數(shù)據(jù)并裝載到小緩存單元的緩存行,再把數(shù)據(jù)返回給前端數(shù)據(jù)申請單元,否則從后端存儲集群讀取的數(shù)據(jù)不經(jīng)過閃存存儲資源而直接送給前端前端數(shù)據(jù)申請單元。
14.如權(quán)利要求13所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述大緩存單元、小緩存單元和寫鏡像單元的大小滿足如下公式
(Little_Size+Mirror_size)/Little_granularity+Big_Size/Big_granularity< =
ava i I ab I e_DRAM_S i z e/entry_size,其中, Big_Size為大緩存單元的大小, Little_Size為小緩存單元的大小, Mirror_size為寫鏡像單元的大小, Little_granularity為小緩存單元緩存行的大小, Big_granuIarity為大緩存單元緩存行的大小, available_DRAM_Size是可用的存儲緩存狀態(tài)表的DRAM的大小, entry_size是緩存每個表項(xiàng)的大小。
15.如權(quán)利要求13所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述寫鏡像單元由至少一個邏輯寫鏡像子單元構(gòu)成,所述大緩存單元、小緩存單元可由一個或者多個邏輯大緩存子單元、邏輯小緩存子單元組成。
16.如權(quán)利要求13所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述物理的閃存存儲資源包括兩個以上物理托盤,所述大緩存單元、小緩存單元和寫鏡像單元均橫跨所述兩個以上物理托盤。
17.如權(quán)利要求16所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述數(shù)據(jù)寫入單元在將數(shù)據(jù)寫入所述大緩存單元、小緩存單元和寫鏡像單元時,所述大緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置處于不同的物理托盤上,所述小緩存單元的寫入物理位置與所述寫鏡像單元的寫入物理位置亦處于不同的物理托盤上。
18.如權(quán)利要求16所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述小緩存單元和寫鏡像單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤,所述大緩存單元的單個緩存行位于同一個物理托盤內(nèi)或橫跨兩個以上物理托盤。
19.如權(quán)利要求16所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于,所述數(shù)據(jù)寫入單元和數(shù)據(jù)讀取單元的操作落到哪個物理托盤按以下原則:當(dāng)某個物理托盤損壞時,僅僅將原來映射到該物理托盤上的操作轉(zhuǎn)移到其他的物理托盤上,而原來就映射到其他物理托盤上的讀寫操作維持映射關(guān)系不變。
20.如權(quán)利要求13所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述大緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)和無效狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中無有效數(shù)據(jù); 當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài); 當(dāng)緩存行處于臟狀態(tài)時,只有收到緩存行清除請求時跳轉(zhuǎn)為干凈狀態(tài); 當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到失效請求時跳轉(zhuǎn)到無效狀態(tài)。
21.如權(quán)利要求13所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述小緩存單元的緩存行至少包括臟狀態(tài)、干凈狀態(tài)、無效狀態(tài)和凍結(jié)狀態(tài),所述臟狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)不一致,所述干凈狀態(tài)表示緩存行中的數(shù)據(jù)和后端存儲系統(tǒng)中的數(shù)據(jù)一致,所述無效狀態(tài)表示緩存行中沒有有效數(shù)據(jù),所述凍結(jié)狀態(tài)表示當(dāng)前緩存行處于凍結(jié)狀態(tài),只能被讀取,不能被寫入; 當(dāng)緩存行處于無效狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到干凈數(shù)據(jù)裝載請求時跳轉(zhuǎn)到干凈狀態(tài); 當(dāng)緩存行處于臟狀態(tài)時,收到緩存行清除請求時跳轉(zhuǎn)為無效狀態(tài),收到移動請求時跳轉(zhuǎn)為凍結(jié)狀態(tài); 當(dāng)緩存行處于干凈狀態(tài)時,收到數(shù)據(jù)寫入請求時跳轉(zhuǎn)到臟狀態(tài),收到讀請求時跳轉(zhuǎn)到無效狀態(tài); 當(dāng)緩存行處于凍結(jié)狀態(tài)時,只有收到移動完成的返回時緩存行跳轉(zhuǎn)到無效狀態(tài)。
22.如權(quán)利要求13所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:還包括守護(hù)單元,該守護(hù)單元用于在后臺將寫鏡像單元中的臟數(shù)據(jù)清除到后端存儲集群,以限制所述閃存存儲資源中需做冗余備份的臟數(shù)據(jù)在預(yù)定的范圍內(nèi)。
23.如權(quán)利要求22所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述冗余備份采用寫鏡像方式。
24.如權(quán)利要求13-23任一項(xiàng)所述的非易失性緩存實(shí)現(xiàn)裝置,其特征在于:所述物理的閃存存儲資源是閃存或相位存儲器。
【文檔編號】G06F12/08GK104484287SQ201410806036
【公開日】2015年4月1日 申請日期:2014年12月19日 優(yōu)先權(quán)日:2014年12月19日
【發(fā)明者】劉建偉, 丁杰, 劉樂樂, 周文 申請人:北京麓柏科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
栖霞市| 靖西县| 洪江市| 宝坻区| 天气| 射阳县| 龙州县| 滦南县| 大埔县| 鄱阳县| 上林县| 兴文县| 巫溪县| 贞丰县| 云南省| 小金县| 元谋县| 昌宁县| 丹寨县| 夏河县| 旬邑县| 措勤县| 大方县| 怀集县| 公安县| 金华市| 十堰市| 长泰县| 青田县| 黄山市| 甘德县| 长岭县| 茶陵县| 高密市| 湘潭县| 南华县| 包头市| 贡山| 瑞金市| 峨眉山市| 乐清市|