固态硬盘的数据存储方法、装置、设备及可读存储介质与流程

文档序号:15850648发布日期:2018-11-07 09:50阅读:345来源:国知局
固态硬盘的数据存储方法、装置、设备及可读存储介质与流程

本发明实施例涉及固态硬盘数据存储技术领域,特别是涉及一种固态硬盘的数据存储方法、装置、设备及计算机可读存储介质。

背景技术

随着互联网、云计算、物联网等计算机技术的快速发展及广泛普及应用,日常工作或生活中时时刻刻会产生海量的数据需要处理和存储,数据的爆炸式增长、用户对数据的安全性要求的增高及信息技术的高速发展均对存储系统的性能提出了更高的要求。

ssd(solidstatedrives,固态硬盘),也叫固盘,为用固态电子存储芯片阵列制成的硬盘,由控制单元和固态存储单元组成。ssd需要在下电时能够在规定时间(一般为20ms)内将所需要存储的数据进行保存(也即落盘过程),从而保证ssd中的数据保持完整,在下次上电时ssd能够正常工作。

落盘的数据主要来源为ddr(doubledatarate双倍速率同步动态随机存储器)中的数据,包括写缓存中的数据和系统的管理数据(如l2p表等),这些数据由主机端从ssd的前端发来,相关模块收到之后暂存在ssd的写缓存中,待达到一定的量(一般为一个superpage写满)后,再一次性交给nand管理模块进行“落盘”,ssd在下电时需要刷写写缓存中的数据和系统的管理数据。ssd下电过程的完成依赖ssd自带电容的放电,ssd的电容一般放电时间为20ms,这就要求ssd的固件在设计下电的流程时要考虑时间,以减少下电时ssd的保存过程的时间消耗。

ssd下电可能为用户操作下的正常下电,也可能为ssd正常运行工作过程中,电源突然被切断等不可抗拒的外界因素导致的异常下电,现有技术中一般采用下电时全部刷写所有管理数据和刷写部分可恢复全部管理数据方法。而刷写全部管理数据只能在对下电时间要求不高的场景下,而无法满足ssd的异常下电时所需时间的要求,有可能导致ssd下电过程中数据保持不完整,影响下次ssd上电时的正常使用。



技术实现要素:

本发明实施例的目的是提供一种固态硬盘的数据存储方法、装置、设备及计算机可读存储介质,减少了ssd下电时需要存储数据量,从而缩短了ssd下电过程中数据存储时间,有利于保证ssd中的数据完整性,使得ssd在下次上电时可正常工作。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种固态硬盘的数据存储方法,包括:

预先根据固态硬盘的管理数据,按照预设数据存储量进行划分lba;各lba均包括第一存储区域和第二存储区域,所述第一存储区域中保存该lba中的自管理数据的说明信息,和所述自管理数据的变化信息;所述第二存储区域存储所述自管理数据在ddr中相对应的数据;

在所述固态硬盘正常运行过程中,当检测到lba中的自管理数据发生变化时,在所述ddr中更新所述自管理数据,并将所述自管理数据的变化量存储在相应的第一存储区域中;

当检测到目标lba的第一存储区域的剩余空间满足预设条件,从所述ddr中按照预设数据拷贝量将与所述目标lba相对应的管理数据,复制至所述目标lba的第二存储区域中,并向nand管理模块发送刷写所述目标lba的第一存储区域和第二存储区域中的数据;

当检测到所述固态硬盘下电时,将各lba的第一存储区域和第二存储区域中的数据刷写至nand中,并将更新的管理数据的l2p表下刷至控制管理器的超级块中。

可选的,所述第一存储区域与所述第二存储区域的占用空间容量比值为1:3。

可选的,所述预设数据存储量为16k。

可选的,所述当检测到目标lba的第一存储区域的剩余空间满足预设条件为:

当检测到目标lba的第一存储区域的剩余空间容量为0。

可选的,所述预设数据拷贝量与所述第二存储区域的占用空间容量相同。

可选的,所述将更新的管理数据的l2p表下刷至控制管理器的超级块中包括:

预先为所述固态硬盘的管理数据的l2p表建立一级l2p;

将更新的管理数据对应的一级l2p表下刷至控制管理器的超级块中。

可选的,在所述将更新的管理数据的l2p表下刷至控制管理器的超级块中之后,还包括:

向上一级管理模块发送所述固态硬盘下电存储管理数据已完成的指令。

