一种组合块的坏块处理方法及装置与流程

文档序号:17078291发布日期:2019-03-08 23:57阅读:164来源:国知局
一种组合块的坏块处理方法及装置与流程

本申请涉及数据存储技术领域,尤其涉及一种组合块的坏块处理方法及装置。



背景技术:

存储块管理是固态硬盘(solidstatedrives,ssd)固件算法的重要内容,其中组块实现方法、组合块的管理与ssd的读写性能密切相关。

若在组合块在使用过程中产生的读写坏块的数量超出预设值时,一般需要将该组合块上存储的数据整体搬移至其他空闲的组合块中,并对数据和组合块的存储映射表进行更新,处理过程繁琐、效率低下。若在数据搬移的过程中,该空闲的组合块中产生的读写坏块的数量也超于预设值,处理流程会更加繁琐。



技术实现要素:

有鉴于此,本申请实施例提供了一种组合块的坏块处理方法及装置,能够解决现有技术中组合块中出现读写坏块时处理过程繁琐、效率低下的问题。

本申请实施例提供的组合块的坏块处理方法,应用于固态硬盘,所述方法包括:

当第一组合块中存在读写坏块时,从所述固态硬盘的存储块中选取目标好块;所述第一组合块中存储有数据,包括所述固态硬盘中的一个或多个存储块;所述目标好块不属于所述第一组合块,且所述目标好块中未存储有数据;

若所述读写坏块中存储有数据,则将所述读写坏块中存储的数据迁移至所述目标好块中。

可选的,所述从所述固态硬盘的存储块中选取目标好块,具体包括:

获取空闲存储块列表;所述空闲存储块列表包括所述固态硬盘中未组成组合块的存储块;

从所述空闲存储块列表中选取任意一个存储块作为所述目标好块,并将选出的存储块从所述空闲存储块列表中删除。

可选的,所述从所述固态硬盘的存储块中选取目标好块,还包括:

当未获取到所述空闲存储块列表或所述空闲存储块列表为空时,获取所述固态硬盘中包括的每个组合块的存储状态;

当存在存储状态为空闲的第二组合块时,从所述第二组合块中选取任意一个存储块作为所述目标好块。

可选的,所述从所述第二组合块中选取任意一个存储块作为所述目标好块,之后还包括:

修改所述第二存储块的存储状态,并将所述第二存储块中除所述目标好块之外的存储块放入所述空闲存储块列表。

可选的,所述将所述读写坏块中存储的数据迁移至所述目标好块中,之后还包括:

将所述第一组合块与所述读写坏块的映射关系修改为所述第一组合块和所述目标好块的映射关系。

本申请实施例提供的组合块的坏块处理装置,应用于固态硬盘,所述装置包括:选取模块和迁移模块;

所述选取模块,用于当第一组合块中存在读写坏块时,从所述固态硬盘的存储块中选取目标好块;所述第一组合块中存储有数据,包括所述固态硬盘中的一个或多个存储块;所述目标好块不属于所述第一组合块,且所述目标好块中未存储有数据;

所述迁移模块,用于若所述读写坏块中存储有数据,则将所述读写坏块中存储的数据迁移至所述目标好块中。

可选的,所述选取模块,具体包括:第一获取子模块和选择子模块;

所述第一获取子模块,用于获取空闲存储块列表;所述空闲存储块列表包括所述固态硬盘中未组成组合块的存储块;

所述选择子模块,用于从所述空闲存储块列表中选取任意一个存储块作为所述目标好块,并将选出的存储块从所述空闲存储块列表中删除。

可选的,所述选取模块,还包括:第二获取子模块;

所述第二获取子模块,用于当所述第一获取子模块未获取到所述空闲存储块列表或所述空闲存储块列表为空时,获取所述固态硬盘中包括的每个组合块的存储状态;

所述选择子模块,还用于当存在存储状态为空闲的第二组合块时,从所述第二组合块中选取任意一个存储块作为所述目标好块。

可选的,所述装置还包括:存储块处理模块;

所述存储块处理模块,用于修改所述第二存储块的存储状态,并将所述第二存储块中除所述目标好块之外的存储块放入所述空闲存储块列表。

可选的,所述装置还包括:映射处理模块;

所述映射处理模块,用于将所述第一组合块与所述读写坏块的映射关系修改为所述第一组合块和所述目标好块的映射关系。

与现有技术相比,本申请至少具有以下优点:

