一种固态硬盘的垃圾回收方法、系统、装置及其存储介质与流程

文档序号:24125524发布日期:2021-03-02 13:17阅读:104来源:国知局
一种固态硬盘的垃圾回收方法、系统、装置及其存储介质与流程

[0001]
本发明涉及数据存储领域,特别是涉及一种固态硬盘的垃圾回收方法、系统、装置及其存储介质。


背景技术:

[0002]
固态硬盘(solid state drives,ssd)是当前流行的高性能存储器,适用固态电子存储芯片阵列制成的硬盘。nand flash因其内部采用非线性宏单元模式,所以其具有容量大,改写速度快等优点,更适用于大量数据的存储,因而ssd的存储介质多采用nand flash。
[0003]
nand flash的数据是以bit的方式保存在存储单元(memory cell),一般来说,一个存储单元中只能存储一个bit。这些存储单元以8个或者16个为单位,连成位线(bit line),这些line会再组成页(page),多个page形成一个存储块(block)。具体地,一片flash上有多少个存储块视需要决定。
[0004]
nand flash是以page为单位读写数据(program),以存储块为单位擦除数据(erase)。在读写数据之前,需要先擦除数据。ssd在使用中会对同一个逻辑位置读写数据多次,那么旧的物理位置的数据就会是无效数据。久而久之,ssd的某个存储块上会同时存在有效数据和无效数据,因此,不能直接对存储块上的数据进行擦除,无效数据的物理位置处也不能直接用于写入新的数据。如此操作,ssd的nand flash就会很快使用完。所以需要对nand flash进行垃圾回收(garbage collection),将nand flash中的有效数据集中,设置某一个存储块仅用于存放无效数据,这样就可以对存放无效数据的存储块进行数据擦除,并且,擦除数据之后的存储块又可以重新进行读写新数据的操作。
[0005]
在垃圾回收运行的同时,ssd还要同时执行主机(host)的写命令。垃圾回收的写数据和主机的写数据都会占用nand flash的带宽,但是nand flash的总带宽是固定值,这样就会影响到ssd的主机写数据的速度。而主机写数据的速度是评价ssd的重要性能指标,所以为了保证主机写数据的速度平稳,就需要平衡垃圾回收的写数据速度和主机的写数据速度的比例关系平稳。
[0006]
目前,ssd的垃圾回收大体会有以下步骤:选取有效源存储块、查找源存储块上有效数据、读取有效数据、将有效数据写入到新的存储块上、擦除源存储块的无效数据。
[0007]
一般来说,ssd内部会稳定垃圾回收的写数据和主机写数据的数据量的比例值,来达到稳定主机写数据性能。但是,由于垃圾回收有多个步骤,如果ssd内buffer比较大,使得每个步骤的时间较长,会导致垃圾回收写数据以外的步骤在执行时,主机写数据的速度变差,严重影响主机写数据性能的稳定度。


技术实现要素:

