一种适用于固态盘的动态调整垃圾回收方法与流程

文档序号:18899731发布日期:2019-10-18 21:46阅读:442来源:国知局
一种适用于固态盘的动态调整垃圾回收方法与流程

本发明涉及数据存储的技术领域,尤其是指一种适用于固态盘的动态调整垃圾回收方法。



背景技术:

传统数据存储介质有磁带、光盘等,使用最多的是机械硬盘。随着数据呈爆炸式增长,对数据存储介质在速度上、容量上有了更高的要求,固态硬盘开始被越来越多的使用和研究。固态硬盘使用电子芯片存储数据,没有机械硬盘的机械式部件,因此在速度、时延、功耗、抗震等方面,与机械硬盘相比都具有优势,无论是个人存储还是企业存储,都在逐渐使用固态硬盘取代机械硬盘。以nandflash(闪存)作为存储介质的固态硬盘具有需要擦除才能写入,不能覆盖写,闪存块具有一定寿命,每擦除一次都会对闪存块造成磨损等问题。

由于闪存块不能覆盖写的特性,当写入新的数据时,不能在老地方直接更改,必须写到一个新的位置。往一个新的位置写入数据,会导致老位置上的数据无效,这些数据就变为了垃圾数据。垃圾数据会占用闪存空间,当闪存空间不够用时,闪存转换层需要做垃圾回收,即把若干个闪存块上的有效数据搬出来,写到某个新的闪存块上,然后把这些之前的闪存块擦除,得到可用的闪存块,这就是垃圾回收的过程。当回收块中有效页数较高时,会导致写放大,即固态硬盘往闪存中写入的数据量比实际用户写入固态硬盘的数据量多,垃圾回收的等待时间也可能高达100ms。因此,垃圾回收对固态硬盘的读写性能和寿命都有很大的影响,可能是影响固态硬盘性能的重要瓶颈

现有的垃圾回收方法存在以下问题:大部分算法都是基于挑选具有最少有效页面数的块作为回收块的贪婪算法。但是该算法可能导致块的擦除次数不平衡,从而造成磨损不平衡,使得一些块很快就变成坏块不能再使用了。如果选择擦除次数最小的块作为回收块,则会增加垃圾回收迁移数据的开销,并且一部分垃圾回收过程可能会使i/o延迟,影响固态硬盘的读写性能。



技术实现要素:

本发明的目的在于克服现有技术的不足,提出了一种适用于固态盘的动态调整垃圾回收方法,突破垃圾回收过程同时考虑回收块的无效页面数和块的擦除次数这一矛盾,达到两者的平衡,并且降低垃圾回收过程对i/o性能的影响,提高固态硬盘的读写性能和寿命。

为了实现上述目的,本发明所提供的技术方案为:一种适用于固态盘的动态调整垃圾回收方法,包括以下步骤:

1)获取基础数据,包括块的无效页面数、块的擦除次数、固态硬盘容量和固态硬盘空闲空间的大小;

2)根据固态硬盘容量设定两级阈值t1、t2,该阈值表示固态硬盘的空闲容量占固态硬盘总容量的百分比,其中t1<t2;

3)判断固态硬盘空闲空间的大小位于哪个范围,判断是否立刻进行垃圾回收操作;

4)利用数据进行计算,预测选择哪一个块进行回收最好;

5)进行垃圾回收操作。

在步骤1)中,固态硬盘在写数据的时候记录和维护每个块的无效页面数和擦除次数。

在步骤3)中,判断固态硬盘空闲空间大小和阈值的关系具体过程如下:

3.1)根据当前固态硬盘空闲空间的大小计算出空闲空间占整个固态硬盘容量的百分比t;

3.2)判断t的大小与t1、t2的关系,如果t≤t1,则能够中断正在执行的i/o操作,立刻执行垃圾回收;如果t>t1,则能够等待固态硬盘空闲的时候再进行垃圾回收操作;

在步骤4)中,通过判断t与t1、t2的关系,判断选择哪一个计算公式对数据进行计算,来选择回收块,具体如下:

如果t≤t1,则使用贪婪算法,即选择无效数据页面数最多的块进行垃圾回收操作;

如果t1<t<t2,则通过下面的公式计算得到一个数值:

其中,f(i)表示第i块的得分,i=1,2,...n,n为固态硬盘块的数量;invalid(i)表示第i块上的无效页面数,page_block表示一块中的物理页数,erasure(i)表示第i块的擦除次数;max_erasure表示所有块中,块擦除次数的最大值;

在计算得出的n个值中,选择数值最大的块作为回收块;

如果t≥t2,则通过下面的公式计算得到一个数值:

在计算得出的n个值中,选择数值最大的块作为回收块。

在步骤5)中,执行垃圾回收操作,具体过程如下:

5.1)将回收块中的有效数据写入到其它块中。

5.2)将回收块擦除。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明可以动态的调整垃圾回收方法,根据固态硬盘空闲空间大小来判断选用那种垃圾回收方法。

2、本发明方法综合考虑了回收效率和磨损平衡,解决了选择回收块时同时考虑无效页面数和擦除次数这一矛盾,提高了固态硬盘的性能和寿命。

3、本发明方法在非紧急情况下不会影响正常的i/o操作,提高了读写效率。

附图说明

图1为本发明方法的流程示意图。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

如图1所示,本实施例所提供的适用于固态盘的动态调整垃圾回收方法,包括以下步骤:

1)获取基础数据,包括块的无效页面数,块的擦除次数,固态硬盘容量、固态硬盘空闲空间的大小。固态硬盘在写数据的时候做了一些额外的工作,即记录和维护每个块的无效页面数和擦除次数。

2)根据固态硬盘容量设定两级阈值。根据固态硬盘的容量设定两级阈值t1、t2,该阈值表示固态硬盘的空闲容量占固态硬盘总容量的百分比,其中t1<t2。

3)判断固态硬盘的空闲空间的大小位于哪个范围,判断是否立刻进行垃圾回收操作。

3.1)根据当前固态硬盘空闲空间的大小计算出空闲空间占整个固态硬盘容量的百分比t;

3.2)判断t的大小与t1、t2的关系,如果t≤t1,则可以中断正在执行的i/o操作,立刻执行垃圾回收。如果t>t1,则可以等待固态硬盘空闲的时候再进行垃圾回收操作。

4)通过判断t与t1、t2的关系,判断选择哪一个计算公式对数据进行计算,来选择回收块,具体如下:

如果t≤t1,则使用贪婪算法,即选择无效数据页面数最多的块进行垃圾回收操作。

如果t1<t<t2,则通过下面的公式计算得到一个数值:

其中,f(i)(i=1,2,...n;n为固态硬盘块的数量)表示第i块的得分,invalid(i)表示第i块上的无效页面数,page_block表示一块中的物理页数,erasure(i)表示第i块的擦除次数,max_erasure表示所有块中,块擦除次数的最大值。

在计算得出的n个值中,选择数值最大的块作为回收块。

如果t≥t2,则通过下面的公式计算得到一个数值:

在计算得出的n个值中,选择数值最大的块作为回收块。

在步骤5)中,执行垃圾回收操作,具体过程如下:

5.1)将回收块中的有效数据写入到其他块中。

5.2)将回收块擦除。

综上所述,在采用上述方案后,本发明为固态硬盘的垃圾回收过程提供了一种新的方法,将动态调整垃圾回收方法作为垃圾回收过程优化的一种有效手段,能够有效提高垃圾回收的效率,具有实际推广价值,值得推广。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1