固态硬盘及其垃圾回收方法、装置和计算机可读存储介质与流程

文档序号:20766835发布日期:2020-05-15 19:03阅读:233来源:国知局
固态硬盘及其垃圾回收方法、装置和计算机可读存储介质与流程

本发明涉及存储技术领域,特别涉及一种固态硬盘的垃圾回收方法、装置、固态硬盘及计算机可读存储介质。



背景技术:

目前,固态硬盘(ssd,solidstatedrive)成为存储领域的主打产品。固态硬盘内部的数据按更新频率可以分为冷数据和热数据,冷数据的更新频率低,热数据更新频率高。如果不能把冷热数据进行区分,冷数据和热数据混在一起,这样在gc(garbagecollection,垃圾回收)的过程中冷数据会被更加频繁地从一个地方搬到另一个地方,造成固态硬盘的写放大增大。

因此,如何能够实现固态硬盘数据的冷热分离,减小因冷数据在固态硬盘的gc过程中的搬移导致的写放大增大问题,是现今急需解决的问题。



技术实现要素:

本发明的目的是提供一种固态硬盘的垃圾回收方法、装置、固态硬盘及计算机可读存储介质,以在固态硬盘的gc过程中实现固态硬盘数据的冷热分离,减少冷数据在gc过程中的搬移次数从而降低写放大。

为解决上述技术问题,本发明提供一种固态硬盘的垃圾回收方法,包括:

固态硬盘进行垃圾回收时,选择所述固态硬盘中的待回收block;

获取所述待回收block的block信息;其中,所述block信息包括所述待回收block在填满时记录的所述固态硬盘的平均pe值;

根据所述block信息,将所述待回收block的有效数据搬移到目标block中;其中,所述目标block的数据类型为gc冷数据或gc热数据。

可选的,所述block信息还包括所述待回收block的数据类型。

可选的,所述根据所述block信息,将所述待回收block的有效数据搬移到目标block中,包括:

所述待回收block的数据类型为所述gc热数据或用户数据时,判断所述待回收block的当前无效数据量是否小于第一阈值;

若是,则将所述有效数据加入到gc冷数据流,使所述有效数据搬移到第一目标block中;其中,所述第一目标block的数据类型为所述gc冷数据;

若否,则判断所述待回收block的当前有效数据量是否小于所述第一阈值;

若当前有效数据量小于所述第一阈值,则将所述有效数据加入到gc热数据流,使所述有效数据搬移到第二目标block中;其中,所述第二目标block的数据类型为所述gc热数据;

若当前有效数据量不小于所述第一阈值,则判断所述固态硬盘的当前平均pe值与所述平均pe值之差是否大于第二阈值;

若大于所述第二阈值,则将所述有效数据加入到所述gc冷数据流,使所述有效数据搬移到第一目标block中;

若不大于所述第二阈值,则将所述有效数据加入到所述gc热数据流,使所述有效数据搬移到第二目标block中;

所述待回收block的数据类型为所述gc冷数据时,判断所述待回收block的当前无效数据量是否小于所述第一阈值;

若当前无效数据量小于所述第一阈值,则根据所述固态硬盘中数据类型为所述gc冷数据且未填满的block的pe值,选择第三目标block,并将所述有效数据搬移到所述第三目标block中;其中,所述第三目标block的数据类型为所述gc冷数据且未填满;

若当前无效数据量不小于所述第一阈值,将所述有效数据加入到所述gc冷数据流,使所述有效数据搬移到第一目标block中。

可选的,所述根据所述固态硬盘中数据类型为所述gc冷数据且未填满的block的pe值,选择第三目标block,包括:

判断上一第三目标block是否填满;

若否,则将上一第三目标block作为当前第三目标block;

若否,则选择固态硬盘中数据类型为所述gc冷数据且未填满的block中选择pe值最大的block作为当前第三目标block。

可选的,所述选择所述固态硬盘中的待回收block,包括:

根据所述固态硬盘中每个block的当前pe值和当前有效数据量及所述固态硬盘的当前平均pe值,选择所述待回收block。

本发明还提供了一种固态硬盘的垃圾回收装置,包括:

选择模块,用于在固态硬盘进行垃圾回收时,选择所述固态硬盘中的待回收block;

获取模块,用于获取所述待回收block的block信息;其中,所述block信息包括所述待回收block在填满时记录的所述固态硬盘的平均pe值;