[0008]
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种固态硬盘的垃圾回收方法、系统、装置及其存储介质,用于解决现有技术中主机写数据性能受ssd的垃圾回收影响较大的问题。
[0009]
为实现上述目的及其他相关目的,本发明提供一种固态硬盘的垃圾回收方法,包括:s10,选定所述固态硬盘中的一个存储块进行垃圾回收;s20,统计垃圾回收中写数据的第一数据量;其中,所述第一数据量在统计前清零;s30,判断所述第一数据量是否等于预设的第一阈值:如果等于第一阈值,则暂停垃圾回收,进行主机的写数据操作,同时统计主机写数据的第二数据量;其中,所述第二数据量在统计前清零;s40,判断所述第二数据量是否等于预设的第二阈值:如果等于所述第二阈值,则暂停主机写数据操作,重新跳转至步骤s20进行垃圾回收。
[0010]
于本发明的一实施例中,所述第一阈值和所述第二阈值是成比例的;且所述第一阈值和所述第二阈值的比例关系与正在进行垃圾回收的存储块中的有效数据量相关。
[0011]
于本发明的一实施例中,所述s20,统计垃圾回收中处理数据的第一数据量的步骤包括:判断当前所处的垃圾回收的处理步骤;统计垃圾回收中实际写数据的数据量;其中,所述实际写数据的数据量在统计前清零;根据处理步骤和实际写数据的数据量计算第一数据量:第一数据量=实际写数据的数据量*权重系数;其中,权重系数与处理步骤相关。
[0012]
于本发明的一实施例中,所述权重系数按照如下公式进行计算:于本发明的一实施例中,所述权重系数按照如下公式进行计算:其中i表示垃圾回收的处理步骤数;s
i
表示处理步骤i的权重系数;t
i
表示垃圾回收的处理步骤i进行处理所需要的时间。
[0013]
于本发明的一实施例中,所述s30,判断所述第一数据量是否等于预设的第一阈值:如果等于第一阈值,则暂停垃圾回收,进行主机的写数据操作,同时统计主机写数据的第二数据量的步骤还包括:如果第一数据量小于第一阈值,判断选定存储块的垃圾回收的处理是否完毕:如果处理完毕,则选定固态硬盘中的下一个存储块进行垃圾回收和统计所述第一数据量。
[0014]
本发明还公开了一种固态硬盘的垃圾回收系统,其特征在于:包括:选择模块,用于选定所述固态硬盘的存储块进行垃圾回收;统计模块,用于统计垃圾回收中处理数据的第一数据量和主机写数据的第二数据量;判断模块,用于判断所述第一数据量和预设的第一阈值之间的关系,以及所述第二数据量与第二阈值之间的关系;控制模块,用于控制存储块垃圾回收以及主机写数据的操作。
[0015]
于本发明的一实施例中,所述统计模块包括:判断子模块,用于判断当前所处的垃圾回收的处理步骤;统计子模块,用于统计垃圾回收中实际写数据的数据量;计算子模块,用于根据处理步骤和实际写数据的数据量计算第一数据量。
[0016]
于本发明的一实施例中,所述计算子模块是按照如下方式计算第一数据量:第一数据量=实际写数据的数据量*权重系数;其中,权重系数为:i表示垃圾回收的处理步骤数;s
i
表示处理步骤i的权重系数;t
i
表示垃圾回收的处理步骤i进行处理所需要的时间。
[0017]
本发明还公开了一种固态硬盘的垃圾回收装置,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序以实现如上所述的固态硬盘的垃圾回收方法的步骤。
[0018]
进一步地,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现如上所述的固态硬盘的垃圾回
收方法的步骤。
[0019]
如上所述,本发明公开了一种固态硬盘的垃圾回收方法、系统、装置及其存储介质,在不改变固态硬盘的垃圾回收正常处理步骤的情况下,合理分配垃圾回收的写数据和主机的写数据的操作,即垃圾回收的写数据和主机的写数据的数据量是按照比例的,这样充分利用了nand flash的带宽,大大改善了主机写数据性能的稳定性。进一步地,本发明,以垃圾回收中各个步骤所需要处理的时间与垃圾回收总处理时间的时间占比作为权重系数,将主机写数据的操作分散在垃圾回收的各处理步骤的间隙中,使得主机的写性能在垃圾回收的各个处理步骤都很稳定,避免出现垃圾回收当中某个步骤写数据量过大阻塞主机写数据的问题。
附图说明
[0020]
图1显示为本发明实施例公开的一种固态硬盘的垃圾回收方法的流程示意图。
[0021]
图2显示为本发明实施例公开的一种固态硬盘的垃圾回收系统的原理结构示意图。
[0022]
元件标号说明
[0023]
100
ꢀꢀꢀꢀꢀꢀ
固态硬盘的垃圾回收系统
[0024]
110
ꢀꢀꢀꢀꢀꢀ
选择模块
[0025]
120
ꢀꢀꢀꢀꢀꢀ
统计模块
[0026]
121
ꢀꢀꢀꢀꢀꢀ
判断子模块
[0027]
122
ꢀꢀꢀꢀꢀꢀ
统计子模块
[0028]
123
ꢀꢀꢀꢀꢀꢀ
计算子模块
[0029]
130
ꢀꢀꢀꢀꢀꢀ
判断模块
[0030]
140
ꢀꢀꢀꢀꢀꢀ
控制模块
[0031]
s10~s40 步骤
具体实施方式
[0032]
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0033]
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0034]
请参阅图1和图2,本发明提供一种固态硬盘的垃圾回收方法、系统、装置及其存储介质,根据统计的垃圾回收的写数据主机写数据的数据量,依据与垃圾回收中各个步骤所需要处理的时间与垃圾回收总处理时间的时间相关的权重系数,将主机写数据的过程合理融入垃圾回收的各个处理步骤的写数据间隙中,增加了主机写数据的稳定性。
[0035]
在一实施例中,
[0036]
如图1所示,本实施例公开了一种固态硬盘的垃圾回收方法,具体包括:
[0037]
s10,选定固态硬盘中的一个存储块进行垃圾回收;
[0038]
固态硬盘的垃圾回收是以存储块为单位进行处理的。因此,在本实施例的垃圾回收方法中首选需要任意选择一个存储块进行垃圾回收的处理。根据选择进行垃圾回收的存储块中的有效数据量,确定当前的主机写数据和垃圾回收写数据的数据量的比例关系。并根据比例关系预先设置好第一阈值和第二阈值。即,当前的主机写数据和垃圾回收写数据的数据量的比例关系为r,周期内垃圾回收的写数据的数据量阈值,即第一阈值为g;那么周期内主机写数据的数据量阈值,即第二阈值为gr。假设,r=1/2,第一阈值g=256,那么,第二阈值为128。
[0039]
s20,统计垃圾回收中处理数据的第一数据量;其中,第一数据量在统计前清零;
[0040]
判断当前所处的垃圾回收的处理步骤;
[0041]
统计垃圾回收中实际处理的数据量;其中,所述实际处理的数据量在统计前清零;
[0042]
根据处理步骤和实际处理的数据量计算第一数据量。
[0043]
ssd的垃圾回收方法有很多种,不同的垃圾回收方法又可以分为多个步骤。因此,本实施例为了将主机写数据的过程合理分配融入至ssd垃圾回收的各个处理的步骤,选择了垃圾回收中各个步骤所需要处理的时间与垃圾回收总处理时间的时间占比作为权重系数,即:
[0044][0045]
其中,i表示垃圾回收的处理步骤数;s
i
表示处理步骤i的权重系数;t
i
表示垃圾回收的处理步骤i进行处理所需要的时间。如此,可以使本实施例的改善主机写数据性能的垃圾回收方法不受实际垃圾回收的处理方法和处理步骤限制,从真正意义上实现主机写数据的稳定性。
[0046]
进一步地,第一数据量=实际处理的数据量*权重系数。
[0047]
假设固定硬盘的垃圾回收包括4个步骤:写数据(program)、步骤1、步骤2和步骤3。通过实验,垃圾回收的每份数据经过program的时间为tp,每份数据经过步骤1、步骤2和步骤3的时间分别为t1、t2和t3。那么,一份数据经过program就相当于完成了总时间的同理,经过步骤1、步骤2和步骤3就相当于完成总时间的同理,经过步骤1、步骤2和步骤3就相当于完成总时间的和所以,每个步骤的权重系数分别为所以,每个步骤的权重系数分别为和
[0048]
一份数据,经过program,第一数据量就会增加经过步骤1,第一数据量就会增加经过步骤2,第一数据量就会增加经过
步骤3,第一数据量就会增加
[0049]
s30,判断第一数据量是否等于预设的第一阈值:如果等于第一阈值,则进行主机的写数据操作,同时统计主机写数据的第二数据量;其中,第二数据量在统计前清零;
[0050]
当统计的第一数据量c等于第一阈值g时,则切换到主机写数据,并对主机写数据的第二数据量进行统计。其中第二数据量是主机写数据的实际数据量。
[0051]
当统计的第一数据量c小于第一阈值g时,还应判断选定的存储块的垃圾回收的处理是否完成:
[0052]
如果没有完成,则继续进行选定的存储块的垃圾回收处理;
[0053]
如果已经完成,则选择下一个存储块进行垃圾回收,并统计垃圾回收的写数据的第一数据量。需要注意的是,就算是选择了下一个存储块进行垃圾回收,第一数据量的值并不清空,其在一个周期内是累加的,只有在进入到下一周期时才予以清零。
[0054]
s40,判断第二数据量是否等于预设的第二阈值gr:如果等于第二阈值,则暂停主机写数据操作,重新跳转至步骤s20进行垃圾回收。
[0055]
只要终端在运行,主机写数据的操作时不会停止的。因此,本实施例的固态硬盘的垃圾回收方法是会持续循环运转下去的。在本实施例中,一个周期为从步骤s10运行到s40的过程,即完成一次垃圾回收的写数据操作和一次主机写数据操作,其中,垃圾回收写数据操作的第一数据量为第一阈值g,主机写数据操作的第二数据量为第二阈值gr。也就是说,当第一数据量增加到第一阈值g时,就切换到主机写数据的操作;当主机写数据操作的第二数据量达到gr时,再次切换回垃圾回收,完成一个周期。
[0056]
为了更好的说明本实施例的固态硬盘的垃圾回收方法,假设当前垃圾回收选定一个源存储块,经过计算,当前的主机写数据与垃圾回收写数据的数据量的比例关系r为1/2。设定周期内垃圾回收写数据的第一阈值g为256,当垃圾回收的第一数据量c达到g时,就切换到主机写数据操作;周期内主机的写数据的第二阈值就为gr=128,当主机写数据的第二数据量达到128时,就切换到垃圾回收。
[0057]
假设当前垃圾回收算法有3个步骤:program、read和search valid data。tp、tr、ts的时间比例关系为4:1:3。那么program的权重系数read的权重系数search valid data的权重系数
[0058]
假设当前垃圾回收2048份数据,这些数据分别经过search valid data、read、program三个步骤。那么当2048份数据经过步骤program时,会增加2048*s
p
=1024=(256*4),那么实际上,每512份数据经过步骤program,就会使第一数据c达到g(256),就会切换到主机写数据,写入128的数据量时完成一个周期。4个周期后,2048份数据就经过垃圾回收的步骤program,主机写数据也进行了4次,总共写了512份数据。
[0059]
同理,1个周期后,2048份数据就经过了垃圾回收的步骤read,主机写数据也进行
了1次,总共写了128份数据;3个周期后,2048份数据就经过了垃圾回收的步骤search valid data,主机写也进行了3次,总共写了384份数据。
[0060]
垃圾回收2048份数据,需要8个周期,主机写数据的数据量为1024份数据。也就是说,主机写数据分成8次,分摊在垃圾回收的各个步骤中。
[0061]
上面方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本发明的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该发明的保护范围内。
[0062]
如图2所示,在又一实施例中,公开了一种固态硬盘的垃圾回收系统100,包括:
[0063]
选择模块110,用于选定所述固态硬盘的存储块进行垃圾回收;
[0064]
统计模块120,用于统计垃圾回收中处理数据的第一数据量和主机写数据的第二数据量;在整个垃圾回收过程中,第一数据量和第二数据量的统计不是累积的,每一个周期,需要将第一数据量和第二数据量进行清零操作。具体清零操作的时间点不限,在一个垃圾回收操作周期的开始、步骤中间或者是周期的结束都可以,只要可以顺利实现垃圾回收写数据和主机写数据的数据量的统计即可。
[0065]
判断模块130,用于判断所述第一数据量和预设的第一阈值之间的关系,以及所述第二数据量与第二阈值之间的关系;即判断第一数据量是否等于第一阈值,第二数据量是否等于第二阈值。
[0066]
控制模块140,用于控制存储块的垃圾回收以及主机写数据的操作:
[0067]
当第一数据量小于第一阈值时,进行垃圾回收的写数据操作;
[0068]
当第一数据量等于第一阈值时,暂停垃圾回收的写数据操作,开始主机写数据操作;
[0069]
当第二数据量小于第二阈值时,进行主机写数据操作;
[0070]
当第二数据量等于第二阈值时,暂停主机写数据操作,开始下一周期的垃圾回收的写数据操作。
[0071]
其中,统计模块120包括:
[0072]
判断子模块121,用于判断当前所处的垃圾回收的处理步骤;
[0073]
统计子模块122,用于统计垃圾回收中实际写数据的数据量;
[0074]
计算子模块123,用于根据处理步骤和实际写数据的数据量计算第一数据量。
[0075]
进一步地,计算子模块124是按照如下方式计算第一数据量:第一数据量=实际写数据的数据量*权重系数;权重系数为:
[0076][0077]
其中,i表示垃圾回收的处理步骤数;s
i
表示处理步骤i的权重系数;t
i
表示垃圾回收的处理步骤i进行处理所需要的时间。
[0078]
需要说明的是,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,但这并不表明本实施例中不存在其它的模块。
[0079]
此外,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的
系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0080]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0081]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0082]
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁盘或者光盘等各种可以存储程序代码的介质。
[0083]
综上所述,本发明公开了一种固态硬盘的垃圾回收方法、系统、装置及其存储介质,在在不改变固态硬盘的垃圾回收正常处理步骤的情况下,合理分配垃圾回收的写数据和主机的写数据的操作,即垃圾回收的写数据和主机的写数据的数据量是按照比例的,这样充分利用了nand flash的带宽,大大改善了主机写数据性能的稳定性。进一步地,本发明,以垃圾回收中各个步骤所需要处理的时间与垃圾回收总处理时间的时间占比作为权重系数,将主机写数据的操作分散在垃圾回收的各处理步骤的间隙中,使得主机的写性能在垃圾回收的各个处理步骤都很稳定,避免出现垃圾回收当中某个步骤写数据量过大阻塞主机写数据的问题。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0084]
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1