实现数据可靠读写的方法以及系统、存储介质与流程

文档序号:16929143发布日期:2019-02-22 20:06阅读:197来源:国知局
实现数据可靠读写的方法以及系统、存储介质与流程

本发明涉及数据存储装置以及方法,属于数据存储的方法领域。



背景技术:

随着闪存的更新换代,闪存中存储的数据对温度的变化越来越敏感,譬如,高温下写入的数据,在低温下读取出错的机率会大幅度增加,反之也是。

然而,越来越多的闪存比如ssd固态硬盘或是存储阵列在工业场合被使用,而这些场合的环境温度的变化是十分宽泛的:从-40℃-+85℃,这这种大温差环境下工作环境下,闪存中写入的数据会随着外界环境温度的变化发生变化,即存储芯片中的0、1数码状态发生改变,当改变到一定程度后,会导致存储的数据、文件发生损坏或是丢失。

现有技术中尚没有较好的解决方案,业界通常的方法是建立备份,即在特定的恒温环境中建立服务器或是存储中心来备份保存关键的数据,显然该种方案并不适合所有的用户,特别是不适合个人消费用户以及中小企业使用。



技术实现要素:

本发明是为了解决上述宽温差条件下,现有技术不能较好的实现数据可靠读写的问题而进行的,目的在于提供一种实现数据可靠读写的方法以及系统,该方法应用在使用闪存的存储装置上解决了宽温差下数据可靠读写的问题。

本发明提供一种实现数据可靠性读写的方法,其特征在于,包括以下步骤:

在存储芯片写入数据时,记录写入完成时的写入温度t1;

时监测存储芯片所处的环境温度t2;

判断环境温度t2与写入温度t1之间的差值是否超过阈值t;

当差值超过阈值t时,对存储的数据进行检验并得到数据的误码率;

判断数据的误码率是否达到误码率阈值,如果达到误码率阈值则进行数据恢复。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,记录写入温度t1的过程包括:

其中,记录写入温度t1的过程包括:

将存储芯片划分为多个存储区域,所述存储区域包含多个存储单位;

当存储区域被写满时,记录该时刻对应的温度t1,并被作为元数据写入存储到存储芯片的特定区域,得到每个存储单位对应的写入温度t1。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,所述存储单位为存储块或存储页。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,步骤二中实时监测环境温度t2的采样频率为每1-30秒一次。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,对存储的数据进行检验的过程包括:

比较所有的存储单位对应的环境温度t2与写入温度t1之间的差值并根据数值大小进行排列,优先对差值数据大的存储单位进行数据扫描。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,对存储的数据进行检验的过程包括:

当没有数据写入时,对整个存储芯片的所有存储单位的数据进行扫描。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单元,同时记录下写入时的写入温度t1;

当数据误码率超过存储芯片自身的硬件ecc纠错能力,启动额外的数据恢复机制来恢复数据。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,设定存储芯片自身的硬件ecc纠错能力为70-85%的误码率。

本发明提供的实现数据可靠性读写的方法,还可以具有这样的特征,其中,所述额外的数据恢复机制包括raid数据恢复。

本发明还提供一种实现数据可靠性读写的系统,其特征在于,包括:

写入温度记录模块,用于在存储芯片写入数据时,记录写入温度t1;

环境温度检测模块,用于在写入完成后,实时监测存储芯片所处的环境温度t2;

判断模块,用于判断环境温度t2与写入温度t1之间的差值是否超过阈值t;

检验模块,用于在差值超过阈值t时,对存储的数据进行检验并得到数据的误码率;

数据恢复模块,判断数据的误码率是否达到误码率阈值,如果达到误码率阈值则进行数据恢复。

本发明还提供一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述的实现数据可靠性读写的方法。