搬移模块,用于根据所述block信息,将所述待回收block的有效数据搬移到目标block中;其中,所述目标block的数据类型为gc冷数据或gc热数据。

可选的,所述block信息还包括所述待回收block的数据类型时,所述搬移模块,包括:

第一判断子模块,用于在所述待回收block的数据类型为所述gc热数据或用户数据时,判断所述待回收block的当前无效数据量是否小于第一阈值;

第一搬移子模块,用于若当前无效数据量小于第一阈值,则将所述有效数据加入到gc冷数据流,使所述有效数据搬移到第一目标block中;其中,所述第一目标block的数据类型为所述gc冷数据;

第二判断子模块,用于若当前无效数据量不小于第一阈值,则判断所述待回收block的当前有效数据量是否小于所述第一阈值;

第二搬移子模块,用于若当前有效数据量小于所述第一阈值,则将所述有效数据加入到gc热数据流,使所述有效数据搬移到第二目标block中;其中,所述第二目标block的数据类型为所述gc热数据;

第三判断子模块,用于若当前有效数据量不小于所述第一阈值,则判断所述固态硬盘的当前平均pe值与所述平均pe值之差是否大于第二阈值;

第三搬移子模块,用于若大于所述第二阈值,则将所述有效数据加入到所述gc冷数据流,使所述有效数据搬移到第一目标block中;

第四搬移子模块,用于若不大于所述第二阈值,则将所述有效数据加入到所述gc热数据流,使所述有效数据搬移到第二目标block中;

第四判断子模块,用于在所述待回收block的数据类型为所述gc冷数据时,判断所述待回收block的当前无效数据量是否小于所述第一阈值;

第五搬移子模块,用于若当前无效数据量小于所述第一阈值,则根据所述固态硬盘中数据类型为所述gc冷数据且未填满的block的pe值,选择第三目标block,并将所述有效数据搬移到所述第三目标block中;其中,所述第三目标block的数据类型为所述gc冷数据且未填满;

第六搬移子模块,用于若当前无效数据量不小于所述第一阈值,将所述有效数据加入到所述gc冷数据流,使所述有效数据搬移到第一目标block中。

可选的,所述第五搬移子模块,包括:

判断单元,用于判断上一第三目标block是否填满;

第一选择单元,用于若未填满,则将上一第三目标block作为当前第三目标block;

第二选择单元,用于若填满,则选择固态硬盘中数据类型为所述gc冷数据且未填满的block中选择pe值最大的block作为当前第三目标block。

本发明还提供了一种固态硬盘,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述的固态硬盘的垃圾回收方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的固态硬盘的垃圾回收方法的步骤。

本发明所提供的一种固态硬盘的垃圾回收方法,包括:固态硬盘进行垃圾回收时,选择固态硬盘中的待回收block;获取待回收block的block信息;其中,block信息包括待回收block在填满时记录的固态硬盘的平均pe值;根据block信息,将待回收block的有效数据搬移到目标block中;其中,目标block的数据类型为gc冷数据或gc热数据;

可见,本发明通过固态硬盘在垃圾回收过程中,根据待回收block的block信息,将待回收block的有效数据搬移到数据类型为gc冷数据或gc热数据的目标block中,使固态硬盘中的冷数据和热数据可以分开保存,实现了固态硬盘中数据的冷热分离,减少了冷数据在之后垃圾回收过程中的搬移次数,从而可以降低写放大且增加带宽。此外,本发明还提供了一种固态硬盘的垃圾回收装置、固态硬盘及计算机可读存储介质,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种固态硬盘的垃圾回收方法的流程图;

图2为本发明实施例所提供的另一种固态硬盘的垃圾回收方法的数据流示意图;

图3为本发明实施例所提供的一种固态硬盘的垃圾回收装置的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种固态硬盘的垃圾回收方法的流程图。该方法可以包括:

步骤101:固态硬盘进行垃圾回收时,选择固态硬盘中的待回收block。

其中,本步骤中的待回收block可以为在固态硬盘触发gc(垃圾回收)时,本次gc需要回收的block(块)。本步骤的目的可以为固态硬盘中如控制器的处理器在gc触发时,从固态硬盘中选择待回收block,以对待回收block进行回收。

