一種存儲設(shè)備及其垃圾數(shù)據(jù)回收的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲系統(tǒng)領(lǐng)域,尤其涉及一種存儲設(shè)備及其垃圾數(shù)據(jù)回收的方法。
【背景技術(shù)】
[0002]存儲設(shè)備在進行重復(fù)數(shù)據(jù)刪除后,會將非重復(fù)的數(shù)據(jù)塊存儲到特定的存儲區(qū)域,例如容器(container)中,并且建立數(shù)據(jù)塊的邏輯地址到存儲該非重復(fù)塊的物理地址的映射關(guān)系。在后續(xù)的重復(fù)數(shù)據(jù)刪除操作中,存儲設(shè)備確認重復(fù)的數(shù)據(jù)塊時,則不再存儲重復(fù)的數(shù)據(jù)塊,將該重復(fù)數(shù)據(jù)塊的邏輯地址指向該非重復(fù)數(shù)據(jù)塊的物理地址。同時會建立非重復(fù)數(shù)據(jù)塊所在的物理地址與邏輯地址的映射,用于表示該非重復(fù)數(shù)據(jù)塊被引用的次數(shù)。一個存儲區(qū)域中的非重復(fù)數(shù)據(jù)塊的物理地址沒有與邏輯地址的映射關(guān)系時,表示該非重復(fù)數(shù)據(jù)塊不再被任何邏輯地址引用時,引用次數(shù)變?yōu)镺,則就意味著該非重復(fù)數(shù)據(jù)塊需要被刪除。通常存儲設(shè)備會以一個存儲區(qū)域為粒度,將引用次數(shù)為O的數(shù)據(jù)塊刪除,同時將該存儲區(qū)域中引用次數(shù)不為O的數(shù)據(jù)塊(也稱為有效數(shù)據(jù)塊)復(fù)制到新的存儲區(qū)域中存儲,并且建立邏輯地址到有效數(shù)據(jù)塊的物理地址的映射關(guān)系及有效數(shù)據(jù)塊的物理地址與引用該數(shù)據(jù)塊的邏輯地址的映射關(guān)系,并將原存儲區(qū)域中的數(shù)據(jù)塊刪除,這一過程稱為垃圾回收,可見,垃圾回收會帶來額外的讀寫開銷。其中,有效數(shù)據(jù)塊的物理地址與引用該數(shù)據(jù)塊的邏輯地址的映射稱為反向映射,用于記錄該映射的表稱為反向映射表。
[0003]現(xiàn)有的垃圾回收方式中,如果存儲區(qū)域中的有效數(shù)據(jù)塊占該存儲區(qū)域中存儲的數(shù)據(jù)塊的比例小于一定值(80%),就對該存儲區(qū)域進行垃圾回收。但是在將該存儲區(qū)域中的有效數(shù)據(jù)復(fù)制到新的存儲區(qū)域、建立有效數(shù)據(jù)塊的邏輯地址與有效數(shù)據(jù)塊的物理地址的映射關(guān)系及記錄有效數(shù)據(jù)塊的物理地址與引用該數(shù)據(jù)塊的邏輯地址的映射關(guān)系會增加額外的讀寫開銷。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供了一種存儲設(shè)備及其垃圾數(shù)據(jù)回收的方法,根據(jù)存儲區(qū)域中非重復(fù)數(shù)據(jù)塊中有效數(shù)據(jù)塊的數(shù)量以及所述有效數(shù)據(jù)塊的被引用次數(shù),決定是否對存儲區(qū)域進行垃圾數(shù)據(jù)回收,從而減小垃圾數(shù)據(jù)回收帶來的寫放大。
[0005]—方面,本發(fā)明實施例提供了一種存儲設(shè)備垃圾數(shù)據(jù)回收的方法,根據(jù)存儲區(qū)域中非重復(fù)數(shù)據(jù)塊中有效數(shù)據(jù)塊的數(shù)量以及所述有效數(shù)據(jù)塊的被引用次數(shù)確定所述存儲區(qū)域滿足垃圾回收條件。對滿足垃圾數(shù)據(jù)回收條件的存儲區(qū)域,刪除所述存儲區(qū)域中引用次數(shù)為O的非重復(fù)數(shù)據(jù)塊,并將存儲區(qū)域中有效數(shù)據(jù)塊復(fù)制到目標存儲區(qū)域中。綜合考慮存儲區(qū)域中有效數(shù)據(jù)塊的數(shù)量和有效數(shù)據(jù)塊的被引用次數(shù),減小垃圾數(shù)據(jù)回收帶來的寫放大。
[0006]在一個可能的設(shè)計中,根據(jù)存儲區(qū)域中有效數(shù)據(jù)塊的數(shù)量確定有效數(shù)據(jù)塊比率Vr。有效數(shù)據(jù)塊比率Vr為有效數(shù)據(jù)塊的數(shù)量與所述非重復(fù)數(shù)據(jù)塊的數(shù)量的比值。計算存儲區(qū)域的X*Vr+Y*Rc是否滿足垃圾回收條件。其中,X和Y為常數(shù)。從而根據(jù)有效數(shù)據(jù)塊占所有非重復(fù)數(shù)據(jù)塊的比例作為確定該存儲區(qū)域是否滿足的一個因素,對有效數(shù)據(jù)比率和引用次數(shù)配置一個常量,通過調(diào)節(jié)常量確定有效數(shù)據(jù)比率和引用次數(shù)對存儲區(qū)域是否滿足垃圾回收條件的影響。
[0007]在一個可能的設(shè)計中,目標存儲區(qū)域中的每一個存儲區(qū)域設(shè)置有數(shù)據(jù)塊引用次數(shù)區(qū)間。將存儲區(qū)域中有效數(shù)據(jù)塊復(fù)制到目標存儲區(qū)域時,需要根據(jù)有效數(shù)據(jù)塊的被引用次數(shù)和目標存儲區(qū)域中每一個存儲區(qū)域的數(shù)據(jù)塊引用次數(shù)區(qū)間進行對比。將有效數(shù)據(jù)塊復(fù)制到目標存儲區(qū)域中與有效數(shù)據(jù)塊的引用次數(shù)相對應(yīng)的存儲區(qū)域。從而再對目標存儲區(qū)域進行垃圾數(shù)據(jù)回收時,各個存儲區(qū)域具有相似的引用次數(shù),從而減小對目標存儲區(qū)域在垃圾回收時的寫放大。
[0008]在一個可能的設(shè)計中,有效數(shù)據(jù)塊的被引用次數(shù)由存儲設(shè)備根據(jù)有效數(shù)據(jù)塊的物理地址與邏輯地址的映射關(guān)系確定。從而確定每個存儲區(qū)域中的每個數(shù)據(jù)塊所被引用的次數(shù)。
[0009]另一方面,本發(fā)明實施例提供了一種存儲設(shè)備,所述設(shè)備包括:計算單元和處理單元。計算單元用于根據(jù)存儲區(qū)域中非重復(fù)數(shù)據(jù)塊中有效數(shù)據(jù)塊的數(shù)量以及所述有效數(shù)據(jù)塊的被引用次數(shù)Re確定所述存儲區(qū)域滿足垃圾回收條件。其中,所述有效數(shù)據(jù)塊為引用次數(shù)不為O的非重復(fù)數(shù)據(jù)塊。處理單元,用于刪除所述存儲區(qū)域中引用次數(shù)為O的非重復(fù)數(shù)據(jù)塊以及用于將所述存儲區(qū)域中所述有效數(shù)據(jù)塊復(fù)制到目標存儲區(qū)域。綜合考慮存儲區(qū)域中有效數(shù)據(jù)塊的數(shù)量和有效數(shù)據(jù)塊的被引用次數(shù),減小垃圾數(shù)據(jù)回收帶來的寫放大。
[0010]在一個可能的設(shè)計中,處理單元根據(jù)存儲區(qū)域中有效數(shù)據(jù)塊的數(shù)量確定有效數(shù)據(jù)塊比率Vr。有效數(shù)據(jù)塊比率Vr為有效數(shù)據(jù)塊的數(shù)量與所述非重復(fù)數(shù)據(jù)塊的數(shù)量的比值。計算單元采用X*Vr+Y*Rc計算存儲區(qū)域是否滿足垃圾回收條件。其中,X和Y為常數(shù)。從而根據(jù)有效數(shù)據(jù)塊占所有非重復(fù)數(shù)據(jù)塊的比例作為確定該存儲區(qū)域是否滿足的一個因素,對有效數(shù)據(jù)比率和引用次數(shù)配置一個常量,通過調(diào)節(jié)常量確定有效數(shù)據(jù)比率和引用次數(shù)對存儲區(qū)域是否滿足垃圾回收條件的影響。
[0011]在一個可能的設(shè)計中,目標存儲區(qū)域中的每一個存儲區(qū)域設(shè)置有數(shù)據(jù)塊引用次數(shù)區(qū)間。處理單元在將存儲區(qū)域中有效數(shù)據(jù)塊復(fù)制到目標存儲區(qū)域時,需要根據(jù)有效數(shù)據(jù)塊的被引用次數(shù)和目標存儲區(qū)域中每一個存儲區(qū)域的數(shù)據(jù)塊引用次數(shù)區(qū)間進行對比。將有效數(shù)據(jù)塊復(fù)制到目標存儲區(qū)域中與有效數(shù)據(jù)塊的引用次數(shù)相對應(yīng)的存儲區(qū)域。從而再對模板存儲區(qū)域進行垃圾數(shù)據(jù)回收時,各個存儲區(qū)域具有相似的引用次數(shù),從而減小對目標存儲區(qū)域在垃圾回收時的寫放大。
[0012]在一個可能的設(shè)計中,處理單元所采用的有效數(shù)據(jù)塊的被引用次數(shù)由存儲設(shè)備根據(jù)有效數(shù)據(jù)塊的物理地址與邏輯地址的映射關(guān)系確定。從而確定每個存儲區(qū)域中的每個數(shù)據(jù)塊所被引用的次數(shù)。
[0013]本發(fā)明提出一種存儲設(shè)備及其垃圾數(shù)據(jù)的回收方法,根據(jù)存儲區(qū)域中非重復(fù)數(shù)據(jù)塊中有效數(shù)據(jù)塊的數(shù)量以及所述有效數(shù)據(jù)塊的被引用次數(shù)確定所述存儲區(qū)域滿足垃圾回收條件。對滿足條件的存儲區(qū)域進行垃圾數(shù)據(jù)回收,從而減少了垃圾回收帶來的元數(shù)據(jù)修改,減小了寫放大。
【附圖說明】
[0014]圖1為本發(fā)明實施例提供的一種存儲設(shè)備;
[0015]圖2為本發(fā)明實施例提供的一種存儲設(shè)備中保存的映射表;
[0016]圖3為本發(fā)明實施例提供的一種存儲設(shè)備中保存的反向映射表;
[0017]圖4為本發(fā)明實施例提供的一種存儲設(shè)備中保存的指紋表;
[0018]圖5為本發(fā)明實施例提供的一種存儲設(shè)備;
[0019]圖6為本發(fā)明實施例提供的一種存儲設(shè)備中保存的映射表;
[0020]圖7為本發(fā)明實施例提供的一種存儲設(shè)備垃圾數(shù)據(jù)回收的方法流程圖;
[0021 ]圖8為本發(fā)明實施例提供的一種存儲設(shè)備。
【具體實施方式】
[0022]下面,通過附圖和具體實施例對本發(fā)明的技術(shù)方案做進一步詳細的描述。
[0023]本發(fā)明實施例提供一種存儲設(shè)備及其垃圾數(shù)據(jù)回收的方法。通過統(tǒng)計存儲區(qū)域中非重復(fù)數(shù)據(jù)塊中有效數(shù)據(jù)塊的比率Vr以及所述有效數(shù)據(jù)塊的被引用次數(shù)Re。確定存儲區(qū)域是否滿足垃圾回收條件。對滿足垃圾數(shù)據(jù)回收條件的存儲區(qū)域中包括的引用次數(shù)為O的數(shù)據(jù)塊進行垃圾數(shù)據(jù)回收。
[0024]圖1為本發(fā)明實施例提供的一種存儲設(shè)備。如圖1所示,存儲設(shè)備與主機相連,接收主機的相關(guān)請求。存儲設(shè)備包括持久化存儲介質(zhì)和存儲控制器。
[0025]持久化存儲介質(zhì)可以是一個或多個