本发明的作用和效果在于:根据本发明所涉及的实现数据可靠性读写的方法,因为在存储芯片写入数据时,记录写入温度t1;而在写入完成后,实时监测存储芯片所处的环境温度t2;在采集到环境温度后,判断环境温度t2与写入温度t1之间的差值是否超过阈值t,如果超过说明该环境下保存的数据可能会发生较大的改变,需要进行检验;当差值超过阈值t时,对存储的数据进行检验并得到数据的误码率;根据数据的误码率的不同情形,及时的采用不同的修复方式进行数据恢复,所以,本发明提供的方法运行在存储装置中能够及时的获取写入数据后的存储芯片所处的温度,并实时与写入时的温度进行比较,当写入温度和环境温度超过设定的阈值时,就说明写入后存储的数据可能发生了丢失,并进一步进行检验来获知具体的数据误码率,根据数据的误码率大小来选择不同的修复方式进行数据修复。

附图说明

图1是本发明的实施例中实现数据可靠读写的方法的步骤示意图;

图2为记录写入温度的过程示意图;以及

图3为本发明的实施例中的提供的实现数据可靠性读写的系统的模块框图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明实现数据可靠读写的方法、以及实现数据可靠读写的系统、存储介质作具体阐述。

实施例1

图1是本发明的实施例中实现数据可靠读写的方法的步骤示意图。

如图1所示,本实施例提供的实现数据可靠性读写的方法,包括以下步骤:

步骤s1,在存储芯片写入数据时,记录写入完成时的写入温度t1。

在本实施例中,所述存储芯片为nand闪存芯片,具体为slc、mlc、tlc或qlc闪存颗粒制作的nand闪存芯片。在理论上,也可以使其他类型的存储芯片,比如nor闪存、rom、prom、eprom、eeprom、flashrom、fram、mram、rram、pcram等,都是可以作为本发明的存储芯片的。

slc,single-levelcell,即1bit/cell,速度快寿命长,价格超贵(约mlc3倍以上的价格),约10万次擦写寿命。

mlc,multi-levelcell,即2bit/cell,速度一般寿命一般,价格一般,约3000---10000次擦写寿命。

tlc,trinary-levelcell,即3bit/cell,也有flash厂家叫8lc,速度相对慢寿命相对短,价格便宜,约500次擦写寿命。

qlc,quad-levelcell,即4bit/cell,支持16充电值,速度最慢寿命最短。

这三种结构的nand闪存芯片,简单地说slc的性能最优,价格超高。一般用作企业级或高端发烧友。mlc性能够用,价格适中为消费级ssd应用主流,tlc综合性能最低,价格最便宜。但可以通过高性能主控、主控算法来弥补、提高tlc闪存的性能。

图2为记录写入温度的过程示意图。

具体的,记录写入温度t1的过程包括:

步骤s1-1,将存储芯片划分为多个存储区域,所述区域包含多个存储单位。

其中,所述存储单位为存储块(block)或存储页(page),一般而言,一个基本的存储单位的容量为16k字节,这个具体的数据根据存储颗粒的生产厂家不同而有不同。

步骤s1-2,当存储区域被写满时,记录该时刻对应的温度t1,并被作为元数据写入存储到存储芯片的特定区域,得到每个存储单位对应的写入温度t1。特定区域是预留的专门用来存储这些数据的区域。

在写入数据时,都通过存储装置(包括控制芯片和存储芯片)所具有的控制芯片进行了ecc保护。

ecc是“errorcorrectingcode”的简写,中文名称是“错误检查和纠正”。ecc是一种能够实现“错误检查和纠正”的技术,ecc保护就是应用了这种技术对存储的数据进行保护的操作,一般在存储数据时,通过控制芯片将对应的ecc代码写入并存储到存储芯片中,这将使存储在存储芯片中的数据可以进行硬件恢复。ecc也可以解释为errorcorrectionorcorrectingcode、errorcheckingandcorrecting、errorcheckingandcorrecting,还可以解释为errorcorrectioncircuit,其是一种成熟应用在数据存储设备上的的数据保护和恢复机制。

步骤s2,写入完成后,实时监测存储芯片所处的环境温度t2。