具体的,对于本步骤中固态硬盘中的处理器选择固态硬盘中的待回收block的具体方式,可以由设计人员根据实用场景和用户需求自行设置,可以采用与现有技术中固态硬盘的gc过程中待回收block的选择方法相同或相似的方式实现;如处理器根据固态硬盘中每个block的当前pe(programerase,编写擦除次数)值和当前有效数据量及固态硬盘的当前平均pe值,从固态硬盘的全部包含数据的block或部分包含数据的block中选择待回收block。只要处理器可以在gc触发后从固态硬盘中选择出待回收block,本实施例对此不做任何限制。

例如,处理器可以根据固态硬盘中每个block的当前pe值和当前有效数据量及固态硬盘的当前平均pe值,计算固态硬盘中全部包含数据的block各自对应的优先级(priority);根据全部包含数据的block各自对应的优先级,从全部包含数据的block中选择出待回收block。如通过priority=a*vdfc+b*|δpe|*δpe+c计算固态硬盘中全部包含数据的block各自对应的优先级;上式中,priority为block的优先级,a、b和c均为预设的计算参数,vdfc为block的当前有效数据量,δpe为block的当前pe值与固态硬盘的当前平均pe值的差值;使得block的vdfc越小其优先级越小,且block的当前pe值越小其优先级越小。

步骤102:获取待回收block的block信息;其中,block信息包括待回收block在填满时记录的固态硬盘的平均pe值。

可以理解的是,本实施例的目的可以为在固态硬盘的gc过程中,将待回收block中的有效数据搬移到数据类型为gc冷数据或gc热数据的目标block中,从而实现固态硬盘中的数据的冷热分离。

也就是说,本步骤中获取的待回收block的block信息可以为用于对确定待回收block当前所存储的有效数据为冷数据还是热数据的信息。对于本步骤获取的待回收block的block信息的具体内容,可以由设计人员自行设置,如block信息可以包括待回收block在填满时记录的固态硬盘的平均pe值(avg_peblock);block信息也可以包括待回收block的数据类型,例如本实施例中可以将固态硬盘中全部block的数据类型划分为用户数据、gc冷数据和gc热数据,即待回收block的数据类型可以为用户数据、gc冷数据或gc热数据;block信息还可以包括待回收block的当前无效数据量与当前有效数据量(vdfccurrent)和固态硬盘的当前平均pe值(avg_pe)等信息,只要保证处理器可以利用待回收block的block信息确定待回收block中的有效数据是冷数据还是热数据,从而将有效数据搬移到对应数据类型的目标block中,本实施例对此不做任何限制。

具体的,对于本步骤中固态硬盘的处理器获取待回收block的block信息的具体方式,可以由设计人员自行设置,如处理器可以从blockinfo中获取待回收block在填满时记录的固态硬盘的平均pe值,即每个block填满时可以在blockinfo记录该block在填满时固态硬盘的平均pe值;如处理器可以计算待回收block的数据总量(dfc_per_block)与当前有效数据量之差,确定待回收block的数据总量的当前无效数据量;待回收block的数据总量可以为待回收block中的dataframe总数,即当前有效数据量与当前无效数据量之和。

步骤103:根据block信息,将待回收block的有效数据搬移到目标block中;其中,目标block的数据类型为gc冷数据或gc热数据。

可以理解的是,本步骤的目的可以为固态硬盘利用待回收block的block信息,确定待回收block中有效数据的类型(即冷数据或热数据),从而将有效数据搬移到对应数据类型的目标block中。

具体的,本步骤中的目标block可以为在固态硬盘的gc过程中,处理器选择的待回收block的有效数据需要搬移到的block。对于目标block的具体选择方式,可以由设计人员自行设置,如本实施例可以将现有技术中固态硬盘的gc过程中的gc数据流划分为gc冷数据流和gc热数据流,从而采用与现有技术中gc数据流的数据搬移方法相同或相似的方式,选择gc冷数据流对应的数据类型为gc冷数据的目标block(即第一目标block),及gc热数据流对应的数据类型为gc热数据的目标block(即第二目标block);还可以通过其他方式选择目标block,例如待回收block的数据类型为gc冷数据,且待回收block的当前无效数据量小于第一阈值时,可以将数据类型为gc冷数据且当前pe值较大的其他block作为目标block(即第三目标block)。本实施例对此不做任何限制。

