固态硬盘的数据写入方法、装置、计算机设备和存储介质与流程

文档序号:22400703发布日期:2020-09-29 18:12阅读:151来源:国知局
固态硬盘的数据写入方法、装置、计算机设备和存储介质与流程
本发明涉及存储
技术领域
,尤其涉及一种固态硬盘的数据写入方法、装置、计算机设备和存储介质。
背景技术
:固态硬盘以nand为存储介质,与其它类型的存储介质类似,nand具有生命周期,在生命周期的后期错误比率(biterrorrate,简称ber)会增加。通常在生产和使用的过程中固态硬盘都会出现部分存储区域损坏的情形,为了保固态硬盘未损坏区域的正常使用,需要对损坏的存储区域进行标记从而为数据写入提供有效的存储空间。现有技术主要采用以下两种方式对损坏区域进行标记:一种是坏块机制,即以存储块(block)为标记单位,然而存储块包含很多的存储页,有时仅仅一个存储页损坏,就需要牺牲该存储块中全部的存储页,造成了极大的空间浪费;另一种是坏页机制,即以存储页(page)为标记单位,虽然以存储页为标记单位能够很大程度提升存储空间的利用率,但是由于存储页的数量较多,因此会带来操作维护上的难度,例如一个存储块上有上百个存储页,那么就需要记录上百个存储页标记状态,因此需要后台管理的数据量远远的超过了以块为单位标记的情形。技术实现要素:有鉴于此,有必要针对以上技术问题,提出一种固态硬盘的数据写入方法、装置、计算机设备和存储介质。根据本发明的一方面,提供了一种固态硬盘的数据写入方法,所述方法包括:将存储块划分为多子存储块,其中,每个子存储块包括多个存储页且与该多个存储页有预设对应关系;对每个子存储块的多个存储页进行读写和/或巡检;若某一存储页发生读写错误和/或巡检错误,则利用所述预设对应关系将某一存储页所属的子存储块标记为损坏;若子存储块的多个存储页均未发生读写错误和/或巡检错误,则利用所述预设对应关系将子存储块标记为正常;利用多个子存储块的标记对所述存储块进行标记;根据所述存储块的标记和多个子存储块的标记执行数据写入操作。在其中一个实施例中,所述方法还包括:获取每个子存储块的标记;根据每个子存储块的标记生成子坏块信息表。在其中一个实施例中,所述根据每个子存储块的标记生成子坏块信息表的步骤包括:为每个子存储块分配一个标记位;若子存储块损坏,则将子存储块的对应标的标记位记为1;若子存储块正常,则将子存储块的对应标的标记位记为0;遍历多个子存储块,以得到所述子坏块信息表。在其中一个实施例中,所述利用多个子存储块的标记对所述存储块进行标记的步骤包括:根据所述子坏块信息表确定已损坏的子存储块的数量;若已损坏的子存储块的数量超过预设值,则将所述存储块标记为不可用,否则将所述存储块标记为可用。在其中一个实施例中,所述根据所述存储块的标记和多个子存储块的标记执行数据写入操作步骤包括:若所述存储块标记为可用,则将数据写入标记为正常的子存储块内。在其中一个实施例中,所述将存储块划分为多子存储块,其中,每个子存储块包括多个存储页且与该多个存储页有预设对应关系的步骤包括:获取存储块内全部存储页;将所述全部存储页等分成多个相同大小的子存储块;根据每个存储页与多个子存储块的所属关系确定所述预设对应关系。在其中一个实施例中,所述对每个子存储块的多个存储页进行读写和/或巡检的步骤包括:依次对每个存储页进行读写和/或巡检;若所述子存储块已被标记为损坏,则停止对所述子存储块的剩余存储页的读写和/或巡检。根据本发明的另一方面,提供了一种固态硬盘的数据写入装置,所述装置包括:划分单元,用于将存储块划分为多子存储块,其中,每个子存储块包括多个存储页且与该多个存储页有预设对应关系;检测单元,用于对每个子存储块的多个存储页进行读写和/或巡检;损坏标记单元,用于在某一存储页发生读写错误和/或巡检错误时,则利用所述预设对应关系将某一存储页所属的子存储块标记为损坏;正常标记单元,用于在子存储块的多个存储页均未发生读写错误和/或巡检错误时,则利用所述预设对应关系将子存储块标记为正常;存储块标记单元,用于利用多个子存储块的标记对所述存储块进行标记;数据写入单元,用于根据所述存储块的标记和多个子存储块的标记执行数据写入操作。本发明的又一方面,还提供了一种计算机设备,该计算机设备包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的固态硬盘的数据写入方法。本发明的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的固态硬盘的数据写入方法。上述的固态硬盘的数据写入方法、装置、计算机设备和存储介质,通过将存储块划分为多个子存储块,再对每个子存储块进行标记,并根子存储块的标记对存储块进行标记,最后结合存储块的标记和子存储块的标记为数据写入提供安全可靠的存储区域,兼顾了存储空间的利用率和标记的数量,能够在减小系统维护信息开销的同时还保证了空间利用率,延长了存储块使用周期及固态硬盘的寿命。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。图1为本发明一个实施例中一种固态硬盘的数据写入方法的流程示意图;图2为本发明另一个实施例中步骤100的子流程示意图;图3为本发明另一个实施例中另一种固态硬盘的数据写入方法的流程示意图;图4为本发明又一个实施例中步骤800的子流程示意图;图5为发明另一个实施例中步骤500的子流程示意图的流程示意图;图6为本发明一个实施例中一种固态硬盘的数据写入装置的结构示意图;图7为本发明另一个实施例中算机设备的内部结构图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。在一个实施例中,请参照如图1所示,提供了一种固态硬盘的数据写入方法,具体的该方法包括以下步骤:s100,将存储块划分为多子存储块,其中,每个子存储块包括多个存储页且与该多个存储页有预设对应关系。其中,存储块(即block)划分为多个子存储块是指将一个存储中的全部存储页(即page)分成至少两个子存储块,例如一个block中有256个page,可以将该block分成8个子存储块;预设对应关系是指每个子存储块和每个page之间对应关系,该对应关系是预先由用户设置。s200,对每个子存储块的多个存储页进行读写和/或巡检。s300,若某一存储页发生读写错误和/或巡检错误,则利用预设对应关系将某一存储页所属的子存储块标记为损坏。s400,若子存储块的多个存储页均未发生读写错误和/或巡检错误,则利用预设对应关系将子存储块标记为正常。s500,利用多个子存储块的标记对存储块进行标记。s600,根据存储块的标记和多个子存储块的标记执行数据写入操作。上述的固态硬盘的数据写入方法,通过将存储块划分为多个子存储块,再对每个子存储块进行标记,并根子存储块的标记对存储块进行标记,最后结合存储块的标记和子存储块的标记为数据写入提供安全可靠的存储区域,兼顾了存储空间的利用率和标记的数量,能够在减小系统维护信息开销的同时还保证了空间利用率,延长了存储块使用周期及固态硬盘的寿命。在一个实施例中,为了便于理解本发明的技术方案,本发明以一个block有256个page为例分别记为page0-page255,请参照图2所示,具体实施过程中步骤100包括以下子步骤:s110,获取存储块内全部存储页。s120,将全部存储页等分成多个相同大小的子存储块。其中,等分是指将存储块的存储空间平均分配给每个子存储块;例如可以将block等分成8个大小相同的子存储块,此时每个子存储块均包括32个page。可以理解的是,本实施例中等分得到的子存储块的数量仅用于举例说,在实施过程中用户可以根据实际需求设定,例如还可以将block等分成4个子存储块,此时每个子存储块均包括64个存储页。s130,根据每个存储页与多个子存储块的所属关系确定预设对应关系。请参照下表1所示,表1中minblock即为子存储块,其中page0-page31属于子存储块0(即minblock0),同理得到子存储块1(即minblock1)-子存储块7(minblock7)。在具体实施过程中预设对应关系并不限于表1中所列举的情况,当然page0-page31也可是与minblock7对应,本实施例仅用于举例说明,不应理解为对预设对应关系表的限制。表1子存储块与存储页的预设对应关系minblock01234567page0~3132~6364~9596~127128~159160~191192~223224~255上述的固态硬盘的数据写入方法,通过将存储块等分成多个子存储块,平衡了坏页标记机制和数据写入机制,以每个存储空间大小相同的子存储块为单位进行子存储块正常和/或损坏的标记,保证了固态硬盘存储空间的使用效率,具有较佳的灵活性。在另一个实施例中,请参照图3所示,提供了一种固态硬盘的数据写入方法,在前述步骤的基础上该方法还包括:s700,获取每个子存储块的标记。s800,根据每个子存储块的标记生成子坏块信息表;较佳的,请参照图4所示,前述步骤600具体包括以下子步骤:s810,为每个子存储块分配一个标记位。s820,若子存储块损坏,则将子存储块的对应的标记位记为1。s830,若子存储块正常,则将子存储块的对应的标记位记为0。s840,遍历多个子存储块,以得到子坏块信息表。举例来说,请参照表2所示,表2中bit0为子存储块0的标记位,同理bit1-bit7分别为minblock1-minblock7的标记位,value0-value7为每个子存储块标记位bit0-bit7的标记值,当全部的子存储块均正常时子坏块信息表的标记值均记为0。当某一个miniblock发生错误需要标记坏块时,例如:page168在巡检过程中发生错误需要标记坏块,由表1的预设对应关系可以确定page168属于miniblock5,由此则将miniblock5对应的bit5标识值记为1,此时坏块信息表如表3所示3。表2子存储块均正常的子坏块信息表bit01234567value00000000表3子存储块5损坏时的子坏块信息表bit01234567value00000100当需要写入数据时,先查询子坏块信息表以确认可用的子存储块,当查询到bit5对应为坏块时,写入数据时就会跳过子存储块5,不再向子存储块5内写入数据,也就不会再发生错误。在另一个实施例中,请参照图5所示,作为本发明方法优选的实施方案步骤500具体可参照以下方式实施:s510,根据子坏块信息表确定已损坏的子存储块的数量。s520,若已损坏的子存储块的数量超过预设值,则将存储块标记为不可用。s530,否则将所述存储块标记为可用。具体举例来说,请参照表4,通过表4中记录的八个子存储块中五个子存储的标记位的标记值为1,由此可知子存储块0、子存储块1、子存储块2、子存储块3、子存储块5均已损坏,若预设值为4,那么该存储块将被标记为不可用;同理若以表3中的数据,可以确定存储块为可用存储块。可以理解的是,预设值应当小于子存储块的总数,例如预设值可以是子存储块总数的一半,当然也可以是其它数值,本实施例仅用于举例数据,表4五个子存储块损坏的子坏块信息表bit01234567value11110100更进一步的,在进行数据写入前,通过线查询存储块的标记,若存储块的被标记为可用,后续在根据子存储块的标记状态确定能够写入数据的子存储块;若存储块已被标记为不可用,即使存储块内还有未损坏的子存储块也不会将数据写入该未损坏的子存储块内。请继续参照表3中的数据,假设预设值为4,由于只有子存储块5损坏,因此该存储块会被标记为可用,在进行数据写入操作时,可将数据写入被标记为正常的子存储块中,而不向子存储块5写入数据。上述方法,通过优先利用存储块的标记确定该存储块是否可用,再利用每个子存储块的标记确定某一个子存储块是否损坏,保证了数据能够写入安全区域,提高了安全性。在另一个实施例中,作为一个优选的实施方式,步骤200具体可以采用以下方式实施:依次对每个存储页进行读写和/或巡检。若子存储块已被标记为损坏,则停止对子存储块的剩余存储页的读写和/或巡检。举例来说,page168和page190都属于子存储块5,当page168在巡检时已经出错,此时子存储块5即不用,后续过程无需对page168-page191的读写和/或巡检,由此避免了不必要的重复标记过程。应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在又一个实施例中,请参照图6所示,提供了一种固态硬盘的数据写入装置90,具体的该装置包括划分单元91,用于将存储块划分为多子存储块,其中,每个子存储块包括多个存储页且与该多个存储页有预设对应关系;检测单元92,用于对每个子存储块的多个存储页进行读写和/或巡检;损坏标记单元93,用于在某一存储页发生读写错误和/或巡检错误时,则利用预设对应关系将某一存储页所属的子存储块标记为损坏;正常标记单元94,用于在子存储块的多个存储页均未发生读写错误和/或巡检错误时,则利用预设对应关系将子存储块标记为正常;存储块标记单元95,用于利用多个子存储块的标记对所述存储块进行标记;数据写入单元96,用于根据所述存储块的标记和多个子存储块的标记执行数据写入操作。需要说明的是,关于固态硬盘的数据写入装置的具体限定可以参见上文中对于固态硬盘的数据写入方法的限定,在此不再赘述。上述固态硬盘的数据写入装置中的各个单元可全部或部分通过软件、硬件及其组合来实现。上述各单元可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个单元对应的操作。在又一个实施例中,请参照图提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现以上所述的固态硬盘的数据写入方法。根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上所述的固态硬盘的数据写入方法。最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,固态硬盘的数据写入方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddrsdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambusram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp和/或任何其它这种配置。结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在asic中。asic可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。在一个或多个示例性设计中,功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(dsl)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、dsl或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1