因为数据的写入可能是连续的,也可能是断断续续的,而实际中写入过程和读出过程以及等待过程是相互交错的,所以这里的写入完成是对某个存储单位而言,也可以是针对某个人为划分的存储区域。

实时监测环境温度t2的采样频率为每1-30秒一次,这个频率是根据该存储芯片所处的工作环境以及读写的频率而定的,如果工作环境的温度变化比较大,并且存储芯片读写比较频繁,就意味着该种情况下,存储芯片的温度变化会比较剧烈,对应的环境温度的采样频率就会比较高。

步骤s3,判断环境温度t2与写入温度t1之间的差值是否超过阈值t,如果超过进入下一步s4。

具体的对于每一个存储单位而言,需要实时的计算实时的环境温度t2与自身的存储单位写入数据的写入温度t1的温度差值,并判断该差值是否查过设定的阈值t。

显然,根据背景技术中介绍的存储芯片中写入的数据对温度的敏感情况,写入温度和环境温度的差值如果达到某个值,也就是这个阈值t,那么数据丢失的风险就会很大,而这个阈值t显然和存储芯片的类型、生产的工艺以及生产厂家都会有关系。

对于使用环境而言,也会影响到这个阈值t的设定值。显然,由于数据的重要程度差异,对于特别重要的宝贵数据,我们设定的差值的阈值t就比较小,这样微小的温度变动都能触发后续步骤s4的检验操作,从而能更好的保护这些宝贵数据的完整性。

另一方面,由于存储芯片类型,比如slc类型的nand闪存颗粒就比mlc类型的nand闪存颗粒稳定,可靠,其对温度变动就具有更强的抵抗能力,即使温度变化,其数据的稳定性也比mlc,tlc高一些,这样使用slc类型闪存颗粒的存储芯片的差值的阈值t就可以在相同的情况下设定的更大一些。

同样的道理,不同的生产的工艺以及生产厂家也会导致存储芯片的温度差值的阈值t不同。申请人建议使用的阈值范围是20-80℃。

步骤s4,当差值超过阈值t时,对存储的数据进行检验并得到数据的误码率。

对存储的数据进行检验的过程有两种操作模式:

模式一包括以下操作:

比较所有的存储单位对应的环境温度t2与写入温度t1之间的差值并根据数值大小进行排列,优先对差值数据大的存储单位进行数据扫描读取,扫描读取后得出某个存储单位所存储数据的误码率。

显然这中操作是适合于存储芯片比较忙,即正在进行数据的读或者写操作的时候,由于这种情况下,无法进行全盘扫描读取。此种状况下,本实施例依照差值大小进行排序,优先处理差值大的存储单位来进行检验,这样相当于在战场中对伤患进行分级,优先处理救治重伤员,本实施例如此操作可以在存储芯片繁忙时,达到最优的数据检验和恢复效果。

模式二包括以下操作:

当没有数据写入时,对整个存储芯片的所有存储单位的数据进行扫描。

显然,当整个存储芯片没有进行读写操作时,就可以直接开启全盘扫描读写来得到每个存储单位的数据的误码率了。

步骤s5,判断数据的误码率是否达到误码率阈值,如果达到误码率阈值则进行数据恢复。

根据某个存储单位所存储的数据的误码率与阈值、存储芯片的硬件ecc纠错能力所能达到的误码率的大小关系进行对应的处理:

硬件ecc保护机制在数据纠错过程中可以汇报每单元数据(一般是512byte-4kb之间)所能纠正的数据的比特(bit)数量,再根据硬件ecc的纠错能力,设置一个相对的百分比阈值,即误码率的最高值,作为存储芯片的硬件ecc纠错能力所能达到的误码率,这个误码率称为硬件ecc的纠错能力。本实施例会根据存储设备的生命周期,闪存特性,将硬件ecc的纠错能力设定在误码率在70-85%内。

当数据误码率未达到阈值时,说明数据是可靠的,并没有发生丢失情况,无需进行处理。这个阈值成为数据可靠阈值,一般是由存储装置的控制芯片来决定,数值从10-5到10-9不等。