本发明实施例另一方面提供了一种固态硬盘的数据存储装置,包括:

预处理模块,用于预先根据固态硬盘的管理数据,按照预设数据存储量进行划分lba;各lba均包括第一存储区域和第二存储区域,所述第一存储区域中保存该lba中的自管理数据的说明信息,和所述自管理数据的变化信息;所述第二存储区域存储所述自管理数据在ddr中相对应的数据;

存储数据变量模块,用于在所述固态硬盘正常运行过程中,当检测到lba中的自管理数据发生变化时,在所述ddr中更新所述自管理数据,并将所述自管理数据的变化量存储在相应的第一存储区域中;

分批数据存储模块,用于当检测到目标lba的第一存储区域的剩余空间满足预设条件,从所述ddr中按照预设数据拷贝量将与所述目标lba相对应的管理数据,复制至所述目标lba的第二存储区域中,并向nand管理模块发送刷写所述目标lba的第一存储区域和第二存储区域中的数据;

下电数据存储模块,用于当检测到所述固态硬盘下电时,将各lba的第一存储区域和第二存储区域中的数据刷写至nand中,并将更新的管理数据的l2p表下刷至控制管理器的超级块中。

本发明实施例还提供了一种固态硬盘的数据存储设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述固态硬盘的数据存储方法的步骤。

本发明实施例最后还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有固态硬盘的数据存储程序,所述固态硬盘的数据存储程序被处理器执行时实现如前任一项所述固态硬盘的数据存储方法的步骤。

本发明实施例提供了一种固态硬盘的数据存储方法,在固态硬盘正常运行过程中,当检测到lba中的管理数据发生变化时,在ddr中更新管理数据,并将管理数据的变化量存储在相应的第一存储区域中;当检测到目标lba的第一存储区域的剩余空间满足预设条件,从ddr中按照预设数据拷贝量将与目标lba相对应的管理数据,复制至目标lba的第二存储区域中,并向nand管理模块发送刷写其第一存储区域和第二存储区域中的数据;当检测到固态硬盘下电时,将各lba的第一存储区域和第二存储区域中的数据刷写至nand中,并将更新的管理数据的l2p表下刷至控制管理器的超级块中,各lba中的数据为预先按照预设数据存储量划分固态硬盘的管理数据所得。

本申请技术方案的优点在于,将管理数据分配给多个lba,各lba存储管理数据的变化量和对应在ddr中的数据,并在满足预设条件时,将各lba中存储数据拷贝在nand中,当固态硬盘下电时,只需将各lba中存储的当前数据下刷至nand中。本申请在固态硬盘运行过程中,逐渐将下电时需要存储的数据分批次存储在nand中,即在固态硬盘未下电时便实时存储一部分下电需要存储相关数据,当固态硬盘异常下电时,下刷管理数据的实际数据量明显减小,而相比写缓存中的数据量,管理数据的数据量较大,所以管理数据的刷写时间直接影响固态硬盘的下电存储所需数据的时间,从而大大的降低了固态硬盘下电时需要存储数据量,从而缩短了ssd下电过程中数据存储时间,有利于保证ssd中的数据完整性,使得ssd在下次上电时可正常工作。

此外,本发明实施例还针对固态硬盘的数据存储方法提供了相应的实现装置、设备及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置、设备及计算机可读存储介质具有相应的优点。

附图说明

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

图1为本发明实施例提供的一种固态硬盘的数据存储方法的流程示意图;

图2为本发明实施例提供的另一种固态硬盘的数据存储方法的流程示意图;

图3为本发明实施例提供的固态硬盘的数据存储装置的一种具体实施方式结构图;

图4为本发明实施例提供的固态硬盘的数据存储装置的另一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

首先参见图1,图1为本发明实施例提供的一种固态硬盘的数据存储方法的流程示意图,本发明实施例可包括以下内容:

s101:预先根据固态硬盘的管理数据,按照预设数据存储量进行划分lba。

将固态硬盘中的每种管理数据按照数据量的多少划分lba,预设数据存储量为每个lba管理的管理数据的数量值,例如,为每个lba划分16k数据,也即每个lba管理的数据为16k。当然,也可为lba划分任何数值的数据,具体的取值可根据管理数据的总量和实际的应用场景进行确定,本申请对此不作任何限定。

在一种具体的实施方式中,预设数据存储量可为一个,也可为多个,也就是说各lba的管理数据的数据量可能彼此相同,也可能不同,可根据具体的应用场景进行选取,本申请对此不作任何限定。

