一种存储数据处理方法及装置制造方法
【专利摘要】本发明实施例提供的存储数据处理方法及装置,当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,将数量最大或大于预设值的存储单元作为待回收的存储空间,将其中的有用数据搬块移到其它存储空间。因为待回收的存储单元中的无用数据块最多,所以,其中的有用数据块与其它存储单元相比最少,因此,需要进行搬移的数据块的数量最少,在回收此存储单元时,有用数据块搬移的次数最少;或者,因为待回收的存储单元中的无用数据块大于预设值,所以,能够通过预设值将搬移次数控制在预设范围内,尽量减少数据块的搬移次数。因此能够减少存储空间回收过程中的数据块的搬移次数,减轻数据块搬移对SSD的磨损。
【专利说明】一种存储数据处理方法及装置
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种存储数据处理方法及装置。
【背景技术】
[0002]固态硬盘(Solid State Device,SSD)在使用的过程中,需要进行存储空间的回收,即将写满数据的存储空间中的无用数据块删除,将其中的有用数据块搬移到其它存储空间,而有用数据块的搬移会导致固态硬盘的磨损。
【发明内容】
[0003]有鉴于此,本发明实施例提供了一种存储数据处理方法及装置,目的在于解决有用数据块的搬移而导致的SSD磨损的问题。
[0004]为了实现上述目的,本发明实施例提供了以下技术方案:
[0005]本发明实施例的第一方面提供了一种存储数据处理方法,包括:
[0006]当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得;
[0007]将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间;
[0008]将所述待回收的存储空间中的有用数据块搬移到其它存储空间。
[0009]在本发明实施例的第一方面的第一种实现方式中,所述无用数据块包括:
[0010]标识值为0的数据块,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为1。
[0011]在本发明实施例的第一方面的第二种实现方式中,所述标识值的设置方法至少包括以下一项:
[0012]当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一;
[0013]当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一。
[0014]在本发明实施例的第一方面的第三种实现方式中,所述将所述待回收的存储空间中的有用数据块搬移到其它存储空间包括:
[0015]将所述待回收的存储空间中的标识值为1的数据块搬移到第一存储单元;
[0016]将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,所述第一存储单元与所述第二存储单元不同,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为1。
[0017]在本发明实施例的第一方面的第四种实现方式中,所述预设条件至少包括以下一项:
[0018]存储空间中的剩余存储空间小于预设阈值;
[0019]写满数据的存储单元数量在所有存储单元中所占的比例大于预设比值。[0020]本发明实施例的第二方面提供了一种硬盘控制器,包括:
[0021]统计模块,用于当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得;
[0022]确定模块,用于将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间;
[0023]数据搬移模块,用于将所述待回收的存储空间中的有用数据块搬移到其它存储空间。
[0024]在本发明实施例的第二方面的第一种实现方式中,在所述将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间方面,所述确定模块具体用于:
[0025]将标识值为O的数据块的数量最大或大于预设值的存储单元作为待回收的存储空间,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为I。
[0026]在本发明实施例的第二方面的第二种实现方式中,还包括:
[0027]标识值设置模块,用于当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一,和/或,当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一。
[0028]在本发明实施例的第二方面的第三种实现方式中,在所述将所述待回收的存储空间中的有用数据块搬移到其它存储空间方面,所述数据搬移模块具体用于:
[0029]将所述待回收的存储空间中的标识值为I的数据块搬移到第一存储单元;
[0030]将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,所述第一存储单元与所述第二存储单元不同,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为I。
[0031]在本发明实施例的第二方面的第四种实现方式中,在所述当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量方面,所述统计模块具体用于:
[0032]当存储空间中的剩余存储空间小于预设阈值,和/或,写满数据的存储单元数量在所有存储单元中所占的比例大于预设比值时,统计各个存储单元中的无用数据块的数量。
[0033]本发明实施例提供的存储数据处理方法及装置,当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,将数量最大或大于预设值的存储单元作为待回收的存储空间,将其中的有用数据搬块移到其它存储空间。因为待回收的存储单元中的无用数据块最多,所以,其中的有用数据块与其它存储单元相比最少,因此,需要进行搬移的数据块的数量最少,在回收此存储单元时,有用数据块搬移的次数最少;或者,因为待回收的存储单元中的无用数据块大于预设值,所以,能够通过预设值将搬移次数控制在预设范围内,尽量减少数据块的搬移次数。可见,本实施例提供的存储数据处理方法及装置,在回收存储空间时,先回收无用数据块最多或大于预设值的存储单元,因此能够减少存储空间回收过程中的数据块的搬移次数,减轻数据块搬移对SSD的磨损。
【专利附图】
【附图说明】
[0034]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0035]图1为本发明实施例公开的一种存储数据处理方法的流程图;
[0036]图2为本发明实施例公开的又一种存储数据处理方法的流程图;
[0037]图3为本发明实施例公开的又一种存储数据处理方法的流程图;
[0038]图4为本发明实施例公开的一种硬盘控制器的结构示意图;
[0039]图5为本发明实施例公开的又一种硬盘控制器的结构示意图。
【具体实施方式】
[0040]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]本发明实施例公开的一种存储数据处理方法,如图1所示,包括:
[0042]S101:当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得;
[0043]可选地,各个存储单元的容量大小可以相同,也可以不同,例如,各个存储单元的容量均为1MB。
[0044]S102:将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间;
[0045]其中,所述预设值可以由用户依据需求预先设定。
[0046]S103:将所述待回收的存储空间中的有用数据块搬移到其它存储空间。
[0047]通常,在进行存储空间的回收时,需要将待回收的存储空间中的有用数据块搬移到其它存储空间中,而对于SSD而言,数据块搬移会导致SSD的磨损,从而降低SSD的使用寿命。
[0048]本实施例所述的存储数据处理方法,依据各个存储单元中无用数据块的数量确定待回收的存储空间,即将无用数据块最多或数量大于预设值的存储单元作为待回收的存储空间,因此,待回收的存储单元中的有用数据块的数量最小,或者小于预设值,因此,能够将搬移有用数据块的次数降到最小,或者控制在一定范围内,实现尽可能地降低搬移的次数的目的,尽量减少因搬移而导致的SSD的磨损。
[0049]本发明实施例公开的又一种存储数据处理方法,可以应用于SSD系统,其中,SSD预先被划分为多个存储单元,每个存储单元的容量大小相同。如图2所示,本实施例所述方法包括:
[0050]S201:当写满数据的存储单元的数量在所有存储单元中所占的比例大于预设比值(例如80%)时,统计各个存储单元中的标识值为0的数据块的数量;
[0051]本实施例中,所述标识值用于表示数据块被引用的次数,数据块被引用是指,数据块被系统中的文件或程序使用。数据块的标识值为0,说明数据块没有被系统中任何文件或程序使用,即标识值为0的数据块为无用数据块。
[0052]可选地,每个存储单元各自的描述信息中,可以记录此存储单元中的各个数据块的标识值,所述标识值的初始值为I。
[0053]S202:将标识值为O的数据块的数量最大的存储单元作为待回收的存储空间;
[0054]S203:将所述待回收的存储空间中的标识值为I的数据块搬移到第一存储单元;
[0055]S204:将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,其中,第一存储单元与第二存储单元不同;
[0056]S205:将所述待回收的存储空间中的无用数据块擦除。
[0057]本实施例所述的存储数据处理方法,将标识值为O的数据块最多的存储单元作为待回收的存储空间,并将待回收的存储空间中的标识值不同的数据块搬移到不同的存储单元,因为标识值表示数据块被引用的次数,所以,标识值大于I的数据块被引用的次数大于标识值为O的数据块被引用的次数,因此,标志值大于I的数据块变为无用数据块的概率小于标识值为O的数据块,所以,按照被引用的次数将有用数据放置在不同的存储单元,能够将变为无用数据块概率相近的数据块集中放置在一个存储单元中,当此存储单元作为待回收存储空间时,其中包括的数据块均为无用数据块的可能性较大,因此,能够避免有用数据块的搬移过程,从而减小对SSD的磨损。
[0058]本发明实施例公开的又一种存储数据处理方法,可以应用于SSD系统,其中,SSD可以被划分为多个存储单元,记为segment,每个存储单元(segment)的容量大小相同,每个存储单元的物理地址与指向所述存储单元的逻辑区块地址(Logical Block Address,LBA)相对应,每个segment具有唯一的编号,存储单元的物理地址使用{segment编号+segment编号内偏移}表示。
[0059]本实施例中,对不同状态的segment进行标记:例如,将写满数据的segment标记为Fulledsegment,将没有写入数据的segment标记为Idlesegment,将正在进行回收的segment 标记为 GCSsegment0
[0060]如图3所示,本实施例所述方法包括:
[0061]S301:当存储空间中的剩余存储空间小于预设阈值时,统计每个Fulledsegment中的标识值为O的数据块的数量;
[0062]本实施例中,标识值用于表示数据块被引用的次数,其初始值为I。所述标识值的设置方法可以包括以下任意一项:
[0063]A:当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一,例如,编号为I的segment中的数据块的标识值为1,所述数据块又被写入编号为2的segment,则编号为I的segment中的数据块的标识值为2。
[0064]或者,B:当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一,例如,标识值为I的数据块存储在编号为I的segment中,所述数据块的物理地址为{segmentl+segmentl内偏移},所述物理地址与LBAl对应,当LBAl从指向{segmentl+segmentl内偏移}变更为指向物理地址{segment2+segment2内偏移}时,物理地址{segmentl+segmentl内偏移}的数据块的标识值变为O。
[0065]上述A或B过程可以应用于向SSD硬盘写入数据的过程中,例如向SSD硬盘写入新的数据时,可以判断待写入的数据是否存在于SSD硬盘中,如果是,则满足第一存储单元中的数据块被写入第二存储单元的条件。
[0066]S302:将标识值为O的数据块的数量最大的存储单元作为待回收的存储空间,可以标记为GCSegment ;
[0067]S303:将GCSegment中标识值为1的数据块搬移到第一 Idlesegment中;
[0068]第一 Idlesegment可以标记为静态数据存储单元(StaticDataSegment),用于存放标识值为1的数据块,当第一 Idlesegment写满后,转为Fulledsegment。
[0069]S304:将GCSegment中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二 Idlesegment 中;
[0070]第二 Idlesegment可以标记为动态数据存储单元(DynamicDataSegment),用于存放标识值大于1、或者带有快照或备份标记的数据块,第二 Idlesegment写满后,转为Fulledsegment。
[0071]需要说明的是,当数据块被搬移后,指向所述数据块的LBA不变,则所述LBA指向的物理地址发生变化,满足上述B的条件,所以,如果所述数据块以复制的方式被搬移到新的存储单元,则待回收存储空间中的所述数据块的标识值更新为0。
[0072]S305:将GCSegment中的标识值为0的数据块擦除。
[0073]本实施例所述的方法,可以在向SSD硬盘写入数据块时,设置已存储在SSD硬盘中的数据块的标识值,从而依据标识值优先回收无用数据块最多的存储单元,并将引用次数相近的有用数据块集中放置,从而减少在回收过程中对有用数据块的搬移次数,降低数据搬移对SSD硬盘的磨损。
[0074]与上述方法实施例相对应地,本发明实施例还公开了一种硬盘控制器,如图4所示,包括:
[0075]统计模块401,用于当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得;
[0076]确定模块402,用于将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间;
[0077]数据搬移模块403,用于将所述待回收的存储空间中的有用数据块搬移到其它存储空间。
[0078]本实施例所述的硬盘控制器,将无用数据块数量最大或大于预设值的存储单元作为待回收的存储空间,因此,能够减小有用数据块的搬移次数,或者将有用数据块的搬移次数控制在预设值内,从而能够尽量减少数据块的搬移次数,从而避免搬移数据块对存储设备造成的磨损,提闻存储设备的使用寿命。
[0079]可选地,本实施例中,在所述将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间方面,所述确定模块可以具体用于:将标识值为0的数据块的数量最大或大于预设值的存储单元作为待回收的存储空间,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为1。
[0080]可选地,本实施例所述的硬盘控制器,还可以包括:标识值设置模块,用于当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一,和/或,当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一。
[0081]可选地,本实施例中,在所述将所述待回收的存储空间中的有用数据块搬移到其它存储空间方面,所述数据搬移模块具体用于:将所述待回收的存储空间中的标识值为1的数据块搬移到第一存储单元,以及将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,所述第一存储单元与所述第二存储单元不同,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为I。
[0082]在所述当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量方面,所述统计模块具体用于:当存储空间中的剩余存储空间小于预设阈值,和/或,写满数据的存储单元数量在所有存储单元中所占的比例大于预设比值时,统计各个存储单元中的无用数据块的数量。
[0083]本发明实施例还公开了另一种硬盘控制器,如图5所示,包括:
[0084]处理器501,用于当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得,将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间,并将所述待回收的存储空间中的有用数据块搬移到其它存储空间;
[0085]存储器502,用于存储所述处理器中运行的程序以及在所述程序的运行过程中产生的数据;
[0086]所述处理器501和所述存储器502通过数据总线503进行通信。
[0087]本实施例所述的硬盘控制器,能够尽量减少有用数据块的搬移次数,从而避免因数据块的搬移而导致的硬盘磨损。
[0088]可选地,在所述将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间方面,本实施例所述处理器具体用于:将标识值为O的数据块的数量最大或大于预设值的存储单元作为待回收的存储空间,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为I。
[0089]可选地,本实施例中的处理器还可以用于:当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一,和/或,当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一。
[0090]可选地,在所述将所述待回收的存储空间中的有用数据块搬移到其它存储空间方面,所述处理器具体用于:将所述待回收的存储空间中的标识值为I的数据块搬移到第一存储单元,并将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,所述第一存储单元与所述第二存储单元不同,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为I。
[0091]在所述当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量方面,所述处理器具体用于:当存储空间中的剩余存储空间小于预设阈值,和/或,写满数据的存储单元数量在所有存储单元中所占的比例大于预设比值时,统计各个存储单元中的无用数据块的数量。
[0092]本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0093]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0094]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种存储数据处理方法,其特征在于,包括: 当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得; 将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间; 将所述待回收的存储空间中的有用数据块搬移到其它存储空间。
2.根据权利要求1所述的方法,其特征在于,所述无用数据块包括: 标识值为0的数据块,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为1。
3.根据权利要求2所述的方法,其特征在于,所述标识值的设置方法至少包括以下一项: 当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一; 当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述待回收的存储空间中的有用数据块搬移到其它存储空间包括: 将所述待回收的存储空间中的标识值为1的数据块搬移到第一存储单元; 将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,所述第一存储单元与所述第二存储单元不同,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为1。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述预设条件至少包括以下一项: 存储空间中的剩余存储空间小于预设阈值; 写满数据的存储单元数量在所有存储单元中所占的比例大于预设比值。
6.一种硬盘控制器,其特征在于,包括: 统计模块,用于当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量,所述各个存储单元通过预先划分所述存储空间获得; 确定模块,用于将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间; 数据搬移模块,用于将所述待回收的存储空间中的有用数据块搬移到其它存储空间。
7.根据权利要求6所述的硬盘控制器,其特征在于,在所述将无用数据块的数量最大或大于预设值的存储单元作为待回收的存储空间方面,所述确定模块具体用于: 将标识值为0的数据块的数量最大或大于预设值的存储单元作为待回收的存储空间,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为1。
8.根据权利要求7所述的硬盘控制器,其特征在于,还包括: 标识值设置模块,用于当第一存储单元中的数据块被写入第二存储单元时,所述第一存储单元中的所述数据块的标识值加一,和/或,当第一存储单元对应的逻辑区块地址指向第二存储单元时,所述第一存储单元中的数据块的标识值减一。
9.根据权利要求6至8任一项所述的硬盘控制器,其特征在于,在所述将所述待回收的存储空间中的有用数据块搬移到其它存储空间方面,所述数据搬移模块具体用于: 将所述待回收的存储空间中的标识值为I的数据块搬移到第一存储单元; 将所述待回收的存储空间中的标识值大于1、或者带有快照或备份标记的数据块搬移到第二存储单元,所述第一存储单元与所述第二存储单元不同,所述标识值用于表示数据块被引用的次数,所述标识值的初始值为I。
10.根据权利要求6至8任一项所述的硬盘控制器,其特征在于,在所述当存储空间满足预设条件时,统计各个存储单元中的无用数据块的数量方面,所述统计模块具体用于: 当存储空间中的剩余存储空间小于预设阈值,和/或,写满数据的存储单元数量在所有存储单元中所占的比例大于预设比值时,统计各个存储单元中的无用数据块的数量。
【文档编号】G06F12/02GK103577336SQ201310505056
【公开日】2014年2月12日 申请日期:2013年10月23日 优先权日:2013年10月23日
【发明者】魏明昌, 张程伟 申请人:华为技术有限公司