一种基于flash的数据安全存储方法
技术领域
1.本发明涉及一种基于flash的数据安全存储方法,属于数据存储技术领域。
背景技术:
2.flash存储器,是内存器件的一种,是一种非易失性内存,非易失性指的是当储存器断电后,所存储的数据不会消失的一种特性。基于这种特性,当搭载了flash存储器的设备在产生突然或者意外等非预料之内的断电情况发生时,依旧不会丢失断电前保存的数据。
3.目前的非易失性存储器如果不搭载管理方案,直接使用,那么发生存储器在擦除或者写入过程中断电的情况的话,会导致存储器还未写入新的数据,但是旧的数据已经擦除完或者擦除不完整的情况。此时存储器就发生了严重的数据损坏,存储器内的数据就变的不可靠,如果运用在实际产品上,就会发生一些不可预知的错误。
4.flash存储器有最小可擦除单位:扇区,每个扇区普遍的扇区大小为4096个字节、32768位,而每个位的寿命是独立的。擦除过程中,只有位数据从0变为1时才消耗寿命,意味着如果不改变某些位的数据,反复的擦除并不影响寿命。如果要储存并反复更新一个远小于一个扇区(4096个字节)的数据,就会导致一个扇区内某些位寿命先耗尽,从而导致整个扇区不可用。
5.没有坏区控制,意味着当某片扇区由于寿命问题不可用时,flash无法检测出坏区,还是按照正常流程存储数据,从而导致数据变的不可靠,有使用风险。
6.flash内部存储数据并没有校验功能,意味着存进去一个数据,可能由于不可控的意外情况发生,例如电子偏移,设备断电等,导致下次再读出来的数据并不一定是你之前存储的数据。flash本身无法判断存储的数据是否正确。
7.flash擦除只能擦除一个扇区,如果想存储某种小型数据,如“设备累积运行时间”,只占用4个字节,每分钟都要存储一次,但是每次存储都要擦除一个扇区(4k字节),非常浪费空间及寿命。
技术实现要素:
8.为了解决上述现有技术中存在的问题,本发明提出了一种基于flash的数据安全存储方法。
9.本发明的技术方案如下:
10.一方面,本发明提供了一种基于flash的数据安全存储方法,包括以下步骤:
11.将flash存储器分为多个存储区域用于存储数据,每个存储区域预设n个可占用扇区,每个存储区域首次使用时只占用一个预设的可占用扇区,随着储存数据的增加动态占用其它预设的可占用扇区;
12.当存储区域需要占用一个新的预设的可占用扇区写入数据时,在数据写入前,对当前新的预设的可占用扇区进行坏区检测,若检测通过,则将数据写入新的预设的可占用
扇区,若检测不通过,则判断当前新预设的可占用扇区为坏区,存储区域再占用另一个新预设的可占用扇区,执行上述坏区检测,直至检测通过,当数据成功存储至存储区域时,进行回读检验,若检验不通过则重新写入数据;
13.当存储区域内预设的可占用扇区被占用数量达到阈值时,每次需要占用新的预设的可占用扇区时,就对当前存储区域存储的数据进行数据检测,若未通过数据检测,则增加一个扇区到当前存储区域的可占用扇区中,若通过数据检测,则之后的数据写入新存储区域中,并判断是否将当前存储区域数据继承到新存储区域中。
14.作为本发明的优选实施方式,每个存储区域设有固定占据当前存储区域前x个字节的区域头信息;
15.所述区域头信息包括:存储区域占用扇区数、存储区域状态、存储区域标识以及存储区域扇区擦除次数。
16.作为本发明的优选实施方式,每次在存储区域内存储数据时,设置固定占据当前数据前y个字节的数据头信息;
17.所述数据头信息包括:数据类型、数据内容检验信息、数据长度、数据标识、数据写入时间、数据类型写入次数以及保存的数据条数。
18.作为本发明的优选实施方式,所述坏区检测具体步骤为:
19.在新的预设的可占用扇区写入数据前,首先会擦除整片新的预设的可占用扇区,擦除后检验当前扇区内所有位是否都为1,若所有位都为1则判断当前扇区擦除成功,正常写入数据,并在当前扇区地址头标识字节写入“有效”标识,若有不为1的位则判断当前扇区未擦除成功,进行重新擦除,若擦除z次仍未擦除成功,则将当前扇区视为坏区,并在当前扇区地址头标识字节写入“无效”标识。
20.作为本发明的优选实施方式,当所述存储区域处于写入数据状态时,对其区域头信息中的存储区域状态写入“使用中”状态,当数据写入完成时,对其区域头信息中的存储区域状态写入“使用完”状态,状态“使用完”须在状态“使用中”的基础上写入。
21.作为本发明的优选实施方式,所述数据检测具体步骤为:
22.对当前存储区域内存储的所有数据进行筛查,统计出所有有效数据并计算出总大小,若有效数据的大小超出当前存储区域大小的20%,则判断为未通过数据检测。
23.作为本发明的优选实施方式,所述数据继承判断的具体步骤为:
24.若当前存储区域剩余可占用扇区空间小于当前存储区域空间的两倍,则对当前存储区域的数据进行回读,读取所有有效数据并按顺序写入新存储区域中;
25.全部数据继承完成后,将新存储区域的区域头信息中的存储区域状态写入“使用中”,再擦除当前存储区域及其他未使用扇区。
26.另一方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任一实施例所述的方法。
27.再一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的方法。
28.本发明具有如下有益效果:
29.1、本发明对写入的每个数据进行检查,保证数据的准确性,并且写入的数据有带
校验信息,确保读出数据的准确性。
30.2、本发明动态调整每块储存区域的大小,确保数据不会出现大量新增导致数据丢失。
31.3、本发明自动继承数据,减少flash擦除次数,增加寿命。
32.4、本发明设置坏区检测,每次擦除完会进行检查擦除完的数据,如果有坏区,则进行标记,将坏区信息写进存储区域头信息,下次要再用到这块数据时就会跳过此扇区。
附图说明
33.图1为本发明方法流程图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
36.应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
37.术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
38.术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
39.实施例一:
40.参见图1,一种基于flash的数据安全存储方法,包括以下步骤:
41.将flash存储器分为多个存储区域用于存储数据,每个存储区域预设n个可占用扇区,每个存储区域首次使用时只占用一个预设的可占用扇区,随着储存数据的增加动态占用其它预设的可占用扇区;
42.当存储区域需要占用一个新的预设的可占用扇区写入数据时,在数据写入前,对当前新的预设的可占用扇区进行坏区检测,若检测通过,则将数据写入新的预设的可占用扇区,若检测不通过,则判断当前新预设的可占用扇区为坏区,存储区域再占用另一个新预设的可占用扇区,执行上述坏区检测,直至检测通过,当数据成功存储至存储区域时,进行回读检验,若检验不通过则重新写入数据;
43.当存储区域内预设的可占用扇区被占用数量达到阈值时,每次需要占用新的预设的可占用扇区时,就对当前存储区域存储的数据进行数据检测,若未通过数据检测,则增加一个扇区到当前存储区域的可占用扇区中,若通过数据检测,则之后的数据写入新存储区域中,并判断是否将当前存储区域数据继承到新存储区域中。
44.作为本实施例的优选实施方式,每个存储区域设有固定占据当前存储区域前x个
字节的区域头信息;
45.所述区域头信息包括:存储区域占用扇区数、存储区域状态、存储区域标识以及存储区域扇区擦除次数。
46.作为本实施例的优选实施方式,每次在存储区域内存储数据时,设置固定占据当前数据前y个字节的数据头信息;
47.所述数据头信息包括:数据类型、数据内容检验信息(包括但不限于对于数据内容的crc校验、累加校验、md5校验等)、数据长度、数据标识、数据写入时间、数据类型写入次数以及保存的数据条数。
48.作为本实施例的优选实施方式,所述坏区检测具体步骤为:
49.在新的预设的可占用扇区写入数据前,首先会擦除整片新的预设的可占用扇区,擦除后检验当前扇区内所有位是否都为1,若所有位都为1则判断当前扇区擦除成功,正常写入数据,并在当前扇区地址头标识字节写入“有效”标识,若有不为1的位则判断当前扇区未擦除成功,进行重新擦除,若擦除z次仍未擦除成功,则将当前扇区视为坏区,并在当前扇区地址头标识字节写入“无效”标识。
50.作为本实施例的优选实施方式,当所述存储区域处于写入数据状态时,对其区域头信息中的存储区域状态写入“使用中”状态,当数据写入完成时,对其区域头信息中的存储区域状态写入“使用完”状态,由于flash每位都是由数据“1”写成数据“0”,状态“使用完”须在状态“使用中”的基础上写入,如状态“使用中”为1,“使用完”为0,区域状态最低占据一位即可。
51.作为本实施例的优选实施方式,所述数据检测具体步骤为:
52.对当前存储区域内存储的所有数据进行筛查,统计出所有有效数据并计算出总大小,若有效数据的大小超出当前存储区域大小的20%,则判断为未通过数据检测。
53.作为本实施例的优选实施方式,所述数据继承判断的具体步骤为:
54.若当前存储区域剩余可占用扇区空间小于当前存储区域空间的两倍,则对当前存储区域的数据进行回读,读取所有有效数据并按顺序写入新存储区域中;
55.全部数据继承完成后,将新存储区域的区域头信息中的存储区域状态写入“使用中”,再擦除当前存储区域及其他未使用扇区。
56.实施例二:
57.本实施例提出一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任一实施例所述的方法。
58.实施例三:
59.本实施例提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的方法。
60.本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示单独存在a、同时存在a和b、单独存在b的情况。其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a和b,a
和c,b和c或a和b和c,其中a,b,c可以是单个,也可以是多个。
61.本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
62.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
63.在本技术所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory;以下简称:rom)、随机存取存储器(random access memory;以下简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
64.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。