每个lba的结构相同,均包括第一存储区域和第二存储区域,第一存储区域中保存该lba中的自管理数据的说明信息,和自管理数据的变化信息;第二存储区域存储自管理数据在ddr中相对应的数据。

第一存储区域与第二存储区域的占用空间容量比值为1:3,当然,也可为其他比例进行划分。为了在固态硬盘运行过程中尽量多的存储下电时需要落盘的数据,第一存储区域与第二存储区域的占用空间容量比值应设置不超过1:1。

举例来说,lba管理16k数据,该lba前4k数据(第一存储区域),也即从数据头结束的位置开始,用于保存其管理数据在正常运行时发生的改变量,而前64字节用于保存该lba这16k数据的说明信息,说明信息可包括管理数据的类型、管理数据的item数等信息。该lba后12k数据(第二存储区域)可用于保存此种管理数据在ddr中的数据,例如l2p表在ddr中的数据。

需要说明的是,第一存储区域可以为多个,第二存储区域也可为多个,本申请对比不作任何限定,举例来说,lba管理16k数据,前2k数据为第一存储区域,紧接着6k为第二存储区域,在接着2k的第一存储区域,最后的6k为第二存储区域。

s102:在固态硬盘正常运行过程中,当检测到lba中的自管理数据发生变化时,在ddr中更新自管理数据,并将自管理数据的变化量存储在相应的第一存储区域中。

自管理数据为每个lba中的所属自身的管理数据,在固态硬盘正常运行时,当有某个lba的管理数据发生改变时,除了正常更新此管理数据在ddr中的相应位置外,保存其改变量到其第一存储区域内。举例来说,第一个lba的管理数据发生变化时,可将其改变量存储在第一个lba的第一存储区域中。

s103:当检测到目标lba的第一存储区域的剩余空间满足预设条件,从ddr中按照预设数据拷贝量将与目标lba相对应的管理数据,复制至目标lba的第二存储区域中,并向nand管理模块发送刷写目标lba的第一存储区域和第二存储区域中的数据。

在固态硬盘运行过程中,只要某个lba的管理数据发生变化,即将变化量保存至相应lba的第一存储区域中,当该第一存储区域被写满时(即剩余空间容量为0),或者是剩余的空间不足以完整保存下个变化量,或者是为了加快数据存储速度,当第一存储区域的剩余空间值不大于预设阈值,(例如,第一存储区域的空间容量值为4k,设置的阈值为0.5k),可从ddr中拷贝一定量的数据存储在第二存储区域中,为了加快固态硬盘在工作状态中存储有效数据量的数量,避免异常下电导致数据太多无法在规定时间内完全存储,拷贝的数据量可以与第二存储空间的占用空间容量相同。举例来说,当第二存储区域为12k时,可拷贝12k的此种管理数据在ddr中的数据该空间内。ssd在下电之前的正常运行过程中,开始考虑下电时的保存数据量问题,也就是通过在未下电时实时的保存一定的相关数据量,来达到下电时少保存数据的目的。

当然,预设数据拷贝量也可小于或略小于第二存储区域的占用空间容量相同,本申请对此不作任何限定。

当从ddr中复制完成目标lba相应的管理数据时,可通知nand管理模块刷写该目标lba中的所有数据量,并更新管理数据的l2p表。例如,lba管理16k数据,该lba前4k数据被写满时,完成复制12k的此种管理数据在ddr中的数据到该lba后12k数据,通知nand管理模块刷写此16k数据。

s104:当检测到固态硬盘下电时,将各lba的第一存储区域和第二存储区域中的数据刷写至nand中,并将更新的管理数据的l2p表下刷至控制管理器的超级块中。

当固态硬盘下电时,不论各lba的空间是否存储满数据(例如每个lba管理16k数据,不论16k空间是否填满),均直接将各lba中存储的数据刷写至nand中,并更新相应的l2p表。

刷写管理数据的=l2p表到controlmanager控制器的superblock超级块区域(该区域的数据一般在上电时由controlmanager直接从slcblock中读取数据到ddr中使用)。

为了进一步减少下电过程中刷写的数据量,可预先为固态硬盘的管理数据的l2p表建立一级l2p;在固态硬盘下电时,直接将更新的管理数据对应的一级l2p表下刷至控制管理器的超级块中,即下电时用此l2p的刷写代替管理数据的l2p表的刷写,进一步减少下电时的刷写数据量。

