本发明涉及固态硬盘技术领域,特别是涉及一种基于固态硬盘的坏块管理方法、装置、计算机设备和存储介质。
背景技术:
目前,ssd(固态硬盘)已经被广泛应用于各种场合,由于其在性能、功耗、环境适应性等方面的优秀指标,正逐步替换传统的硬盘。然而,ssd中的存储媒介flash在出厂和后续使用过程中会出现坏块,在使用过程中需要把坏块剔除出来,进行集中管理,这样有利于提高ssd的工作效率。
在传统技术中,坏块管理策略是根据建立的坏块表,在写flash时,遇到坏块跳过该坏块,继续写下一个block。这样的做法降低了multi-plane的拼接率,影响了ssd的工作效率,导致了ssd整体性能降低。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种可以提升ssd整体性能的基于固态硬盘的坏块管理方法、装置、计算机设备和存储介质。
一种基于固态硬盘的坏块管理方法,所述方法包括:
获取基于固态硬盘的坏块管理请求;
根据所述基于固态硬盘的坏块管理请求将存储区域划分用户区域和备用区域;
通过进行坏块扫描建立对应的坏块表;
根据所述坏块表做地址重映射建立坏块的重映射表。
在其中一个实施例中,所述根据所述坏块表做地址重映射建立坏块的重映射表的步骤还包括:
用所述备用区域中的好块代替用户区域中的坏块。
在其中一个实施例中,在所述用所述备用区域中的好块代替用户区域中的坏块的步骤之后还包括:
获取数据存储请求;
根据所述数据存储请求,通过查询所述坏块表判断所写入的block是否损坏;
若所写入的block已损坏,则根据所述重映射表找到代替block,将数据写入到所述代替block中。
在其中一个实施例中,在所述根据所述数据存储请求,通过查询所述坏块表判断所写入的block是否损坏的步骤之后还包括:
若所述写入的block未损坏,则直接将数据正常写入未损坏的block中。
一种基于固态硬盘的坏块管理装置,所述装置包括:
获取模块,所述获取模块用于获取基于固态硬盘的坏块管理请求;
划分模块,所述划分模块用于根据所述基于固态硬盘的坏块管理请求将存储区域划分用户区域和备用区域;
坏块扫描模块,所述坏块扫描模块用于通过进行坏块扫描建立对应的坏块表;
重映射模块,所述重映射模块用于根据所述坏块表做地址重映射建立坏块的重映射表。
在其中一个实施例中,所述重映射模块还用于:
用所述备用区域中的好块代替用户区域中的坏块。
在其中一个实施例中,所述装置还包括存储写入模块,所述存储写入模块用于:
获取数据存储请求;
根据所述数据存储请求,通过查询所述坏块表判断所写入的block是否损坏;
若所写入的block已损坏,则根据所述重映射表找到代替block,将数据写入到所述代替block中。
在其中一个实施例中,所述存储写入模块还用于:
若所述写入的block未损坏,则直接将数据正常写入未损坏的block中。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述基于固态硬盘的坏块管理方法、装置、计算机设备和存储介质,通过获取基于固态硬盘的坏块管理请求;根据所述基于固态硬盘的坏块管理请求将存储区域划分用户区域和备用区域;通过进行坏块扫描建立对应的坏块表;根据所述坏块表做地址重映射建立坏块的重映射表。本发明提出了一种优化的ssd坏块管理方法,在每个die上划分一块备用区域,当坏块扫描查询到新的坏块时,用备用区域的block替换掉坏块,在multi-plane操作时,提高了ssd的整体性能。
附图说明
图1为传统技术中ssd存储空间flash阵列拓扑结构示意图;
图2为一个实施例中基于固态硬盘的坏块管理方法的流程示意图;
图3为另一个实施例中基于固态硬盘的坏块管理方法的流程示意图;
图4为再一个实施例中基于固态硬盘的坏块管理方法的流程示意图;
图5为一个实施例中ssd坏块管理方法结构示意图;
图6为一个实施例中基于固态硬盘的坏块管理装置的结构框图;
图7为另一个实施例中基于固态硬盘的坏块管理装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,传统的坏块管理策略如图1所示,图1为ssd存储空间flash阵列拓扑结构示意图。ssd固件(firmware,以下简称fw)向die0、die1依次写入,假如die0上的plane1有个坏块blockb,fw写完blocka时,接下来便会跳过blockb写到die1的plane0中blockc上面去。为了提高ssd读写性能,多采用多plane操作(以下简称multi-plane),而multi-plane操作的block一般为连续的。所以当进行multi-plane操作时,由于blockb被跳过降低了multi-plane的拼接率,导致ssd整体性能降低。
本发明基于上述技术问题提出了一种优化的ssd坏块管理方法,在每个die上划分一块备用区域,当坏块扫描查询到新的坏块时,用备用区域的block替换掉坏块,在multi-plane操作时,提高了ssd的整体性能。
在一个实施例中,如图2所示,提供了一种基于固态硬盘的坏块管理方法,该方法包括:
步骤202,获取基于固态硬盘的坏块管理请求;
步骤204,根据基于固态硬盘的坏块管理请求将存储区域划分用户区域和备用区域;
步骤206,通过进行坏块扫描建立对应的坏块表;
步骤208,根据坏块表做地址重映射建立坏块的重映射表。
在一个实施例中,根据坏块表做地址重映射建立坏块的重映射表的步骤还包括:用备用区域中的好块代替用户区域中的坏块。
具体地,首先,主机上电,ssd正常工作,各模块相关工作参数初始化。然后,ftl将存储区域划分为用户区域和备用区域。接着,对nandflash进行坏块扫描,并建立坏块表。根据建立的坏块表做地址重映射,用备用区域的好块去替代查询到的坏块。最后,主机进行正常的数据存储。
结合图5所示,为本实施例中提出的ssd坏块管理方法结构示意图。与传统方法不同,当某个die上发现坏块,会采用该die上的某个好块替换。用户在写入数据时,当碰到blockb,不会跳过die0的plane1不写,而是写入到blockb的替换者blockb’上,fw内部会维护一张坏块到替换块的映射表方便fw寻址,比如blockb—>blockb’。采用该方法,除正常用户使用的block外,还需额外保留一部分好的block,用于替换用户空间的坏块。整个die上block就划分为两个区域:用户区域和备用区域。保证了multi-plane操作时block的连续性,大大的提高了ssd的读写性能。
在本实施例中,将存储空间划分为正常的用户区域和备用区域,并根据建立的坏块表,用备用区域的好块去替代用户区域中的坏块,保证了multi-plane操作时访问block的连续性,大大地提高了读写性能。
在其中一个实施例中,如图3所示,提供了一种基于固态硬盘的坏块管理方法,该方法在用备用区域中的好块代替用户区域中的坏块的步骤之后还包括:
步骤302,获取数据存储请求;
步骤304,根据数据存储请求,通过查询坏块表判断所写入的block是否损坏;
步骤306,若所写入的block已损坏,则根据重映射表找到代替block,将数据写入到所述代替block中。
在其中一个实施例中,如图4所示,提供了一种基于固态硬盘的坏块管理方法,该方法在用备用区域中的好块代替用户区域中的坏块的步骤之后还包括:
步骤402,获取数据存储请求;
步骤404,根据数据存储请求,通过查询坏块表判断所写入的block是否损坏;
步骤406,若写入的block未损坏,则直接将数据正常写入未损坏的block中。
具体地,本实施例提出的基于固态硬盘的坏块管理方法的具体实施方式包括如下步骤:
1.主机上电,ssd正常工作,各模块相关工作参数初始化,下一步执行流程2。
2.ftl将存储区域划分为用户区域和备用区域,下一步执行流程3。
3.对nandflash进行坏块扫描,并建立坏块表,下一步执行流程4。
4.根据建立的坏块表做地址重映射,用备用区域的好块去替代查询到的坏块,下一步执行流程5。
5.主机进行正常的数据存储,下一步执行流程6。
6.查询建立的坏块表,判断所写入的block是否损坏。是,下一步执行流程7;否,下一步执行流程8。
7.根据坏块的重映射表找到替代block,将数据写入该备用的block中。下一步执行流程9。
8.将数据正常写入该block中。下一步执行流程9。
9.回复主机数据存储成功。
在本实施例中,通过根据坏块的重映射表找到替代block,将数据写入该备用的block中,提高了multi-plane的拼接率,进而实现了提高ssd的整体性能。
应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种基于固态硬盘的坏块管理装置600,该装置包括:
获取模块601,用于获取基于固态硬盘的坏块管理请求;
划分模块602,用于根据基于固态硬盘的坏块管理请求将存储区域划分用户区域和备用区域;
坏块扫描模块603,用于通过进行坏块扫描建立对应的坏块表;
重映射模块604,用于根据坏块表做地址重映射建立坏块的重映射表。
在一个实施例中,重映射模块604还用于:
用备用区域中的好块代替用户区域中的坏块。
在一个实施例中,如图7所示,提供了一种基于固态硬盘的坏块管理装置600,该装置还包括存储写入模块605,用于:
获取数据存储请求;
根据数据存储请求,通过查询所述坏块表判断所写入的block是否损坏;
若所写入的block已损坏,则根据重映射表找到代替block,将数据写入到所述代替block中。
在一个实施例中,存储写入模块605还用于:
若写入的block未损坏,则直接将数据正常写入未损坏的block中。
关于基于固态硬盘的坏块管理装置的具体限定可以参见上文中对于基于固态硬盘的坏块管理方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于固态硬盘的坏块管理方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。