一种固态硬盘数据的掉电保护方法及设备
技术领域
本申请涉及计算机存储技术领域,特别是涉及固态硬盘数据的掉电保护方法及设备。
背景技术
随着数据存储技术的迅速发展,固态硬盘(Solid State Drive,SSD)逐渐取代了传统的磁记录硬盘(hard disk drive,HDD)。带有DDR(Double Data Rate SDRAM,双倍速率同步动态随机存储器)的固态硬盘在工作时,DDR中一般会缓存频繁访问的数据、关键数据以及小数据等等。数据在DDR中的状态如图1所示,图1是固态硬盘一实施方式中的数据示意图。其中D表示Dirty(被更新过的数据),V表示Valid(有效数据)。考虑到固态硬盘的性能以及写入放大等因素,DDR中缓存的数据一般不是实时下刷,而是会积攒一部分脏数据后,再进行下刷保存。DDR的数据缓存能很明显改善硬盘的读写性能,但若固态硬盘突然掉电,则会造成未及时下刷的数据的丢失,因此,目前带DDR的固态硬盘一般都有掉电保护功能。掉电保护功能主要是在掉电时通过利用备用电源来放电,以供数据下刷保存。
本申请的发明人在长期的研发过程中,发现虽然带DDR的固态硬盘设置了掉电保护功能,但还存在脏数据下刷频率与掉电保护之间的平衡问题。在一定范围内,脏数据攒的越多一起下刷,对于固态硬盘的性能提升越有帮助,但也会存在异常掉电时来不及保存而造成数据丢失。为了保证异常掉电时所有数据都能够及时保存,一般会根据配备的电容(即备用电源)放电时间,来计算数据下刷阈值,以确保有足够的时间进行数据下刷。或者还可以设置第二级超级电容(增加电容贴片),在监测到第一级超级电容的放电时间减少到即将达到阈值时,接通第二级超级电容,确保足够的放电时间。还可以通过控制掉电保护时避免擦除等较高消耗操作,或者使用一块SLC(Single-Level Cell,单层存储单元)区域来加速数据下刷等加速数据的保存。但是,这些方法仍然不能满足掉电保护需求,还是会存在数据丢失的情况。
发明内容
本申请主要解决的技术问题是提供一种固态硬盘数据的掉电保护方法及设备,能够提高固态硬盘数据的安全性。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种固态硬盘数据的掉电保护方法,该方法包括获取固态硬盘备用电源的性能状态及当前数据备份策略;若当前数据备份策略与备用电源的性能状态不匹配,则调整当前数据备份策略至与备用电源的性能状态相匹配。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种固态硬盘,该固态硬盘包括控制器和存储器,控制器耦接存储器,存储器用于存储程序,控制器用于执行所述程序,获取固态硬盘的备用电源的性能状态,并按照上述的固态硬盘数据的掉电保护方法调整数据备份策略。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机设备,该计算机设备包括处理器及上述的固态硬盘,处理器耦接固态硬盘,固态硬盘用于配合处理器实现计算机设备的功能。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种具有存储功能的装置,该装置存储有程序,所述程序被执行时能够上述的固态硬盘数据的掉电保护方法。
本申请的有益效果是:区别于现有技术的情况,本申请能够检测备用电源的性能状况,根据备用电源的性能状态来实现对DDR数据下刷策略的动态调整,在保证固态硬盘最大性能和数据安全的基础上,尽量延长固态硬盘的正确使用的时间。
附图说明
图1是固态硬盘一实施方式中的数据示意图;
图2是本申请固态硬盘数据的掉电保护方法一实施方式的流程示意图;
图3是本申请固态硬盘数据的掉电保护方法一实施方式的流程示意图;
图4是本申请固态硬盘数据的掉电保护方法一实施方式中获取备用电源放电时长的流程示意图;
图5是本申请固态硬盘数据的掉电保护方法一实施方式的流程示意图;
图6是本申请固态硬盘一实施方式的结构示意图;
图7是本申请计算机设备一实施方式的结构示意图;
图8是本申请具有存储功能的装置第一实施例的结构示意图。
具体实施方式
为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。
本申请提供一种固态硬盘数据的掉电保护方法,请参阅图2,图2是本申请固态硬盘数据的掉电保护方法一实施方式的流程示意图。在该实施方式中,固态硬盘数据的掉电保护方法包括如下步骤:
S210:获取固态硬盘备用电源的性能状态及当前数据备份策略。
备用电源的性能状态即为备用电源的健康状态,包括备用电源是否损坏,备用电源是否老化,备用电源是否正常,备用电源的放电时长等,备用电源可以是固态硬盘上的电容贴片。数据备份策略中包含数据下刷阈值,即DDR中脏数据积攒到多少(即数据下刷阈值)时才进行数据下刷(即数据备份)操作。当前数据备份策略是当前正在使用的数据下刷策略。
S220:若当前数据备份策略与备用电源的性能状态不匹配,则调整当前数据备份策略至与备用电源的性能状态相匹配。
当前数据备份策略与备用电源的性能状态不匹配是指,备用电源的性能状态已经不能满足当前数据备份策略,即备用电源的放电时长内,已经不能完成所有数据的下刷保存。或者说,当前数据备份策略中数据下刷阈值过大,DDR中攒了太多脏数据,在备用电源放电时长内,不能把攒的脏数据都下刷完成。
通过该实施方式的实施,能够检测备用电源的性能状况,根据备用电源的性能状态来实现对DDR数据下刷策略的动态调整,在保证固态硬盘最大性能和数据安全的基础上,尽量延长固态硬盘的正确使用的时间。
在一实施方式中,可以通过检测闪存颗粒的擦除次数来判掉电容(即备用电源)的性能状态。闪存颗粒实质是存储单元,如目前有SLC、MLC和TLC三种不同的闪存类型,SLC是单层存储单元(Single-Level Cell,即1bit/cell),速度快寿命长,约10万次擦写寿命;MLC是多层存储单元(Multi-Level Cell,即2bit/cell),速度一般寿命一般,约3000~10000次擦写寿命;TLC是三层存储单元(Trinary-Level Cell,即3bit/cell),速度慢寿命短,约500次擦写寿命。闪存颗粒的擦除次数标识着固态硬盘的生命周期,如闪存颗粒的擦除次数已达到最大擦除次数的一半,则说明固态硬盘的生命周期也已经过半。随着固态硬盘的使用时间的延长,电容的性能状态也会下降,如放电时间会缩短,异常损坏的概率会变大等。因此,闪存颗粒的擦除次数一定程度上能够标识电容的性能状态。
具体地,建立擦除次数与数据备份策略的映射关系表,并将该映射关系表存储在固态硬盘的非易失性存储介质中。即设置与闪存颗粒的擦除次数相对应的多级数据备份策略,数据备份策略级别的编号随擦除次数的增多而递增,且数据备份策略中对应的脏数据的下刷阈值(即数据备份下刷阈值)按一定比例进行缩小。如固态硬盘的最大擦除次数是500次,以擦除次数分别为100/200/300/400/500对应建立五级数据备份策略,对应的数据备份下刷阈值分别是5X/4X/3X/2X/X。
请参阅图3,图3是本申请固态硬盘数据的掉电保护方法一实施方式的流程示意图。在该实施方式中,固态硬盘数据的掉电保护方法包括如下步骤:
在固态硬盘使用过程中掉电时,启动电容开始放电,监测电容放电过程中数据是否备份完成,若数据已备份完成,则将固态硬盘的非易失性存储介质中的备用电源的异常标识修改为正常标识;其中,备用电源的异常标识预先存储在非易失性存储介质中。
具体地,固态硬盘的非易失性存储介质(如Nand)中设置有电容性能状态标志位,且该标志位默认为0(即电容异常),若DDR中脏数据完整保存后,电容还在放电,则将Nand中的电容性能状态标志位置位(即将标志位修改为1,标识电容正常)。如果在电容放电结束前数据还未完整保存,则Nand中的电容性能状态标志位未能被及时修改(即标志位仍为0),标识电容异常。
在固态硬盘重新上电后,从非易失性存储介质中获取备用电源的性能状态标识,如果标志位被置位(即标识为正常标识),则表示电容放电时间充足,能够满足下刷保存所有数据,当前数据备份策略与电容的性能状态相匹配,不需要调整数据备份策略。并将标志位复位下刷(即将正常标识修改为异常标识),并获取当前数据备份策略编号确定数据备份策略。如果标志位为0(即标识为异常标识),则说明电容的性能状态不足以保证当前DDR下刷策略执行(即当前数据备份策略与电容的性能状态不匹配),则调整当前数据备份策略至与备用电源的性能状态相匹配。
在一实施方式中,获取固态硬盘的当前擦除次数,如可以从CheckInfo中获取当前闪存块的PEC数值,选择与当前擦除次数相对应的数据备份策略。如PEC计数已经达到最大极限值的一半,则说明固态硬盘的生命周期已过一半,可以尝试选择编号为3的数据备份策略,同时将数据备份策略编号保存在Nand中。
若当前数据备份策略为与当前擦除次数相对应的数据备份策略,或当前数据备份策略的级别大于与当前擦除次数相对应的数据备份策略的级别;则选择比当前数据备份策略更高一级的数据备份策略,其中,数据备份策略的级别越高,数据备份策略对应的数据备份下刷阈值越小。即虽然当前数据备份策略已经与预先设置的擦除次数相对应,但是可能是电容的损耗速度大于固态硬盘的老化速度,已经不能满足与之相对应的数据备份策略,可以选择更高一级的数据备份策略。待下次掉电时继续验证电容是否足以支撑,如果下次掉电时,还是没有能够置位电容正常标记位,则将数据备份策略编号再次加一,直至数据备份策略与电容的性能状态相匹配。
通过该实施方式的实施,根据闪存颗粒的擦除次数能够较简单的判掉电容的性能状态,通过预先设置不同级别的数据备份策略,能够简单快速的调整数据备份策略,但是数据备份策略与电容性能状态的匹配程度不够精细。
基于此,在另一实施方式中,可以通过检测电容的放电时长来判掉电容的性能状态。
请结合参阅图4和图5,图4是本申请固态硬盘数据的掉电保护方法一实施方式中获取备用电源放电时长的流程示意图,图5是本申请固态硬盘数据的掉电保护方法一实施方式的流程示意图。在该实施方式中,固态硬盘数据的掉电保护方法包括如下步骤:
在固态硬盘使用过程中掉电时,启动电容开始放电,并开始计时Tori,监测判断数据是否下刷完成,当数据下刷完成后(即接收数据已备份完成的指令),循环下刷(T当前-Tori)至非易失性介质中(即以预定时间间隔获取当前时间,计算电容的放电时长,并将放电时长存储至非易失性存储介质中),直到电容放电时间完成,获取电容放电时长。
如,开始计时Tori为0ms,20ms后数据下刷完成,以10ms为预定时间间隔获取当前时间,如数据下刷完成时,获取当前时间T当前为20ms,计算电容放电时长T1=T当前-Tori=20-0=20ms,将电容放电20ms保存在Nand中,10ms后判掉电容是否还在工作,若电容还在工作(即仍在放电),获取获取当前时间T当前为30ms,计算电容放电时长T1=T当前-Tori=30-0=30ms,将电容放电30ms保存在Nand中,覆盖上一次保存的20ms,如此循环,直至电容放电完成,最后保存在电容放电时长为电容最长放电时长。通过该实施方式的实施,不用时时获取放电时间,下刷电容放电时长,有利于提高电容性能。
在固态硬盘重新上电后,从非易失性存储介质中获取电容放电时长,判断当前数据备份策略下备份数据所需的时长与电容的放电时长的差值是否大于预设值;若差值大于预设值,则表示电容放电时间充足,能够满足下刷保存所有数据,当前数据备份策略与电容的性能状态相匹配,不需要调整数据备份策略。若差值小于或等于预设值,则电容的性能状态与当前数据备份策略不匹配,应调整当前数据备份策略至与电容的性能状态相匹配。即固态硬盘需要保证的是电容的放电时间T1必须要大于DDR中脏数据下刷所需要的时长T下刷。如果满足要求则不进行策略调整。否则,需要将T下刷缩减到T1时间以下。
在一实施方式中,以电容的放电时长为基准调整数据备份下刷阈值。数据备份下刷阈值的计算公式为X=((T下刷–T开销)/Tgrog)*Y并发数*PageSize。其中Tgrog为颗粒编程时间,T开销主要是指一些软件开销时间,为经验值,Y并发数为盘片中的最大可并发数,PageSize跟颗粒相关。对于同一块固态硬盘而言,Tgrog、Y并发数和PageSize都是固定值,T开销在预定范围内变化。取T下刷小于T1来计算数据备份下刷阈值,如取T下刷是T1的75%~90%,以保证电容放电时长内数据能够下刷完成。通过该实施方式的实施,能够直接获取电容放电时长,更精确的调整数据备份下刷阈值。
以上方案,本申请所提供的固态硬盘数据的掉电保护方法,可以检测固态硬盘掉电时数据保存情况,并适应性的调整数据备份策略,在固态硬盘性能和数据安全之间达到一个平衡。尽量避免一旦出现电容损坏,依然按照最开始的既定下刷策略,缓存大量脏数据,从而导致掉电时来不及下刷保存,造成数据丢失。实现了根据电容实际的健康状况进行数据备份策略的动态调节,在电容的生命末期或者意外损坏的情景下,通过动态调节下刷策略来延长固态硬盘的正常使用寿命。并且可以在一定程度上降低硬件成本,不需要为了确保数据的绝对安全而盲目的增加电容数量。相对现有的方案,该方法能够及时知道电容是否出现异常,在进行对应调整后可以避免因为按照既定方案而导致的脏数据来不及下刷的问题。
基于此,本申请还提供一种固态硬盘,请参阅图6,图6是本申请固态硬盘一实施方式的结构示意图。在该实施方式中,固态硬盘60包括控制器610和存储器620,控制器610耦接存储器620,存储器620用于存储程序,控制器610用于执行程序,获取固态硬盘60的备用电源的性能状态,并按照上述的固态硬盘数据的掉电保护方法调整数据备份策略,具体请参阅上述实施方式的描述,在此不再赘述。该固态硬盘可以是基于闪存的存储介质。该固态硬盘能够检测备用电源的性能状况,根据备用电源的性能状态来实现对DDR数据下刷策略的动态调整,在保证固态硬盘最大性能和数据安全的基础上,尽量延长固态硬盘的正确使用的时间。
本申请还提供一种计算机设备,请参阅图7,图7是本申请计算机设备一实施方式的结构示意图。在该实施方式中,计算机设备70包括处理器710及上述的固态硬盘720,处理器710耦接固态硬盘720,固态硬盘720用于配合处理器710实现计算机设备70的功能。计算机设备可以是台式电脑,笔记本电脑,服务器等。该计算机设备中的固态硬盘能够检测备用电源的性能状况,根据备用电源的性能状态来实现对DDR数据下刷策略的动态调整,在保证固态硬盘最大性能和数据安全的基础上,尽量延长固态硬盘的正确使用的时间。
本申请还提供一种具有存储功能的装置,请参阅图8,图8是本申请具有存储功能的装置第一实施例的结构示意图,该实施方式中,具有存储功能的装置80存储有程序810,程序810被执行时能够实现上述任一实施例的固态硬盘数据的掉电保护方法。
其中,该程序810可以以软件产品的形式存储在上述具有存储功能的装置80中,包括若干指令用以使得一个设备或处理器执行本申请各个实施方式方法的全部或部分步骤。
具有存储功能的装置80是计算机存储器中用于存储某种不连续物理量的媒体。而前述的具有存储功能的装置80包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序210代码的介质。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。