需要说明的是,对于本实施例中根据block信息,将待回收block的有效数据搬移到目标block中的具体方式,可以由设计人员自行设置,如可以根据待回收block的block信息,直接将待回收block的有效数据加入到对应的gc数据流(即gc冷数据流或gc热数据流)中。例如,待回收block的block信息中包括待回收block的数据类型时,可以在待回收block的数据类型不为gc冷数据,如数据类型为gc热数据或用户数据时,若dfc_per_block-vdfccurrent<tvdfc,则待回收block有效数据加入到gc冷数据流;若vdfccurrent<tvdfc,则待回收block有效数据加入到gc热数据流;其他情况下,如果满足avg_pe-avg_peblock>tpe,则待回收block有效数据加入到gc冷数据流,如果不满足avg_pe-avg_peblock>tpe,则待回收block有效数据加入到gc热数据流;在待回收block的数据类型为gc冷数据时,可以直接将待回收block有效数据加入到gc冷数据流;其中,tvdfc为预先设置的第一阈值,tpe为预先设置的第一阈值;如图2所示,数据类型为用户数据(user_date)和gc热数据(gc_hot_data)的block中的有效数据可以在gc过程中加入到gc热数据流(gc_hot_datastream)或gc冷数据流(gc_cold_datastream),从而搬移到数据类型为gc热数据的新的block或数据类型为gc冷数据(gc_cold_data)的新的block,数据类型为gc冷数据的block中的有效数据可以在gc过程中加入到gc冷数据流,从而搬移到数据类型为gc冷数据的新的block。待回收block的block信息中不包括待回收block的数据类型时,若dfc_per_block-vdfccurrent<tvdfc,则待回收block有效数据加入到gc冷数据流;若vdfccurrent<tvdfc,则待回收block有效数据加入到gc热数据流;其他情况下,如果满足avg_pe-avg_peblock>tpe,则待回收block有效数据加入到gc冷数据流,如果不满足avg_pe-avg_peblock>tpe,则待回收block有效数据加入到gc热数据流。

对应的,在待回收block的block信息中的数据类型为gc冷数据时,也可以在dfc_per_block-vdfccurrent<tvdfc时,不将待回收block中的有效数据加入到gc冷数据流,而是直接搬移到pe较大的空的block(即第三目标block),并将该block的数据类型标记为gc冷数据。即本步骤中待回收block的数据类型为gc热数据或用户数据时,可以判断待回收block的当前无效数据量是否小于第一阈值;若是,则将有效数据加入到gc冷数据流,使有效数据搬移到第一目标block中;其中,第一目标block的数据类型为gc冷数据;若否,则判断待回收block的当前有效数据量是否小于第一阈值;若当前有效数据量小于第一阈值,则将有效数据加入到gc热数据流,使有效数据搬移到第二目标block中;其中,第二目标block的数据类型为gc热数据;若当前有效数据量不小于第一阈值,则判断固态硬盘的当前平均pe值与平均pe值之差是否大于第二阈值;若大于第二阈值,则将有效数据加入到gc冷数据流,使有效数据搬移到第一目标block中;若不大于第二阈值,则将有效数据加入到gc热数据流,使有效数据搬移到第二目标block中。本步骤中待回收block的数据类型为gc冷数据时,可以判断待回收block的当前无效数据量是否小于第一阈值;若当前无效数据量小于第一阈值,则根据固态硬盘中数据类型为gc冷数据且未填满的block的pe值,选择第三目标block,并将有效数据搬移到第三目标block中;其中,第三目标block的数据类型为gc冷数据且未填满;若当前无效数据量不小于第一阈值,将有效数据加入到gc冷数据流,使有效数据搬移到第一目标block中。

具体的,在待回收block的数据类型为gc冷数据,且dfc_per_block-vdfccurrent<tvdfc时,通过根据固态硬盘中数据类型为gc冷数据且未填满的block的pe值,选择第三目标block,并将有效数据搬移到第三目标block中,使该待回收block中的冷数据不与gc冷数据流中的冷数据的混合,减少该待回收block中的冷数据与其他的block中的冷数据的混合,避免待回收block中有效数据搬移到的新的block中其他数据变为热数据后,该block有效数据占比变低,导致该block的数据再次被搬移的情况。对于根据固态硬盘中数据类型为gc冷数据且未填满的block的pe值,选择第三目标block的具体方式,可以由设计人员自行设置,如可以直接将固态硬盘中数据类型为gc冷数据且未填满的block中选择pe值最大的block作为第三目标block;为了进一步减少该待回收block中的冷数据与其他block中的冷数据的混合,在本次选择使用的第三目标block为填满的情况下,可以将本次选择的第三目标block直接作为下一次使用的第三目标block,即每次选择当前次需要使用的第三目标block(即当前第三目标block)时,可以判断上一次选择使用的第三目标block(即上一第三目标block)是否填满;若否,则将上一第三目标block作为当前第三目标block;若否,则选择固态硬盘中数据类型为gc冷数据且未填满的block中选择pe值最大的block作为当前第三目标block。