当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单位中,同时再次记录下写入时的写入温度t1。

当数据误码率超过存储芯片自身的硬件ecc纠错能力时,启动额外的数据恢复机制来恢复数据。其中,所述额外的数据恢复机制包括raid数据恢复、re-try,soft-retry数据恢复等。

raid的全称是redundantarrayofinexpensivedisk,中文翻译为廉价冗余磁盘阵列的简称简称raid技术。它是1988年由美国加州大学berkeley分校的davidpatterson教授等人提出来的磁盘冗余技术。从那时起,磁盘阵列技术发展得很快,并逐步走向成熟。

目前人们逐渐认识了磁盘阵列技术。磁盘阵列技术可以详细地划分为若干个级别0-5raid技术,并且又发展了所谓的raidlevel10,30,50的新的级别。用raid的好处简单的说就是:安全性高,速度快,数据容量超大。某些级别的raid技术可以把速度提高到单个硬盘驱动器的400%。磁盘阵列把多个硬盘驱动器连接在一起协同工作,大大提高了速度,同时把硬盘系统的可靠性提高到接近无错的境界。这些“容错”系统速度极快,同时可靠性极高。

raid恢复方法是使用多个die(磁盘片或是存储单位)奇偶校验,可以挽救整个die(磁盘片或是存储单位)的报废或是数据丢失,从而对数据进行恢复。

re-try,即readretry,mlc或tlc、slc的几个数据点电压分布有可能会平移,只要几个分布没有叠加就可以恢复。readretry尝试用不同的参考电压来读取数据,直到读出来。

soft-retry,即用软信息读。从不同的参考电压读到几组数据后综合得到最终数据。这个需要更强大的ecc纠错能力,如ldpc(lowdensityparitycheckcode的英文缩写,中文意思是低密度奇偶校验码,最早在20世纪60年代由gallager在他的博士论文中提出。)

如数据无法通过任何机制恢复,将对应的数据标注为损坏,如读到此存储单位的数据,将返回错误状态,显示该区域数据不可读。

实施例2

图3为本发明的实施例中的提供的实现数据可靠性读写的系统的模块框图。

本实施例提供一种实现数据可靠性读写的系统包括写入温度记录模块101、环境温度检测模块102、判断模块103、检验模块104、数据恢复模块105。

写入温度记录模块101,用于在存储芯片写入数据时,记录写入完成时的写入温度t1。

环境温度检测模块102,用于实时监测存储芯片所处的环境温度t2。

判断模块103,用于判断环境温度t2与写入温度t1之间的差值是否超过阈值t。

检验模块104,用于在差值超过阈值t时,对存储的数据进行检验并得到数据的误码率。

数据恢复模块105,判断数据的误码率是否达到误码率阈值,如果达到误码率阈值则进行数据恢复。

具体的,作为一种优化:

优选的,记录写入温度t1的过程包括:

将存储芯片划分为多个存储区域,所述存储区域包含多个存储单位;

当存储区域被写满时,记录该时刻对应的温度t1,并被作为元数据写入存储到存储芯片的特定区域,得到每个存储单位对应的写入温度t1。

优选的,对存储的数据进行检验的过程包括:

比较所有的存储单位对应的环境温度t2与写入温度t1之间的差值并根据数值大小进行排列,优先对差值数据大的存储单位进行数据扫描;或者

对存储的数据进行检验的过程包括:

当没有数据写入时,对整个存储芯片的所有存储单位的数据进行扫描。

优选的,当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单位中,同时记录下写入时的写入温度t1。

优选的,当数据误码率超过存储芯片自身的硬件ecc纠错能力,启动额外的数据恢复机制来恢复数据。

优选的,设定存储芯片自身的硬件ecc纠错能力为70-85%的误码率。

优选的,所述额外的数据恢复机制包括raid数据恢复。

实施例3

本实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下的实现数据可靠性读写的方法:

步骤s1,在存储芯片写入数据时,记录写入完成时的写入温度t1。

具体的,步骤s1还包括:

步骤s1-1,将存储芯片划分为多个存储区域,所述区域包含多个存储单位。

步骤s1-2,当存储区域被写满时,记录该时刻对应的温度t1,并被作为元数据写入存储到存储芯片的特定区域,得到每个存储单位对应的写入温度t1。

步骤s2,写入完成后,实时监测存储芯片所处的环境温度t2。

步骤s3,判断环境温度t2与写入温度t1之间的差值是否超过阈值t,如果超过进入下一步s4。

步骤s4,当差值超过阈值t时,对存储的数据进行检验并得到数据的误码率。

步骤s5,判断数据的误码率是否达到误码率阈值,如果达到误码率阈值则进行数据恢复。

显然该存储介质可以是光盘、优盘或者磁盘、软盘、光盘、dvd、硬盘、闪存、cf卡、sd卡、mmc卡、sm卡、记忆棒(memorystick)、xd卡、磁带、磁光盘等,将对应上述方法的计算机程序存储或是刻录在该存储介质上,用户获得该存储介质后进行安装或运行即可以在对应的存储装置上执行本发明的实施例1的方法。

本实施例的作用与效果在于:根据本实施例所涉及的实现数据可靠性读写的方法,因为在存储芯片写入数据时,记录写入温度t1;而在写入完成后,实时监测存储芯片所处的环境温度t2;在采集到环境温度后,判断环境温度t2与写入温度t1之间的差值是否超过阈值t,如果超过说明该环境下保存的数据可能会发生较大的改变,需要进行检验;当差值超过阈值t时,对存储的数据进行检验并得到数据的误码率;根据数据的误码率的不同情形,及时的采用不同的修复方式进行数据恢复,所以,本发明提供的方法运行在存储装置中能够及时的获取写入数据后的存储芯片所处的温度,并实时与写入时的温度进行比较,当写入温度和环境温度超过设定的阈值时,就说明写入后存储的数据可能发生了丢失,并进一步进行检验来获知具体的数据误码率,根据数据的误码率大小来选择不同的修复方式进行数据修复。

进一步,因为记录写入温度t1的过程是先将存储芯片划分为多个存储区域,所述区域包含多个存储单位;然后随着数据被写入到存储单位中,当存储单位被写满时,就记录该时刻对应的温度t1,并被作为元数据写入存储,得到每个存储单位对应的写入温度t1,所以每个最基本的存储单位都会对应有一个写入温度并作为元数据,如此就可以对每个基本的存储单位进行监控检验并在出现数据丢失时进行恢复。

更进一步,对存储的数据进行检验的过程有两种操作模式:

模式一包括以下操作:

比较所有的存储单位对应的环境温度t2与写入温度t1之间的差值并根据数值大小进行排列,优先对差值数据大的存储单位进行数据扫描读取,扫描读取后得出某个存储单位所存储数据的误码率。

显然这种操作是适合于存储芯片比较忙,即正在进行数据的读或者写操作的时候,由于这种情况下,无法进行全盘扫描读取。此种状况下,本实施例依照差值大小进行排序,优先处理差值大的存储单位来进行检验,这样相当于在战场中对伤患进行分级,优先处理救治重伤员,本实施例如此操作可以在存储芯片繁忙时,达到最优的数据检验和恢复效果。

更进一步,本实施例对于不同的数据的误码率的不同,根据某个存储单位所存储的数据的误码率与阈值、存储芯片的硬件ecc纠错能力所能达到的误码率的大小关系进行对应的处理:

当数据误码率未达到阈值时,说明数据是可靠的,并没有发生丢失情况,无需进行处理;

当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单位中,同时再次记录下写入时的写入温度t1;

当数据误码率超过存储芯片自身的硬件ecc纠错能力时,启动额外的数据恢复机制来恢复数据。其中,所述额外的数据恢复机制包括raid数据恢复、re-try,soft-retry数据恢复等;

如数据无法通过任何机制恢复,将对应的数据标注为损坏,如读到此存储单位的数据,将返回错误状态,显示该区域数据不可读。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。

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