当然,在建立一级l2p表的基础上,还可建立二级l2p表,三级l2p表等等,根据实际固态硬盘中l2p表占用的空间容量值进行建立相应的下级l2p表,本申请对比不作任何限定。

在本发明实施例提供的技术方案中,将管理数据分配给多个lba,各lba存储管理数据的变化量和对应在ddr中的数据,并在满足预设条件时,将各lba中存储数据拷贝在nand中,当固态硬盘下电时,只需将各lba中存储的当前数据下刷至nand中。本申请在固态硬盘运行过程中,逐渐将下电时需要存储的数据分批次存储在nand中,即在固态硬盘未下电时便实时存储一部分下电需要存储相关数据,当固态硬盘异常下电时,下刷管理数据的实际数据量明显减小,而相比写缓存中的数据量,管理数据的数据量较大,所以管理数据的刷写时间直接影响固态硬盘的下电存储所需数据的时间,从而大大的降低了固态硬盘下电时需要存储数据量,从而缩短了ssd下电过程中数据存储时间,有利于保证ssd中的数据完整性,使得ssd在下次上电时可正常工作。

基于上述实施例,请参阅图2,还可包括:

s105:向上一级管理模块发送所述固态硬盘下电存储管理数据已完成的指令。

及时向上一级管理模块反馈数据存储结果,可避免某些功能模块的延时等待,有利于提升整个系统的工作效率。

本发明实施例还针对固态硬盘的数据存储方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的固态硬盘的数据存储装置进行介绍,下文描述的固态硬盘的数据存储装置与上文描述的固态硬盘的数据存储方法可相互对应参照。

参见图3,图3为本发明实施例提供的固态硬盘的数据存储装置在一种具体实施方式下的结构图,该装置可包括:

预处理模块301,用于预先根据固态硬盘的管理数据,按照预设数据存储量进行划分lba;各lba均包括第一存储区域和第二存储区域,第一存储区域中保存该lba中的自管理数据的说明信息,和自管理数据的变化信息;第二存储区域存储自管理数据在ddr中相对应的数据。

存储数据变量模块302,用于在固态硬盘正常运行过程中,当检测到lba中的自管理数据发生变化时,在ddr中更新自管理数据,并将自管理数据的变化量存储在相应的第一存储区域中。

分批数据存储模块303,用于当检测到目标lba的第一存储区域的剩余空间满足预设条件,从ddr中按照预设数据拷贝量将与目标lba相对应的管理数据,复制至目标lba的第二存储区域中,并向nand管理模块发送刷写目标lba的第一存储区域和第二存储区域中的数据。

下电数据存储模块304,用于当检测到固态硬盘下电时,将各lba的第一存储区域和第二存储区域中的数据刷写至nand中,并将更新的管理数据的l2p表下刷至控制管理器的超级块中。

可选的,在本实施例的一些实施方式中,请参阅图4,所述装置例如还可以包括:

通知模块305,用于当将各lba的第一存储区域和第二存储区域中的数据刷写至nand中,且将更新的管理数据的l2p表下刷至控制管理器的超级块中时,向上一级管理模块发送所述固态硬盘下电存储管理数据已完成的指令。

本发明实施例所述固态硬盘的数据存储装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例在固态硬盘运行过程中,逐渐将下电时需要存储的数据分批次存储在nand中,即在固态硬盘未下电时便实时存储一部分下电需要存储相关数据,当固态硬盘异常下电时,下刷管理数据的实际数据量明显减小,而相比写缓存中的数据量,管理数据的数据量较大,所以管理数据的刷写时间直接影响固态硬盘的下电存储所需数据的时间,从而大大的降低了固态硬盘下电时需要存储数据量,从而缩短了ssd下电过程中数据存储时间,有利于保证ssd中的数据完整性,使得ssd在下次上电时可正常工作。

本发明实施例还提供了一种固态硬盘的数据存储设备,具体可包括:

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

处理器,用于执行计算机程序以实现如上任意一实施例所述固态硬盘的数据存储方法的步骤。

本发明实施例所述固态硬盘的数据存储设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例降低了固态硬盘下电时需要存储数据量,从而缩短了ssd下电过程中数据存储时间,有利于保证ssd中的数据完整性,使得ssd在下次上电时可正常工作。

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

本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例降低了固态硬盘下电时需要存储数据量,从而缩短了ssd下电过程中数据存储时间,有利于保证ssd中的数据完整性,使得ssd在下次上电时可正常工作。

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

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

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

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

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