在本申请实施例中,当第一组合块中产生读写坏块时,从固态硬盘中选取不属于该第一组合块的未存储数据的存储块作为目标好块,然后,在该读写坏块中存储有数据时,将该读写坏块中存储的数据迁移至目标好块中。保证了第一组合块不会存在读写坏块或存在超出预设值的读写坏块,避免了组合块被弃用的发生,也就避免了对组合块中整体数据的迁移和数据映射表的修改,仅需要将读写坏块中的数据迁移至目标好块,简化了处理流程、提高了处理的效率。

附图说明

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

图1为本申请实施例提供的一种组合块的坏块处理方法的流程示意图;

图2为本申请实施例提供的另一种组合块的坏块处理方法的流程示意图;

图3为本申请实施例提供的一种组合块的坏块处理装置的结构示意图。

具体实施方式

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

本申请实施例提供的组合块的坏块处理方法,应用于固态硬盘。可以理解的是,固态硬盘包括多个物理存储块,当存储块可以正常的读写数据时,可以称之为好块,当无法从存储块中读写数据是,可以称之为读写坏块,简称为坏块。坏块可以是在出厂时即存在,也可以是好块在使用过程中变为坏块。在数据存储过程中,会将固态硬盘中一个或多个存储块组成组合块使用,记录数据和组合块之间的映射关系,以对数据的存储位置进行标记。目前,当组合块包括的坏块数量超过预设值时,会将该组合块中的数据全部迁移至新的空闲组合块中,并对数据和组合块之间的映射关系进行修改,处理过程繁琐、效率低下。而包括坏块数量超过预设值的组合块会被弃用,其包括的好块也被启用,造成存储资源的浪费。

为此,本申请实施例提供了一种组合块的坏块处理方法及装置,在组合块中存在读写坏块时,将该读写坏块中存储的数据迁移至其他不属于该组合块的没有存储数据的好块中,避免了组合块整体数据的迁移和映射关系的修改,简化了处理过程、提高了效率,也避免了存储资源浪费的发生。

基于上述思想,为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。

参见图1,该图为本申请实施例提供的一种组合块的坏块处理方法的流程示意图。

本申请实施例提供的组合块的坏块处理方法,包括s101-s102。

s101:当第一组合块中存在读写坏块时,从固态硬盘的存储块中选取目标好块。

在本申请实施例中,第一组合块中存储有数据,包括固态硬盘中的一个或多个存储块,这里对组合块的生成方法不进行限定,可以采用任意一种组块规则得到组合块,不再一一赘述。

还需要说明的是,目标好块不属于第一组合块,且目标好块中未存储有数据,可以是固态硬盘中任意一个不属于第一组合块且未存储数据的好块。下面将举例说明目标好块的选取方法,这里先不赘述。

s102:若读写坏块中存储有数据,则将读写坏块中存储的数据迁移至目标好块中。

将坏块中存储的数据迁移至目标好块中,可以保证这些数据的正常读写,而第一组合块中其他好块仍可以正常读写,无需将第一组合块中其他好块的数据进行迁移,因此保证了第一组合块可以被正常使用。由于不必对第一组合块中的数据进行整体迁移并弃用第一组合块,简化了处理过程、提高了效率,也避免了存储资源的浪费。

在本申请实施例一些可能的实现方式中,为了对数据存储的位置进行记录,步骤s102之后还可以包括:

将第一组合块与读写坏块的映射关系修改为第一组合块和目标好块的映射关系。

可以理解的是,对第一组合块和存储块映射关系进行修改可以保证对数据存储状态的准确,以便后续处理需要。

下面详细说明具体可以采用何种规则选取目标好块。

参见图2,该图为本申请实施例提供的另一种组合块的坏块处理方法的流程示意图。

在本申请实施例一些可能的实现方式中,步骤s101具体可以包括:

s1011:获取空闲存储块列表。

在本申请实施例中,空闲存储块列表包括固态硬盘中未组成组合块的存储块。实际应用中,空闲存储块列表可以是包括未组成组合块的存储块的编号等身份标识信息。

s1012:从空闲存储块列表中选取任意一个存储块作为目标好块,并将选出的存储块从空闲存储块列表中删除。

在本申请实施例中,可以按照任意规则从空闲存储块列表中选取一个存储块作为目标好块,如任意选取或者选择与读写坏块物理位置近的存储块作为目标好块,这里不进行限定。在选出目标好块后读写坏块中存储的数据迁移至该目标好块,则该目标好块已经存储有数据,需要将其从空闲存储块列表中删除,以避免操作错误。

在一些可能的场景中,固态硬盘中可能会不存在未组合成组合块的存储块,则存在未获取到空闲存储块列表或空闲存储块列表为空的情况,也就无法从空闲存储块列表中选取任意一个存储块作为目标好块。为此,在本申请实施例一些可能的实现方式中,步骤s101具体还可以包括:

s1013:当未获取到空闲存储块列表或空闲存储块列表为空时,获取固态硬盘中包括的每个组合块的存储状态。

在本申请实施例中,组合块的存储状态包括空闲(如“free”)和占用(如“hold”)。当组合块存储有数据时,其存储状态为占用。当组合块没有存储数据时,其存储状态为空闲。

s1014:当存在存储状态为空闲的第二组合块时,从第二组合块中选取任意一个存储块作为目标好块。

在本申请实施例中,第二组合块可以是任意一个存储状态为空闲的组合块,这里不进行限定。需要说明的是,当没有存储状态为空闲的组合块,则终止流程。这里从第二组合块中选取目标好块的具体规则可以和从空闲存储块列表中选取目标好块的类似,具体参见上面的说明即可,这里不再赘述。

在一个例子中,由于从第二组合块中选取任意一个存储块作为目标好块来存储第一组合块中的数据,为了避免操作错误,在步骤s1014之后还可以包括:

修改第二存储块的存储状态,如将删除第二存储块的存储状态或者将第二存储块的存储状态修改为其他除空闲和占用之外的标识方式(如“dummy”)。

可选的,还可以将第二存储块中除目标好块之外的存储块放入空闲存储块列表,以供后续将其他坏块中的数据迁移所用。

在本申请实施例中,当第一组合块中产生读写坏块时,从固态硬盘中选取不属于该第一组合块的未存储数据的存储块作为目标好块,然后,在该读写坏块中存储有数据时,将该读写坏块中存储的数据迁移至目标好块中。保证了第一组合块不会存在读写坏块或存在超出预设值的读写坏块,避免了组合块被弃用的发生,也就避免了对组合块中整体数据的迁移和数据映射表的修改,仅需要将读写坏块中的数据迁移至目标好块,简化了处理流程、提高了处理的效率。

基于上述实施例提供的组合块的坏块处理方法,本申请实施例还提供了一种组合块的坏块处理装置。

参见图3,该图为本申请实施例提供的一种组合块的坏块处理装置的结构示意图。

本申请实施例提供的组合块的坏块处理装置,应用于固态硬盘,包括:选取模块100和迁移模块200;

选取模块100,用于当第一组合块中存在读写坏块时,从固态硬盘的存储块中选取目标好块。

其中,第一组合块中存储有数据,包括固态硬盘中的一个或多个存储块;目标好块不属于第一组合块,且目标好块中未存储有数据。

迁移模块200,用于若读写坏块中存储有数据,则将读写坏块中存储的数据迁移至目标好块中。

在本申请实施例一些可能的实现方式中,选取模块100,具体可以包括:第一获取子模块和选择子模块;

第一获取子模块,用于获取空闲存储块列表;空闲存储块列表包括固态硬盘中未组成组合块的存储块;

选择子模块,用于从空闲存储块列表中选取任意一个存储块作为目标好块,并将选出的存储块从空闲存储块列表中删除。

在本申请实施例一些可能的实现方式中,选取模块100,还可以包括:第二获取子模块;

第二获取子模块,用于当第一获取子模块未获取到空闲存储块列表或空闲存储块列表为空时,获取固态硬盘中包括的每个组合块的存储状态;

选择子模块,还用于当存在存储状态为空闲的第二组合块时,从第二组合块中选取任意一个存储块作为目标好块。

在本申请实施例一些可能的实现方式中,该装置还可以包括:存储块处理模块;

存储块处理模块,用于修改第二存储块的存储状态,并将第二存储块中除目标好块之外的存储块放入空闲存储块列表。

在本申请实施例一些可能的实现方式中,该装置还可以包括:映射处理模块;

映射处理模块,用于将第一组合块与读写坏块的映射关系修改为第一组合块和目标好块的映射关系。

在本申请实施例中,当第一组合块中产生读写坏块时,从固态硬盘中选取不属于该第一组合块的未存储数据的存储块作为目标好块,然后,在该读写坏块中存储有数据时,将该读写坏块中存储的数据迁移至目标好块中。保证了第一组合块不会存在读写坏块或存在超出预设值的读写坏块,避免了组合块被弃用的发生,也就避免了对组合块中整体数据的迁移和数据映射表的修改,仅需要将读写坏块中的数据迁移至目标好块,简化了处理流程、提高了处理的效率。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制。虽然本申请已以较佳实施例揭露如上,然而并非用以限定本申请。任何熟悉本领域的技术人员,在不脱离本申请技术方案范围情况下,都可利用上述揭示的方法和技术内容对本申请技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本申请技术方案保护的范围内。

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