一種存儲數(shù)據(jù)處理方法及裝置制造方法
【專利摘要】本發(fā)明實施例提供的存儲數(shù)據(jù)處理方法及裝置,當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,將數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,將其中的有用數(shù)據(jù)搬塊移到其它存儲空間。因為待回收的存儲單元中的無用數(shù)據(jù)塊最多,所以,其中的有用數(shù)據(jù)塊與其它存儲單元相比最少,因此,需要進行搬移的數(shù)據(jù)塊的數(shù)量最少,在回收此存儲單元時,有用數(shù)據(jù)塊搬移的次數(shù)最少;或者,因為待回收的存儲單元中的無用數(shù)據(jù)塊大于預設值,所以,能夠通過預設值將搬移次數(shù)控制在預設范圍內,盡量減少數(shù)據(jù)塊的搬移次數(shù)。因此能夠減少存儲空間回收過程中的數(shù)據(jù)塊的搬移次數(shù),減輕數(shù)據(jù)塊搬移對SSD的磨損。
【專利說明】一種存儲數(shù)據(jù)處理方法及裝置
【技術領域】
[0001]本發(fā)明涉及通信領域,尤其涉及一種存儲數(shù)據(jù)處理方法及裝置。
【背景技術】
[0002]固態(tài)硬盤(Solid State Device,SSD)在使用的過程中,需要進行存儲空間的回收,即將寫滿數(shù)據(jù)的存儲空間中的無用數(shù)據(jù)塊刪除,將其中的有用數(shù)據(jù)塊搬移到其它存儲空間,而有用數(shù)據(jù)塊的搬移會導致固態(tài)硬盤的磨損。
【發(fā)明內容】
[0003]有鑒于此,本發(fā)明實施例提供了一種存儲數(shù)據(jù)處理方法及裝置,目的在于解決有用數(shù)據(jù)塊的搬移而導致的SSD磨損的問題。
[0004]為了實現(xiàn)上述目的,本發(fā)明實施例提供了以下技術方案:
[0005]本發(fā)明實施例的第一方面提供了一種存儲數(shù)據(jù)處理方法,包括:
[0006]當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得;
[0007]將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間;
[0008]將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間。
[0009]在本發(fā)明實施例的第一方面的第一種實現(xiàn)方式中,所述無用數(shù)據(jù)塊包括:
[0010]標識值為0的數(shù)據(jù)塊,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為1。
[0011]在本發(fā)明實施例的第一方面的第二種實現(xiàn)方式中,所述標識值的設置方法至少包括以下一項:
[0012]當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一;
[0013]當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一。
[0014]在本發(fā)明實施例的第一方面的第三種實現(xiàn)方式中,所述將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間包括:
[0015]將所述待回收的存儲空間中的標識值為1的數(shù)據(jù)塊搬移到第一存儲單元;
[0016]將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,所述第一存儲單元與所述第二存儲單元不同,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為1。
[0017]在本發(fā)明實施例的第一方面的第四種實現(xiàn)方式中,所述預設條件至少包括以下一項:
[0018]存儲空間中的剩余存儲空間小于預設閾值;
[0019]寫滿數(shù)據(jù)的存儲單元數(shù)量在所有存儲單元中所占的比例大于預設比值。[0020]本發(fā)明實施例的第二方面提供了一種硬盤控制器,包括:
[0021]統(tǒng)計模塊,用于當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得;
[0022]確定模塊,用于將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間;
[0023]數(shù)據(jù)搬移模塊,用于將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間。
[0024]在本發(fā)明實施例的第二方面的第一種實現(xiàn)方式中,在所述將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間方面,所述確定模塊具體用于:
[0025]將標識值為O的數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為I。
[0026]在本發(fā)明實施例的第二方面的第二種實現(xiàn)方式中,還包括:
[0027]標識值設置模塊,用于當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一,和/或,當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一。
[0028]在本發(fā)明實施例的第二方面的第三種實現(xiàn)方式中,在所述將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間方面,所述數(shù)據(jù)搬移模塊具體用于:
[0029]將所述待回收的存儲空間中的標識值為I的數(shù)據(jù)塊搬移到第一存儲單元;
[0030]將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,所述第一存儲單元與所述第二存儲單元不同,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為I。
[0031]在本發(fā)明實施例的第二方面的第四種實現(xiàn)方式中,在所述當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量方面,所述統(tǒng)計模塊具體用于:
[0032]當存儲空間中的剩余存儲空間小于預設閾值,和/或,寫滿數(shù)據(jù)的存儲單元數(shù)量在所有存儲單元中所占的比例大于預設比值時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量。
[0033]本發(fā)明實施例提供的存儲數(shù)據(jù)處理方法及裝置,當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,將數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,將其中的有用數(shù)據(jù)搬塊移到其它存儲空間。因為待回收的存儲單元中的無用數(shù)據(jù)塊最多,所以,其中的有用數(shù)據(jù)塊與其它存儲單元相比最少,因此,需要進行搬移的數(shù)據(jù)塊的數(shù)量最少,在回收此存儲單元時,有用數(shù)據(jù)塊搬移的次數(shù)最少;或者,因為待回收的存儲單元中的無用數(shù)據(jù)塊大于預設值,所以,能夠通過預設值將搬移次數(shù)控制在預設范圍內,盡量減少數(shù)據(jù)塊的搬移次數(shù)??梢?,本實施例提供的存儲數(shù)據(jù)處理方法及裝置,在回收存儲空間時,先回收無用數(shù)據(jù)塊最多或大于預設值的存儲單元,因此能夠減少存儲空間回收過程中的數(shù)據(jù)塊的搬移次數(shù),減輕數(shù)據(jù)塊搬移對SSD的磨損。
【專利附圖】
【附圖說明】
[0034]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0035]圖1為本發(fā)明實施例公開的一種存儲數(shù)據(jù)處理方法的流程圖;
[0036]圖2為本發(fā)明實施例公開的又一種存儲數(shù)據(jù)處理方法的流程圖;
[0037]圖3為本發(fā)明實施例公開的又一種存儲數(shù)據(jù)處理方法的流程圖;
[0038]圖4為本發(fā)明實施例公開的一種硬盤控制器的結構示意圖;
[0039]圖5為本發(fā)明實施例公開的又一種硬盤控制器的結構示意圖。
【具體實施方式】
[0040]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0041]本發(fā)明實施例公開的一種存儲數(shù)據(jù)處理方法,如圖1所示,包括:
[0042]S101:當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得;
[0043]可選地,各個存儲單元的容量大小可以相同,也可以不同,例如,各個存儲單元的容量均為1MB。
[0044]S102:將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間;
[0045]其中,所述預設值可以由用戶依據(jù)需求預先設定。
[0046]S103:將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間。
[0047]通常,在進行存儲空間的回收時,需要將待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間中,而對于SSD而言,數(shù)據(jù)塊搬移會導致SSD的磨損,從而降低SSD的使用壽命。
[0048]本實施例所述的存儲數(shù)據(jù)處理方法,依據(jù)各個存儲單元中無用數(shù)據(jù)塊的數(shù)量確定待回收的存儲空間,即將無用數(shù)據(jù)塊最多或數(shù)量大于預設值的存儲單元作為待回收的存儲空間,因此,待回收的存儲單元中的有用數(shù)據(jù)塊的數(shù)量最小,或者小于預設值,因此,能夠將搬移有用數(shù)據(jù)塊的次數(shù)降到最小,或者控制在一定范圍內,實現(xiàn)盡可能地降低搬移的次數(shù)的目的,盡量減少因搬移而導致的SSD的磨損。
[0049]本發(fā)明實施例公開的又一種存儲數(shù)據(jù)處理方法,可以應用于SSD系統(tǒng),其中,SSD預先被劃分為多個存儲單元,每個存儲單元的容量大小相同。如圖2所示,本實施例所述方法包括:
[0050]S201:當寫滿數(shù)據(jù)的存儲單元的數(shù)量在所有存儲單元中所占的比例大于預設比值(例如80%)時,統(tǒng)計各個存儲單元中的標識值為0的數(shù)據(jù)塊的數(shù)量;
[0051]本實施例中,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),數(shù)據(jù)塊被引用是指,數(shù)據(jù)塊被系統(tǒng)中的文件或程序使用。數(shù)據(jù)塊的標識值為0,說明數(shù)據(jù)塊沒有被系統(tǒng)中任何文件或程序使用,即標識值為0的數(shù)據(jù)塊為無用數(shù)據(jù)塊。
[0052]可選地,每個存儲單元各自的描述信息中,可以記錄此存儲單元中的各個數(shù)據(jù)塊的標識值,所述標識值的初始值為I。
[0053]S202:將標識值為O的數(shù)據(jù)塊的數(shù)量最大的存儲單元作為待回收的存儲空間;
[0054]S203:將所述待回收的存儲空間中的標識值為I的數(shù)據(jù)塊搬移到第一存儲單元;
[0055]S204:將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,其中,第一存儲單元與第二存儲單元不同;
[0056]S205:將所述待回收的存儲空間中的無用數(shù)據(jù)塊擦除。
[0057]本實施例所述的存儲數(shù)據(jù)處理方法,將標識值為O的數(shù)據(jù)塊最多的存儲單元作為待回收的存儲空間,并將待回收的存儲空間中的標識值不同的數(shù)據(jù)塊搬移到不同的存儲單元,因為標識值表示數(shù)據(jù)塊被引用的次數(shù),所以,標識值大于I的數(shù)據(jù)塊被引用的次數(shù)大于標識值為O的數(shù)據(jù)塊被引用的次數(shù),因此,標志值大于I的數(shù)據(jù)塊變?yōu)闊o用數(shù)據(jù)塊的概率小于標識值為O的數(shù)據(jù)塊,所以,按照被引用的次數(shù)將有用數(shù)據(jù)放置在不同的存儲單元,能夠將變?yōu)闊o用數(shù)據(jù)塊概率相近的數(shù)據(jù)塊集中放置在一個存儲單元中,當此存儲單元作為待回收存儲空間時,其中包括的數(shù)據(jù)塊均為無用數(shù)據(jù)塊的可能性較大,因此,能夠避免有用數(shù)據(jù)塊的搬移過程,從而減小對SSD的磨損。
[0058]本發(fā)明實施例公開的又一種存儲數(shù)據(jù)處理方法,可以應用于SSD系統(tǒng),其中,SSD可以被劃分為多個存儲單元,記為segment,每個存儲單元(segment)的容量大小相同,每個存儲單元的物理地址與指向所述存儲單元的邏輯區(qū)塊地址(Logical Block Address,LBA)相對應,每個segment具有唯一的編號,存儲單元的物理地址使用{segment編號+segment編號內偏移}表示。
[0059]本實施例中,對不同狀態(tài)的segment進行標記:例如,將寫滿數(shù)據(jù)的segment標記為Fulledsegment,將沒有寫入數(shù)據(jù)的segment標記為Idlesegment,將正在進行回收的segment 標記為 GCSsegment0
[0060]如圖3所示,本實施例所述方法包括:
[0061]S301:當存儲空間中的剩余存儲空間小于預設閾值時,統(tǒng)計每個Fulledsegment中的標識值為O的數(shù)據(jù)塊的數(shù)量;
[0062]本實施例中,標識值用于表示數(shù)據(jù)塊被引用的次數(shù),其初始值為I。所述標識值的設置方法可以包括以下任意一項:
[0063]A:當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一,例如,編號為I的segment中的數(shù)據(jù)塊的標識值為1,所述數(shù)據(jù)塊又被寫入編號為2的segment,則編號為I的segment中的數(shù)據(jù)塊的標識值為2。
[0064]或者,B:當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一,例如,標識值為I的數(shù)據(jù)塊存儲在編號為I的segment中,所述數(shù)據(jù)塊的物理地址為{segmentl+segmentl內偏移},所述物理地址與LBAl對應,當LBAl從指向{segmentl+segmentl內偏移}變更為指向物理地址{segment2+segment2內偏移}時,物理地址{segmentl+segmentl內偏移}的數(shù)據(jù)塊的標識值變?yōu)镺。
[0065]上述A或B過程可以應用于向SSD硬盤寫入數(shù)據(jù)的過程中,例如向SSD硬盤寫入新的數(shù)據(jù)時,可以判斷待寫入的數(shù)據(jù)是否存在于SSD硬盤中,如果是,則滿足第一存儲單元中的數(shù)據(jù)塊被寫入第二存儲單元的條件。
[0066]S302:將標識值為O的數(shù)據(jù)塊的數(shù)量最大的存儲單元作為待回收的存儲空間,可以標記為GCSegment ;
[0067]S303:將GCSegment中標識值為1的數(shù)據(jù)塊搬移到第一 Idlesegment中;
[0068]第一 Idlesegment可以標記為靜態(tài)數(shù)據(jù)存儲單元(StaticDataSegment),用于存放標識值為1的數(shù)據(jù)塊,當?shù)谝?Idlesegment寫滿后,轉為Fulledsegment。
[0069]S304:將GCSegment中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二 Idlesegment 中;
[0070]第二 Idlesegment可以標記為動態(tài)數(shù)據(jù)存儲單元(DynamicDataSegment),用于存放標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊,第二 Idlesegment寫滿后,轉為Fulledsegment。
[0071]需要說明的是,當數(shù)據(jù)塊被搬移后,指向所述數(shù)據(jù)塊的LBA不變,則所述LBA指向的物理地址發(fā)生變化,滿足上述B的條件,所以,如果所述數(shù)據(jù)塊以復制的方式被搬移到新的存儲單元,則待回收存儲空間中的所述數(shù)據(jù)塊的標識值更新為0。
[0072]S305:將GCSegment中的標識值為0的數(shù)據(jù)塊擦除。
[0073]本實施例所述的方法,可以在向SSD硬盤寫入數(shù)據(jù)塊時,設置已存儲在SSD硬盤中的數(shù)據(jù)塊的標識值,從而依據(jù)標識值優(yōu)先回收無用數(shù)據(jù)塊最多的存儲單元,并將引用次數(shù)相近的有用數(shù)據(jù)塊集中放置,從而減少在回收過程中對有用數(shù)據(jù)塊的搬移次數(shù),降低數(shù)據(jù)搬移對SSD硬盤的磨損。
[0074]與上述方法實施例相對應地,本發(fā)明實施例還公開了一種硬盤控制器,如圖4所示,包括:
[0075]統(tǒng)計模塊401,用于當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得;
[0076]確定模塊402,用于將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間;
[0077]數(shù)據(jù)搬移模塊403,用于將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間。
[0078]本實施例所述的硬盤控制器,將無用數(shù)據(jù)塊數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,因此,能夠減小有用數(shù)據(jù)塊的搬移次數(shù),或者將有用數(shù)據(jù)塊的搬移次數(shù)控制在預設值內,從而能夠盡量減少數(shù)據(jù)塊的搬移次數(shù),從而避免搬移數(shù)據(jù)塊對存儲設備造成的磨損,提聞存儲設備的使用壽命。
[0079]可選地,本實施例中,在所述將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間方面,所述確定模塊可以具體用于:將標識值為0的數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為1。
[0080]可選地,本實施例所述的硬盤控制器,還可以包括:標識值設置模塊,用于當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一,和/或,當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一。
[0081]可選地,本實施例中,在所述將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間方面,所述數(shù)據(jù)搬移模塊具體用于:將所述待回收的存儲空間中的標識值為1的數(shù)據(jù)塊搬移到第一存儲單元,以及將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,所述第一存儲單元與所述第二存儲單元不同,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為I。
[0082]在所述當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量方面,所述統(tǒng)計模塊具體用于:當存儲空間中的剩余存儲空間小于預設閾值,和/或,寫滿數(shù)據(jù)的存儲單元數(shù)量在所有存儲單元中所占的比例大于預設比值時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量。
[0083]本發(fā)明實施例還公開了另一種硬盤控制器,如圖5所示,包括:
[0084]處理器501,用于當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得,將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,并將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間;
[0085]存儲器502,用于存儲所述處理器中運行的程序以及在所述程序的運行過程中產(chǎn)生的數(shù)據(jù);
[0086]所述處理器501和所述存儲器502通過數(shù)據(jù)總線503進行通信。
[0087]本實施例所述的硬盤控制器,能夠盡量減少有用數(shù)據(jù)塊的搬移次數(shù),從而避免因數(shù)據(jù)塊的搬移而導致的硬盤磨損。
[0088]可選地,在所述將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間方面,本實施例所述處理器具體用于:將標識值為O的數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為I。
[0089]可選地,本實施例中的處理器還可以用于:當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一,和/或,當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一。
[0090]可選地,在所述將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間方面,所述處理器具體用于:將所述待回收的存儲空間中的標識值為I的數(shù)據(jù)塊搬移到第一存儲單元,并將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,所述第一存儲單元與所述第二存儲單元不同,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為I。
[0091]在所述當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量方面,所述處理器具體用于:當存儲空間中的剩余存儲空間小于預設閾值,和/或,寫滿數(shù)據(jù)的存儲單元數(shù)量在所有存儲單元中所占的比例大于預設比值時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量。
[0092]本實施例方法所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算設備可讀取存儲介質中?;谶@樣的理解,本發(fā)明實施例對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質中,包括若干指令用以使得一臺計算設備(可以是個人計算機,服務器,移動計算設備或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0093]本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
[0094]對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權利要求】
1.一種存儲數(shù)據(jù)處理方法,其特征在于,包括: 當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得; 將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間; 將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間。
2.根據(jù)權利要求1所述的方法,其特征在于,所述無用數(shù)據(jù)塊包括: 標識值為0的數(shù)據(jù)塊,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為1。
3.根據(jù)權利要求2所述的方法,其特征在于,所述標識值的設置方法至少包括以下一項: 當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一; 當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一。
4.根據(jù)權利要求1至3任一項所述的方法,其特征在于,所述將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間包括: 將所述待回收的存儲空間中的標識值為1的數(shù)據(jù)塊搬移到第一存儲單元; 將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,所述第一存儲單元與所述第二存儲單元不同,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為1。
5.根據(jù)權利要求1至3任一項所述的方法,其特征在于,所述預設條件至少包括以下一項: 存儲空間中的剩余存儲空間小于預設閾值; 寫滿數(shù)據(jù)的存儲單元數(shù)量在所有存儲單元中所占的比例大于預設比值。
6.一種硬盤控制器,其特征在于,包括: 統(tǒng)計模塊,用于當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量,所述各個存儲單元通過預先劃分所述存儲空間獲得; 確定模塊,用于將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間; 數(shù)據(jù)搬移模塊,用于將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間。
7.根據(jù)權利要求6所述的硬盤控制器,其特征在于,在所述將無用數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間方面,所述確定模塊具體用于: 將標識值為0的數(shù)據(jù)塊的數(shù)量最大或大于預設值的存儲單元作為待回收的存儲空間,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為1。
8.根據(jù)權利要求7所述的硬盤控制器,其特征在于,還包括: 標識值設置模塊,用于當?shù)谝淮鎯卧械臄?shù)據(jù)塊被寫入第二存儲單元時,所述第一存儲單元中的所述數(shù)據(jù)塊的標識值加一,和/或,當?shù)谝淮鎯卧獙倪壿媴^(qū)塊地址指向第二存儲單元時,所述第一存儲單元中的數(shù)據(jù)塊的標識值減一。
9.根據(jù)權利要求6至8任一項所述的硬盤控制器,其特征在于,在所述將所述待回收的存儲空間中的有用數(shù)據(jù)塊搬移到其它存儲空間方面,所述數(shù)據(jù)搬移模塊具體用于: 將所述待回收的存儲空間中的標識值為I的數(shù)據(jù)塊搬移到第一存儲單元; 將所述待回收的存儲空間中的標識值大于1、或者帶有快照或備份標記的數(shù)據(jù)塊搬移到第二存儲單元,所述第一存儲單元與所述第二存儲單元不同,所述標識值用于表示數(shù)據(jù)塊被引用的次數(shù),所述標識值的初始值為I。
10.根據(jù)權利要求6至8任一項所述的硬盤控制器,其特征在于,在所述當存儲空間滿足預設條件時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量方面,所述統(tǒng)計模塊具體用于: 當存儲空間中的剩余存儲空間小于預設閾值,和/或,寫滿數(shù)據(jù)的存儲單元數(shù)量在所有存儲單元中所占的比例大于預設比值時,統(tǒng)計各個存儲單元中的無用數(shù)據(jù)塊的數(shù)量。
【文檔編號】G06F12/02GK103577336SQ201310505056
【公開日】2014年2月12日 申請日期:2013年10月23日 優(yōu)先權日:2013年10月23日
【發(fā)明者】魏明昌, 張程偉 申請人:華為技術有限公司