进一步的,为了在固态硬盘的gc大量触发过程中,减轻固态硬盘的数据写入的压力,固态硬盘可以通过如定时扫描的方式,按预设时间间隔对数据类型为gc冷数据且当前有效数据量最大或大于阈值的block进行数据搬移。

本实施例中,本发明实施例通过固态硬盘在垃圾回收过程中,根据待回收block的block信息,将待回收block的有效数据搬移到数据类型为gc冷数据或gc热数据的目标block中,使固态硬盘中的冷数据和热数据可以分开保存,实现了固态硬盘中数据的冷热分离,减少了冷数据在之后垃圾回收过程中的搬移次数,从而可以降低写放大且增加带宽。

请参考图3,图3为本发明实施例所提供的一种固态硬盘的垃圾回收装置的结构框图。该装置可以包括:

选择模块10,用于在固态硬盘进行垃圾回收时,选择固态硬盘中的待回收block;

获取模块20,用于获取待回收block的block信息;其中,block信息包括待回收block在填满时记录的固态硬盘的平均pe值;

搬移模块30,用于根据block信息,将待回收block的有效数据搬移到目标block中;其中,目标block的数据类型为gc冷数据或gc热数据。

可选的,block信息还包括待回收block的数据类型时,搬移模块30,可以包括:

第一判断子模块,用于在待回收block的数据类型为gc热数据或用户数据时,判断待回收block的当前无效数据量是否小于第一阈值;

第一搬移子模块,用于若当前无效数据量小于第一阈值,则将有效数据加入到gc冷数据流,使有效数据搬移到第一目标block中;其中,第一目标block的数据类型为gc冷数据;

第二判断子模块,用于若当前无效数据量不小于第一阈值,则判断待回收block的当前有效数据量是否小于第一阈值;

第二搬移子模块,用于若当前有效数据量小于第一阈值,则将有效数据加入到gc热数据流,使有效数据搬移到第二目标block中;其中,第二目标block的数据类型为gc热数据;

第三判断子模块,用于若当前有效数据量不小于第一阈值,则判断固态硬盘的当前平均pe值与平均pe值之差是否大于第二阈值;

第三搬移子模块,用于若大于第二阈值,则将有效数据加入到gc冷数据流,使有效数据搬移到第一目标block中;

第四搬移子模块,用于若不大于第二阈值,则将有效数据加入到gc热数据流,使有效数据搬移到第二目标block中;

第四判断子模块,用于在待回收block的数据类型为gc冷数据时,判断待回收block的当前无效数据量是否小于第一阈值;

第五搬移子模块,用于若当前无效数据量小于第一阈值,则根据固态硬盘中数据类型为gc冷数据且未填满的block的pe值,选择第三目标block,并将有效数据搬移到第三目标block中;其中,第三目标block的数据类型为gc冷数据且未填满;

第六搬移子模块,用于若当前无效数据量不小于第一阈值,将有效数据加入到gc冷数据流,使有效数据搬移到第一目标block中。

可选的,第五搬移子模块,可以包括:

判断单元,用于判断上一第三目标block是否填满;

第一选择单元,用于若未填满,则将上一第三目标block作为当前第三目标block;

第二选择单元,用于若填满,则选择固态硬盘中数据类型为gc冷数据且未填满的block中选择pe值最大的block作为当前第三目标block。

本实施例中,本发明实施例通过搬移模块30在固态硬盘的垃圾回收过程中,根据待回收block的block信息,将待回收block的有效数据搬移到数据类型为gc冷数据或gc热数据的目标block中,使固态硬盘中的冷数据和热数据可以分开保存,实现了固态硬盘中数据的冷热分离,减少了冷数据在之后垃圾回收过程中的搬移次数,从而可以降低写放大且增加带宽。

本发明实施例还提供了一种固态硬盘,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上述实施例所提供的固态硬盘的垃圾回收方法的步骤。

此外,本发明实施例还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的固态硬盘的垃圾回收方法的步骤。该存储介质可以包括:随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、固态硬盘及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本发明所提供的一种固态硬盘的垃圾回收方法、装置、固态硬盘及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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