一种固态硬盘数据存储方法、装置
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种固态硬盘数据存储方法、装置。
背景技术
固态硬盘因其高速读写性能、低故障率,正在逐步取代机械硬盘,成为主流存储设备。固态硬盘主要通过错误检查和纠正(Error Correcting Code, ECC)模块纠正存储数据的错误,随着固态硬盘使用时间的增长,存储数据的错误率逐渐升高,当出现错误的比特位数超过ECC纠错能力时,将出现不可纠正错误,则固态硬盘不能再继续使用。
为了避免少数块被频繁的擦写,快速提升误码率,影响到固态硬盘整体寿命,闪存转换层(Flash Translation Layer, FTL)技术被提出,FTL能够均衡各个块的擦写次数,延长数据的有效保存时间。然而,对于固态硬盘较少擦写的冷块数据,目前的FTL算法并不能很好的处理,如果FTL算法完全不回收冷块,那么相比于被频繁擦写的热块,热块与冷块之间的磨损程度不均衡,会降低固态硬盘使用寿命;如果FTL算法将热块与冷块视为同等的块进行回收,又会频繁产生冷热块之间的数据搬运,降低了固态硬盘I/O性能的同时,也会额外增添硬盘的损耗。
发明内容
为此,本发明提供一种固态硬盘数据存储方法、装置,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明实施例的一个方面,提供了一种固态硬盘数据存储方法,方法包括:
根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系;
建立第一信息区域和第二信息区域,所述第一信息区域记录空闲块的擦写次数,以及计算出的经过预设保存时间后的误码率,所述第二信息区域记录数据块的擦写次数和已保存时间,以及计算出的经过预设保存时间后的误码率;
从所述第一信息区域确定出经过预设保存时间后的误码率最高的特定空闲块,从所述第二信息区域确定出经过预设保存时间后的误码率最高的特定数据块;
当确定所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等时,将所述特定数据块的数据迁移至所述特定空闲块。
较佳地,根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系,包括:
根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的函数关系;
将所述函数关系简化为指定擦写次数下,保存时间与误码率之间的分段线性关系。
较佳地,根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系,包括:
通过测试方式,统计指定擦写次数下,采用同一型号闪存单元的固态硬盘的块的指定保存时间与误码率之间的关系。
较佳地,将所述特定数据块的数据迁移至所述特定空闲块,包括:
在固态硬盘未进行操作***指示的数据读、写操作期间,将所述特定数据块的数据读取至动态随机存取存储器DRAM,以及将所述DRAM的数据写入所述特定空闲块;
当确定所述DRAM的数据已写入所述特定空闲块时,擦除所述特定数据块的数据;
更新所述第一信息区域和第二信息区域的记录。
较佳地,还包括:
当接收到操作***指示的数据读、写指令时,执行所述操作***指示的数据读、写指令,读、写的数据可覆盖所述DRAM中的所述特定数据块的数据。
较佳地,所述固态硬盘的块的误码率增加速度随着保存时间增长而下降。
根据本发明实施例的另一个方面,提供了一种固态硬盘控制器装置,包括:
关系确定单元,用于根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系;
信息维护单元,用于建立第一信息区域和第二信息区域,所述第一信息区域记录空闲块的擦写次数,以及计算出的经过预设保存时间后的误码率,所述第二信息区域记录数据块的擦写次数和已保存时间,以及计算出的经过预设保存时间后的误码率;
块选取单元,用于从所述第一信息区域确定出经过预设保存时间后的误码率最高的特定空闲块,从所述第二信息区域确定出经过预设保存时间后的误码率最高的特定数据块;
迁移单元,用于当确定所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等时,将所述特定数据块的数据迁移至所述特定空闲块。
较佳地,所述关系确定单元具体用于:
根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的函数关系;
将所述函数关系简化为指定擦写次数下,保存时间与误码率之间的分段线性关系。
较佳地,所述关系确定单元具体用于:
通过测试方式,统计指定擦写次数下,采用同一型号闪存单元的固态硬盘的块的指定保存时间与误码率之间的关系。
较佳地,所述迁移单元具体用于:
在固态硬盘未进行操作***指示的数据读、写操作期间,将所述特定数据块的数据读取至动态随机存取存储器DRAM,以及将所述DRAM的数据写入所述特定空闲块;
当确定所述DRAM的数据已写入所述特定空闲块时,擦除所述特定数据块的数据;
更新所述第一信息区域和第二信息区域的记录。
较佳地,还包括:
读写管理单元,用于当接收到操作***指示的数据读、写指令时,执行所述操作***指示的数据读、写指令,读、写的数据可覆盖所述DRAM中的所述特定数据块的数据。
本发明通过预估块的误码率,选取经过预设保存时间后误码率相等的空闲块和数据块,将数据块的数据迁移至空闲块,既避免完全不回收数据块,导致热块与冷块之间的磨损程度不均衡,降低固态硬盘使用寿命,也避免将所有数据块视为同等的块进行回收,频繁产生冷热块之间的数据搬运,降低了固态硬盘I/O性能的同时,额外增添硬盘的损耗,因此,是实现了折衷的冷块处理策略。一方面,提升了较少擦写的冷块的利用效率,改善冷块与热块擦写次数失衡的情况,另一方面,以误码率作为数据迁移指征,始终将误码率维持在存储***的最低水平;又一方面,实现在预设保存时间内,迁移后的数据误码率是低于迁移前的数据误码率的,并且这个时间是能够计算出来并且可调控的,从而可控地保持着硬盘整体的存储安全性能。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明的一种固态硬盘数据存储方法的流程示意图;
图2、3示出了根据本发明的一种固态硬盘的块的误码率与保存时间关系的示意图;
图4示出了根据本发明具体实施例的示意图;
图5示出了根据本发明的一种固态硬盘控制器装置的结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
如图1所示,根据本发明的实施例的一种固态硬盘数据存储方法,包括:
S110、根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系;
S120、建立第一信息区域和第二信息区域,所述第一信息区域记录空闲块的擦写次数,以及计算出的经过预设保存时间后的误码率,所述第二信息区域记录数据块的擦写次数和已保存时间,以及计算出的经过预设保存时间后的误码率;
S130、从所述第一信息区域确定出经过预设保存时间后的误码率最高的特定空闲块,从所述第二信息区域确定出经过预设保存时间后的误码率最高的特定数据块;
S140、当确定所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等时,将所述特定数据块的数据迁移至所述特定空闲块。
首先,执行步骤S110,根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系。尽管硬盘的误码率受到多种因素影响,例如读干扰、编程干扰、擦除错误、保持错误等,但对于长期存储的冷数据而言,决定其误码率的主要是两个因素:一、擦写次数,反复的擦写会不断降低闪存的隧穿氧化物的绝缘性能,进而降低闪存的电荷保持能力;二、保存时间,同一数据随着保存时间的不断增加,不断有电荷发生隧穿效应,电荷的变化累积起来,造成误码率的逐渐升高。仅仅考虑以上两个因素与误码率的关系,能够简化误码率的计算模型,降低固态硬盘控制器的计算开销。
通常来说,固态硬盘的闪存生厂厂家拥有闪存的误码率相关参数,根据闪存的误码率相关参数,可计算出硬盘的块的擦写次数、保存时间与误码率之间的关系。又或者,可直接同一型号的固态硬盘进行测试,来获取硬盘的块的擦写次数、保存时间与误码率之间的关系。
本发明提供两种测试方案,方案一、根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的函数关系;将所述函数关系简化为指定擦写次数下,保存时间与误码率之间的分段线性关系。方案二、通过测试方式,统计指定擦写次数下,采用同一型号闪存单元的固态硬盘的块的指定保存时间与误码率之间的关系。
方案一中,先通过大量测试,确定硬盘的块的擦写次数、保存时间与误码率的实验数据,再通过数据拟合,确定三者之间的函数关系,以上函数关系,计算起来比较复杂,需要进行简化。具体地,将函数关系简化为指定擦写次数下,保存时间与误码率之间的分段线性关系。如图2所示,指定擦写次数下,保存时间与误码率之间的函数关系为一段曲线,如图3所示,指定擦写次数下,保存时间与误码率之间的关系为分段线性关系。显然,从图2和图3可以看出,保存时间与误码率之间的函数关系在转化为分段线性关系时,对数据计算准确度造成的影响有限,但能够大幅减小计算开销,即根据测试结果发现,分段线性处理的结果准确率是可以满足实际使用要求的。本发明可以处理为2段线性关系、3段线性关系、4段线性关系......分段越多,准确率越高。
方案二采用了更为简单的测试方法,即统计指定擦写次数下,采用同一型号闪存单元的固态硬盘的块的指定保存时间与误码率之间的关系。例如,统计100次、200次、300次......擦写次数下100小时、200小时、300小时......保存时间下的误码率,多次测试取平均值或者中间值,形成一张查找表。在实际应用过程中,根据块的擦写次数、保存时间,在表中查找接近的参数,即可得到对应的误码率。
在步骤S120中,建立第一信息区域和第二信息区域,所述第一信息区域记录空闲块的擦写次数,以及计算出的经过预设保存时间后的误码率,所述第二信息区域记录数据块的擦写次数和已保存时间,以及计算出的经过预设保存时间后的误码率。第一信息区域和第二信息区域的数据结构可以是列表、链表、或者树结构,第一信息区域和第二信息区域位于固态硬盘特定的存储区域,该存储区域为专用存储区域。
随后,在步骤S130中,从所述第一信息区域确定出经过预设保存时间后的误码率最高的特定空闲块,从所述第二信息区域确定出经过预设保存时间后的误码率最高的特定数据块。
随后,在步骤S140中,当确定所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等时,将所述特定数据块的数据迁移至所述特定空闲块。
步骤S140中,比较的是空闲块和数据块经过预设保存时间后的误码率。如图2和图3所示,对于同一擦写次数的数据块,误码率是随着时间从初始值逐渐升高的。尽管擦写次数多的块的误码率上升速度要快于擦写次数少的块,但是通过计算可以实现在人为设定的时间段内,迁移后的数据误码率是低于迁移前的数据误码率的。比如,经过计算,在三个月内,迁移后的数据误码率是低于迁移前的数据误码率的,那么,在三个月时间内,只需要进行一次数据迁移,而且在这期间,数据安全性得到了提升。
需要注意的是,在测试过程中,发现固态硬盘的块随着保存时间增长误码率增加的速度是下降的,该特征是本发明方案实现的前提,使得预设保存时间后,擦写次数较多的空闲块的误码率和擦写次数较少的数据块的误码率相等成为可能。
此外,如果数据块擦写不频繁,冷块和热块之间的擦写次数并未形成较大差距,那么理论上数据没有必要进行迁移,实际上此时也不会满足所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等的条件,进而不会触发数据迁移过程。如果数据块擦写频繁,保存性能恶化较快,那么,保存性能恶化较快的块将首先满足所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等的条件,进而触发数据迁移过程。
图4对数据迁移过程进行了进一步的说明。在当前时刻,经过计算,500小时后,1000次擦写的数据块与2000次擦写的空闲块误码率相等,此时进行数据迁移,可以保证500小时内硬盘安全性能得到提升,至少500小时后才有继续触发下一次数据迁移的可能。整个硬盘安全性能的可靠性处于受控状态,并且始终保持在最低水平的误码率。
在背景技术中提到,频繁数据迁移会降低硬盘的I/O性能,本发明提供的方案能够将数据迁移的次数降低到很低的水平,从而避免影响到硬盘的I/O性能。为了进一步地降低对硬盘I/O性能的影响,在一种实施例中,步骤S140的将所述特定数据块的数据迁移至所述特定空闲块,包括:在固态硬盘未进行操作***指示的数据读、写操作期间,将所述特定数据块的数据读取至动态随机存取存储器DRAM,以及将所述DRAM的数据写入所述特定空闲块;当确定所述DRAM的数据已写入所述特定空闲块时,擦除所述特定数据块的数据;更新所述第一信息区域和第二信息区域的记录。即固态硬盘仅在空闲时段进行数据迁移操作。
进一步地,还包括:当接收到操作***指示的数据读、写指令时,执行所述操作***指示的数据读、写指令,读、写的数据可覆盖所述DRAM中的所述特定数据块的数据。由于之前已经提到,当确定所述DRAM的数据已写入所述特定空闲块时,擦除所述特定数据块的数据,所以操作***的读、写数据覆盖掉DRAM中的特定数据块的数据,并不会导致特定数据块的数据丢失。该方法能够节省出相应的DRAM空间,进一步降低对固态硬盘I/O性能的影响。
也就是说,相比于现有技术中频繁将冷块迁移至热块的技术方案,本发明提供的数据存储方法不仅通过较少的数据迁移次数降低了数据迁移对I/O性能的影响,还利用空闲时间段迁移数据和操作***读、写数据可覆盖DRAM的两种方式进一步降低对I/O性能的影响,用户在使用过程中,基本不会感知到数据迁移过程中会带来固态硬盘I/O下降等不良体验。
如图5所示,本发明还提供了一种固态硬盘控制器装置,包括:
关系确定单元510,用于根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的关系;
信息维护单元520,用于建立第一信息区域和第二信息区域,所述第一信息区域记录空闲块的擦写次数,以及计算出的经过预设保存时间后的误码率,所述第二信息区域记录数据块的擦写次数和已保存时间,以及计算出的经过预设保存时间后的误码率;
块选取单元530,用于从所述第一信息区域确定出经过预设保存时间后的误码率最高的特定空闲块,从所述第二信息区域确定出经过预设保存时间后的误码率最高的特定数据块;
迁移单元540,用于当确定所述特定空闲块的误码率和所述特定数据块的经过预设保存时间后的误码率相等时,将所述特定数据块的数据迁移至所述特定空闲块。
可选地,所述关系确定单元510具体用于:
根据预先测试结果,确定硬盘的块的擦写次数、保存时间与误码率之间的函数关系;
将所述函数关系简化为指定擦写次数下,保存时间与误码率之间的分段线性关系。
可选地,所述关系确定单元510具体用于:
通过测试方式,统计指定擦写次数下,采用同一型号闪存单元的固态硬盘的块的指定保存时间与误码率之间的关系。
可选地,所述迁移单元540具体用于:
在固态硬盘未进行操作***指示的数据读、写操作期间,将所述特定数据块的数据读取至动态随机存取存储器DRAM,以及将所述DRAM的数据写入所述特定空闲块;
当确定所述DRAM的数据已写入所述特定空闲块时,擦除所述特定数据块的数据;
更新所述第一信息区域和第二信息区域的记录。
可选地,还包括:
读写管理单元,用于当接收到操作***指示的数据读、写指令时,执行所述操作***指示的数据读、写指令,读、写的数据可覆盖所述DRAM中的所述特定数据块的数据。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。