CN114265562B - 一种基于flash存储器的文件存储方法和系统 - Google Patents

一种基于flash存储器的文件存储方法和系统 Download PDF

Info

Publication number
CN114265562B
CN114265562B CN202111612765.7A CN202111612765A CN114265562B CN 114265562 B CN114265562 B CN 114265562B CN 202111612765 A CN202111612765 A CN 202111612765A CN 114265562 B CN114265562 B CN 114265562B
Authority
CN
China
Prior art keywords
file
stored
storage
data
storage area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111612765.7A
Other languages
English (en)
Other versions
CN114265562A (zh
Inventor
王帅
温嘉骏
王金梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Guotengchuangxing Technology Co ltd
Beijing Guoteng Innovation Technology Co ltd
Original Assignee
Nanjing Guotengchuangxing Technology Co ltd
Beijing Guoteng Innovation Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Guotengchuangxing Technology Co ltd, Beijing Guoteng Innovation Technology Co ltd filed Critical Nanjing Guotengchuangxing Technology Co ltd
Priority to CN202111612765.7A priority Critical patent/CN114265562B/zh
Publication of CN114265562A publication Critical patent/CN114265562A/zh
Application granted granted Critical
Publication of CN114265562B publication Critical patent/CN114265562B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及计算机技术领域,尤其涉及一种基于flash存储器的文件存储方法和系统,方法包括:判断待存储文件的大小是否超过预设阈值,当第一判断结果为是时,利用多个存储块存储对待存储文件进行存储,当删除待存储文件时,删除待存储文件对应的存储块;当第一判断结果为否时,利用碎片文件存储区对待存储文件进行存储,当删除待存储文件时,将待存储文件对应的原存储数据标记为脏数据。当删除待存储文件时,直接删除待存储文件对应的存储块,或者,将待存储文件对应的原存储数据标记为脏数据,不予删除,可以有效降低对flash存储器的擦除频率,在不占用太多资源的情况下实现均衡磨损,提高flash存储器的使用寿命。

Description

一种基于flash存储器的文件存储方法和系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于flash存储器的文件存储方法和系统。
背景技术
目前,常用的嵌入式设备一般采用flash存储器作为存储介质,FLASH存储器又称为闪存,它结合ROM(只读存储器,Read-Only Memory)和RAM(随机存取存储器,RandomAccess Memory)的优点,具有电子可擦除、可编程的性能,能够快速读取数据,还可以进行数据持久化,但使用寿命受到擦除次数限制,超过其擦写次数,flash存储器就会损坏,具体原因如下:
对flash存储器进行普通写操作时,即便需要写一个字节,也需要将整个flash页读入RAM,在RAM中将数据更改,最后再将整页回写。可以看出,如果经常更改某个特定页的小数据,会极大浪费资源,擦写达到一定数量时,此页将会坏掉,会造成数据丢失,也会使整个flash存储器寿命变低。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供了一种基于flash存储器的文件存储方法和系统。
本发明的一种基于flash存储器的文件存储方法的技术方案如下:
将flash存储器的每个逻辑页和每个实际物理页一一对应,形成映射关系;
将所述flash存储器的存储区域进行划分,得到大文件存储区和碎片文件存储区;
将所述大文件存储区的每个实际物理页划分为多个存储块,对每个存储块进行编号,得到编号数据;
判断待存储文件的大小是否超过预设阈值,得到第一判断结果;
当所述第一判断结果为是时,利用多个存储块存储对所述待存储文件进行存储,当删除所述待存储文件时,删除所述待存储文件对应的存储块;
当所述第一判断结果为否时,利用碎片文件存储区对所述待存储文件进行存储,当删除所述待存储文件时,将所述待存储文件对应的原存储数据标记为脏数据。
本发明的一种基于flash存储器的文件存储方法的有益效果如下:
当删除待存储文件时,直接删除待存储文件对应的存储块,或者,将待存储文件对应的原存储数据标记为脏数据,不予删除,可以有效降低对flash存储器的擦除频率,在不占用太多资源的情况下实现均衡磨损,提高flash存储器的使用寿命。
在上述方案的基础上,本发明的一种基于flash存储器的文件存储方法还可以做如下改进。
进一步,所述当所述第一判断结果为否时,利用碎片文件存储区对所述待存储文件进行存储,包括:
当所述第一判断结果为否时,利用FLASH存储器的最小存储单位的倍数对所述待存储文件进行数据补齐,将数据补齐后的待存储文件存储至所述碎片文件存储区的第一存储区域。
进一步,还包括:
当将所述待存储文件存储至所述碎片文件存储区的第一存储区域时,生成用于指向在所述碎片文件存储区的下一个存储区域的指针;
当有新待存储文件存储至所述碎片文件存储区时,根据所述指针,将所述新待存储文件存储至所述下一个存储区域。
进一步,所述利用多个存储块存储对所述待存储文件进行存储之后,还包括:
当修改所述待存储文件的部分数据时,根据所述映射关系、编号数据确定所述部分数据对应的存储块,并对所述部分数据对应的存储块中的存储内容进行修改。
采用上述进一步方案的有益效果是:现有技术中,flash存储器实现擦除操作的过程为:将需要更改的数据所占的空间进行擦除,一般都是按页擦除,尽管需要更改的数据小于一页,也要擦除整页数据,不可避免的要将未更改的区域进行重写,如果不擦除,将无法保存需要的数据,此时会读出脏数据,将更改后的数据写入到已经擦除的空间,并将其他擦除的信息补全,且效率低,而本申请中,只对部分数据对应的存储块中的存储内容进行修改,效率高,且避免读出脏数据,还能够进一步降低对flash存储器的擦除频率,进一步提高flash存储器的使用寿命。
进一步,还包括:
将所述flash存储器的存储区域进行划分时,还得到掉电保护管理区,所述掉电保护管理区用于存储掉电保护记录表;
当发生掉电时,根据所述掉电保护记录表进行恢复。
采用上述进一步方案的有益效果是:通过提供掉电保护策略方法,保证业务的完整性和一致性。
本发明的一种基于flash存储器的文件存储系统的技术方案如下:
包括对应模块、划分模块、划分编号模块、判断模块、第一存储模块和第二存储模块;
所述对应模块用于:将flash存储器的每个逻辑页和每个实际物理页一一对应,形成映射关系;
所述划分模块用于:将所述flash存储器的存储区域进行划分,得到大文件存储区和碎片文件存储区;
所述划分编号模块用于:将所述大文件存储区的每个实际物理页划分为多个存储块,对每个存储块进行编号,得到编号数据;
所述判断模块用于:判断待存储文件的大小是否超过预设阈值,得到第一判断结果;
所述第一存储模块用于:当所述第一判断结果为是时,利用多个存储块存储对所述待存储文件进行存储,当删除所述待存储文件时,删除所述待存储文件对应的存储块;
所述第二存储模块用于:当所述第一判断结果为否时,利用碎片文件存储区对所述待存储文件进行存储,当删除所述待存储文件时,将所述待存储文件对应的原存储数据标记为脏数据。
本发明的一种基于flash存储器的文件存储系统的有益效果如下:
当删除待存储文件时,直接删除待存储文件对应的存储块,或者,将待存储文件对应的原存储数据标记为脏数据,不予删除,可以有效降低对flash存储器的擦除频率,在不占用太多资源的情况下实现均衡磨损,提高flash存储器的使用寿命。
在上述方案的基础上,本发明的一种基于flash存储器的文件存储系统还可以做如下改进。
进一步,所述第二存储模块具体用于:
当所述第一判断结果为否时,利用FLASH存储器的最小存储单位的倍数对所述待存储文件进行数据补齐,将数据补齐后的待存储文件存储至所述碎片文件存储区的第一存储区域。
进一步,还包括指针模块,所述指针模块用于:当将所述待存储文件存储至所述碎片文件存储区的第一存储区域时,生成用于指向在所述碎片文件存储区的下一个存储区域的指针;
所述第二存储模块还用于:当有新待存储文件存储至所述碎片文件存储区时,根据所述指针,将所述新待存储文件存储至所述下一个存储区域。
进一步,所述第一存储模块还用于:
当修改所述待存储文件的部分数据时,根据所述映射关系、编号数据确定所述部分数据对应的存储块,并对所述部分数据对应的存储块中的存储内容进行修改。
采用上述进一步方案的有益效果是:现有技术中,flash存储器实现擦除操作的过程为:将需要更改的数据所占的空间进行擦除,一般都是按页擦除,尽管需要更改的数据小于一页,也要擦除整页数据,不可避免的要将未更改的区域进行重写,如果不擦除,将无法保存需要的数据,此时会读出脏数据,将更改后的数据写入到已经擦除的空间,并将其他擦除的信息补全,且效率低,而本申请中,只对部分数据对应的存储块中的存储内容进行修改,效率高,且避免读出脏数据,还能够进一步降低对flash存储器的擦除频率,进一步提高flash存储器的使用寿命。
进一步,还包括数据恢复模块;
所述划分模块还用于:将所述flash存储器的存储区域进行划分时,还得到掉电保护管理区,所述掉电保护管理区用于存储掉电保护记录表;
所述数据恢复模块用于:当发生掉电时,根据所述掉电保护记录表进行恢复。
采用上述进一步方案的有益效果是:通过提供掉电保护策略方法,保证业务的完整性和一致性。
附图说明
图1为本发明实施例的一种基于flash存储器的文件存储方法的流程示意图;
图2为对flash存储器的存储区域进行划分的示意图;
图3为文件存储区的文件头的结构示意图;
图4为文件树的结构示意图;
图5为大文件存储中文件块链表的存储过程示意图;
图6为为掉电保护的流程示意图。
图7为本发明实施例的一种基于flash存储器的文件存储系统的结构示意图。
具体实施方式
如图1所示,本发明实施例的一种基于flash存储器的文件存储方法,包括如下步骤:
S1、形成映射关系:将flash存储器的每个逻辑页和每个实际物理页一一对应,形成映射关系,具体地:
针对逻辑页和实际物理页做关系映射,形成一一对应关系,例如,0号逻辑页对应0号实际物理页,1号逻辑页对应1号实际物理页。
S2、进行划分:将flash存储器的存储区域进行划分,得到大文件存储区和碎片文件存储区,具体地:
根据功能的不同,将flash存储器的数据区即flash存储器的存储区域进行划分,具体指:将flash存储器的存储区域按照所存数据的不同划分为不同的存储子区域,根据每个存储子区域的数据特点设置不同的存储策略。
其中,划分出的存储子区域包括:系统启动区、管理区、文件存储区和备份区,具体地:
1)系统启动区为一块固定的存储区域,具体用于存放此文件系统的引导信息,其逻辑页地址与实际物理页地址相同,其修改次数相较于其他存储子区域的逻辑页和实际物理页来说比较固定,对应的存储策略具体为:执行大规模均衡磨损平衡时可能会修改,擦鞋次数固定并且远远小于其他页,故不参与均衡磨损,在修改时进行安全写,保证数据不丢失;
2)管理区又划分为均衡磨损管理区、掉电保护管理区和其它管理区,具体地:
①均衡磨损管理区:主要用于存储flash存储器内的逻辑页和物理页的映射关系,在寻找正确数据起到定位的作用;
②掉电保护管理区用来存放掉电保护记录表,其记录表记录上次下电状态是否异常,如果为异常,则根据记录表内容从备份区相应的页恢复到实际业务区;
③其它管理区用于放置一些嵌入式系统的其他系统内容项目。
3)文件存储区包括三部分,第一部分为文件头存储区,第二部分为文件结构树存储区,第三部分为文件内容存储区,具体地:
①文件头存储区为存储用户文件即待存储文件的文件头信息,文件头信息具体包括文件名称、文件类型、文件id、文件大小、文件权限及文件存储逻辑位置等相关信息;
②文件结构树存储区为存储文件结构树的区域,文件结构树采用树的数据结构类型表示,用孩子兄弟法记录文件树相关信息;
③文件内容存储区分为大文件存储区和碎片文件存储区。
4)备份区是用来开启掉电保护时用来维持数据完整性和一致性用的。
S3、进行编号,将大文件存储区的每个实际物理页划分为多个存储块,对每个存储块进行编号,得到编号数据,具体地:
大文件存储区采用分块存储的方法,根据每个实际物理页的大小,去除掉每个实际物理页的最后一小块区域用来存储实际物理页的擦写次数,然后将每个实际物理页分为三个存储块、四个存储块或五个存储块等,也可根据实际情况设置,具体可将每个实际物理页平均分为三个存储块、四个存储块或五个存储块等,也可根据实际情况设置每个存储块的;
并根据大文件存储区的实际物理页的总页数来对每个存储块进行编号,得到编号数据。
S4、进行判断,具体地:判断待存储文件的大小是否超过预设阈值,得到第一判断结果;
例如,当将每个实际物理页平均分为三个存储块、四个存储块或五个存储块等时,可将任一存储块的能够存储数据的大小确定为预设阈值,也可根据实际情况进行设置预设阈值;
其中,待存储文件可为待存储的嵌入式系统文件或者其它格式的文件。
S5、进行存储:
1)当第一判断结果为是时,利用多个存储块存储对待存储文件进行存储,当删除待存储文件时,删除待存储文件对应的存储块,具体地:
存储时可先申请存储块,申请到相应的存储块后进行存储,在申请时,优先统一文件选用连续的存储块进行使用,在无连续存储块的情况下,才在碎片存储块下存储,其用来记录存储块的链表存放在其它管理区内。
2)当第一判断结果为否时,利用碎片文件存储区对待存储文件进行存储,当删除待存储文件时,将待存储文件对应的原存储数据标记为脏数据。
其中,当第一判断结果为否时,利用碎片文件存储区对待存储文件进行存储,包括:
S50、当第一判断结果为否时,利用FLASH存储器的最小存储单位的倍数对待存储文件进行数据补齐,将数据补齐后的待存储文件存储至碎片文件存储区的第一存储区域。
还包括:
S51、当将待存储文件存储至碎片文件存储区的第一存储区域时,生成用于指向在碎片文件存储区的下一个存储区域的指针;
S52、当有新待存储文件存储至碎片文件存储区时,根据指针,将新待存储文件存储至下一个存储区域。
碎片文件存储区对应的存储策略为:将任一存储块的能够存储数据的大小确定为预设阈值。此时,当待存储文件的数据量小于大文件存储区的存储块所能够存储数据的大小时,则用碎片文件存储区对待存储文件进行存储,为便于表述,当待存储文件的数据量小于大文件存储区的存储块所能够存储数据的大小时,将该待存储文件定义为碎片文件;
然后,将其碎片文件大小用FLASH最小存储单位的倍数补齐,另外需要一个指针用来指向下一个存储区域,在进行碎片文件修改的时候,不需要在原来的位置修改,只需要根据所指针继续向后写,并且在文件头存储区域也向后写,并将原数据标记为脏数据即可,也就是说,将待存储文件对应的原存储数据标记为脏数据。
当删除待存储文件时,直接删除待存储文件对应的存储块,或者,将待存储文件对应的原存储数据标记为脏数据,不予删除,可以有效降低对flash存储器的擦除频率,在不占用太多资源的情况下实现均衡磨损,提高flash存储器的使用寿命。
可选地,在上述技术方案中,利用多个存储块存储对待存储文件进行存储之后,还包括:
S53、当修改待存储文件的部分数据时,根据映射关系、编号数据确定部分数据对应的存储块,并对部分数据对应的存储块中的存储内容进行修改。
现有技术中,flash存储器实现擦除操作的过程为:将需要更改的数据所占的空间进行擦除,一般都是按页擦除,尽管需要更改的数据小于一页,也要擦除整页数据,不可避免的要将未更改的区域进行重写,如果不擦除,将无法保存需要的数据,此时会读出脏数据,将更改后的数据写入到已经擦除的空间,并将其他擦除的信息补全,且效率低,而本申请中,只对部分数据对应的存储块中的存储内容进行修改,效率高,且避免读出脏数据,还能够进一步降低对flash存储器的擦除频率,进一步提高flash存储器的使用寿命。
可选地,在上述技术方案中,还包括:
S20、将flash存储器的存储区域进行划分时,还得到掉电保护管理区,掉电保护管理区用于存储掉电保护记录表;
S21、当发生掉电时,根据掉电保护记录表进行恢复。
通过提供掉电保护策略方法,保证业务的完整性和一致性。
本申请的磨损均衡的有如下实现方式:
1)第一种实现方式:在向flash存储器中存储待存储文件时,保证尽可能少的写数据,具体地:
首先,比如,在少数据量存储的存入策略为向后按照最小存储单位直接写,并将原先的数据标记为脏数据,直到此页已经全部为脏数据时或者数据无法向后继续存储时,擦除此页数据;
其次,在每次需要大数据量存储时,先将flash存储器中这一页的数据读入RAM中,在RAM中进行修改数据,并不直接写回,当下一个指令还是修改这一页内容时继续修改,在业务结束或者切换其他业务时将此页进行擦写写回。
2)第二种实现方式:由系统记录总的擦写次数,当总擦写次数达到一定数量级时,在业务空闲的情况下运行均衡磨损,此实现方式有如下两种:
①修改逻辑页到物理页映射,将每一个需要均衡的物理页的最后用来存储擦写次数的预留区域的数据取出,按照擦写次数从低到高进行排序,然后将后30%的页的数据和前30%的页的数据进行互换,并将管理区相应的映射表进行修改;
②先规定一个标准量,当某页擦写次数达到此标准量时,将此页与擦写最低的那一页进行互换数据,并修改映射表,当擦写次数都接近于此标准量时,开始将标准量扩大,前几次扩大为二次倍数扩大,到10万次左右后改为加法式扩增,尽可能保证其寿命延长。
本申请的掉电保护的实现方式:
在RAM资源允许的情况下,先将需要更改的页数据全部读入到RAM中,在RAM中将数据更改完成,先写入备份区,其次写入掉电保护管理表,最后将备份区页面写回到原位置,在中途掉电只剩两种情况,要么此业务重做,要么此业务从备份区恢复,在重要的业务场景下,不允许掉电的情况下,要保持数据完整性和一致性,开启此功能。
需要说明的是,在初次使用时,先确定flash存储器的存储容量、页面大小、最小写操作单位以及flash存储器的存储区域,并将flash存储器的存储区域内的所有目标块即所有数据进行页面擦除处理。
在另外一个实施例中,包括:
如图2所示,当待测试文件为嵌入式系统文件时,根据嵌入式系统文件的特点,特将管理的存储区域由低地址到高地址划分为系统引导区、均衡管理区、掉电管理区、其他管理区、文件头区、文件结构树区、大文件区、碎片文件区、备份区这些区域。用来维护整个文件系统,其中,管理区和备份区都对用户透明,实际存储嵌入式系统文件区域为文件存储区。
其中,系统启动区为一块固定的区域,用来存放此文件系统的引导信息,其逻辑页地址与实际物理页地址相同,其修改次数相较于其他页来说比较固定,在执行大规模均衡磨损平衡时可能会修改,擦鞋次数固定并且远远小于其他页,故不参与均衡磨损,在修改时进行安全写,保证数据不丢失。系统上电第一步是读出系统引导区的信息,确定其在此嵌入式系统中各个区域划分的逻辑地址。
其中,均衡管理区为存储本发明的方法中逻辑地址和物理地址的映射表,用顺序表形式存储表示,按照两个字节表示一页的映射,下标表示逻辑页号,内容表示实际的物理页号;初始下标对应页号为0—0、1—1……。
其中,掉电管理区为掉电管理表的存储,其中存储方式为覆盖性,按照定长记录来写,只要确定有多大的备份区,就决定好存储记录的长度,分为三部分,第一部分表示记录备份区与数据原始区的映射;第二部分表示是否已经全部写入备份区,第三部分表示是否已经全部恢复到数据原始区域;此处服务于掉电保护。
其中,其他管理区用来存放例如文件块链表等信息,如图5所示,文件块链表用这种方式存储,内容为0xffff的为空闲文件块,内容为0xffee为结尾文件块,内容为其他则为下一个要链接的文件块。
其中,文件头区域内容如图3所示,图3只表示实际应用到某嵌入式系统后的一种表示,总体分为三部分,第一部分为文件索引区,主要表示文件的存储类型和存储区域,类型分为大文件和碎片文件,大文件的存储用文件块来表示,碎片文件的存储用起始地址表示。
如图4所示,文件结构树存储区为存储文件结构树的区域,文件结构树采用树的数据结构类型表示,用孩子兄弟法记录文件树相关信息。
其中,所示大文件区用来存储大型文件,定义大型文件为文件大小大于四分之一去除掉保留区域的页大小。其文件块存储为链式存储,存储方式如图5所示,其存储流程为,首先根据文件头中信息查看文件大小,在符合大文件时开始申请文件块,原则为优先申请连续的存储块,当连续存储块没有时,才会直接申请现有存储块。文件在删除时不需要在文件实际存储区域擦,直接在文件块管理区将相应的块删除即可,同时将此文件的文件头标记为脏数据。
其中,碎片文件区用来存储小型文件,定义文件大小小于四分之一去除掉保留区域的页大小的文件为碎片文件,碎片文件如果和大文件同样存储,每次更改新加需要修改整页会浪费大大浪费擦除寿命,故采用另一种存储策略,首先在每个文件后加一个单位写的空间用来存储是否更新新文件位置,如果为0XFFFF,即为全F为这就是当前文件,否则根据里面地址向后偏移,找到新文件,即在修改时不在原位置修改,而是继续向后写,更改保留为链接,直到存储满之后进行碎片整理。
其中,备份区专门为安全写和掉电保护设计,用来存储备份恢复的数据。
在另外一个实施例中,增加存储寿命策略为:尽可能少的擦和整个存储器管理区域擦写磨损均衡。
其尽可能少的擦策略为在向flash存储器中存储时,保证尽可能少的写数据,首先,比如,在少数据量存储的存入策略为向后按照最小存储单位直接写,并将原先的数据标记为脏数据,直到此页已经全部为脏数据时或者数据无法向后继续存储时,擦除此页数据,其次,在每次需要大数据量存储时,先将flash存储器中这一页的数据读入RAM中,在RAM中进行修改数据,并不直接写回,当下一个指令还是修改这一页内容时继续修改,在业务结束或者切换其他业务时将此页进行擦写写回;
其整个存储器管理区域擦写均衡实现为由系统记录总的擦写次数,当总擦写次数达到一定数量级时,在业务空闲的情况下运行均衡磨损,此实现方式有二,其一为修改逻辑页到物理页映射,将每一个需要均衡的物理页的最后用来存储擦写次数的预留区域的数据取出,按照擦写次数从低到高进行排序,然后将后30%的页的数据和前30%的页的数据进行互换,并将管理区相应的映射表进行修改。其二为先规定一个标准量,当某页擦写次数达到此标准量时,将此页与擦写最低的那一页进行互换数据,并修改映射表,当擦写次数都接近于此标准量时,开始将标准量扩大,前几次扩大为二次倍数扩大,到10万次左右后改为加法式扩增,尽可能保证其寿命延长。
这几种策略相辅相成,共同达到增强存储利用率和延长FLASH存储器使用寿命的效益。
在另外一个实施例中,如图6所示,掉电保护方案为在RAM资源允许的情况下,先将需要更改的页数据全部读入到RAM中,在RAM中将数据更改完成,先写入备份区,其次写入掉电保护管理表,最后将备份区页面写回到原位置,在RAM资源不充足的情况下,每次只用1页大小的RAM,改完立即写入备份区,后续策略一样,在中途掉电只剩两种情况,要么此业务重做,要么此业务从备份区恢复,在重要的业务场景下,不允许掉电的情况下,要保持数据完整性和一致性,开启此功能。
保护flash存储器中存储的数据,保证设备在执行业务的过程中不会因为掉电而丢失原数据,保证数据的完整性。保护方案实现一个实例步骤为:
S100、将需要改写内容的页读到RAM中。
S101、将需要改动的部分进行修改,改写RAM;
S102、将RAM中修改好的数据写到备份区。
S103、在备份区管理页写记录,并保留最后16字节位置为全0XFF;
S104、擦除原flash存储器中的内容。
S104、将这条记录最后16字节的前8字节置为0x00,后8字节不变;
S105、将备份区内容写回到原数据区;
S106、写回完毕后将两页记录最后8字节位置为0X00;
本发明的有益效果为:在嵌入式环境下提高FLASH存储器的利用率与延长其使用寿命,并保证数据的完整性和一致性。
在上述各实施例中,虽然对步骤进行了编号S1、S2等,但只是本申请给出的具体实施例,本领域的技术人员可根据实际情况调整S1、S2等的执行顺序,此也在本发明的保护范围内,可以理解,在一些实施例中,可以包含如上述各实施方式中的部分或全部。
如图7所示,本发明实施例的一种基于flash存储器的文件存储系统,包括对应模块200、划分模块210、划分编号模块220、判断模块230、第一存储模块240和第二存储模块250;
对应模块200用于:将flash存储器的每个逻辑页和每个实际物理页一一对应,形成映射关系;
划分模块210用于:将flash存储器的存储区域进行划分,得到大文件存储区和碎片文件存储区;
划分编号模块220用于:将大文件存储区的每个实际物理页划分为多个存储块,对每个存储块进行编号,得到编号数据;
判断模块230用于:判断待存储文件的大小是否超过预设阈值,得到第一判断结果;
第一存储模块240用于:当第一判断结果为是时,利用多个存储块存储对待存储文件进行存储,当删除待存储文件时,删除待存储文件对应的存储块;
第二存储模块250用于:当第一判断结果为否时,利用碎片文件存储区对待存储文件进行存储,当删除待存储文件时,将待存储文件对应的原存储数据标记为脏数据。
当删除待存储文件时,直接删除待存储文件对应的存储块,或者,将待存储文件对应的原存储数据标记为脏数据,不予删除,可以有效降低对flash存储器的擦除频率,在不占用太多资源的情况下实现均衡磨损,提高flash存储器的使用寿命。
可选地,在上述技术方案中,第二存储模块250具体用于:
当第一判断结果为否时,利用FLASH存储器的最小存储单位的倍数对待存储文件进行数据补齐,将数据补齐后的待存储文件存储至碎片文件存储区的第一存储区域。
可选地,在上述技术方案中,还包括指针模块,指针模块用于:当将待存储文件存储至碎片文件存储区的第一存储区域时,生成用于指向在碎片文件存储区的下一个存储区域的指针;
第二存储模块250还用于:当有新待存储文件存储至碎片文件存储区时,根据指针,将新待存储文件存储至下一个存储区域。
可选地,在上述技术方案中,第一存储模块240还用于:
当修改待存储文件的部分数据时,根据映射关系、编号数据确定部分数据对应的存储块,并对部分数据对应的存储块中的存储内容进行修改。
现有技术中,flash存储器实现擦除操作的过程为:将需要更改的数据所占的空间进行擦除,一般都是按页擦除,尽管需要更改的数据小于一页,也要擦除整页数据,不可避免的要将未更改的区域进行重写,如果不擦除,将无法保存需要的数据,此时会读出脏数据,将更改后的数据写入到已经擦除的空间,并将其他擦除的信息补全,且效率低,而本申请中,只对部分数据对应的存储块中的存储内容进行修改,效率高,且避免读出脏数据,还能够进一步降低对flash存储器的擦除频率,进一步提高flash存储器的使用寿命。
可选地,在上述技术方案中,还包括数据恢复模块;
划分模块210还用于:将flash存储器的存储区域进行划分时,还得到掉电保护管理区,掉电保护管理区用于存储掉电保护记录表;
数据恢复模块用于:当发生掉电时,根据掉电保护记录表进行恢复。
通过提供掉电保护策略方法,保证业务的完整性和一致性。
上述关于本发明的一种基于flash存储器的文件存储系统中的各参数和各个单元模块实现相应功能的步骤,可参考上文中关于一种基于flash存储器的文件存储方法的实施例中的各参数和步骤,在此不做赘述。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。
因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM),只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (8)

1.一种基于flash存储器的文件存储方法,其特征在于,包括:
将flash存储器的每个逻辑页和每个实际物理页一一对应,形成映射关系;
将所述flash存储器的存储区域进行划分,得到大文件存储区和碎片文件存储区;
将所述大文件存储区的每个实际物理页划分为多个存储块,对每个存储块进行编号,得到编号数据;
判断待存储文件的大小是否超过预设阈值,得到第一判断结果;
当所述第一判断结果为是时,利用多个存储块对所述待存储文件进行存储,当删除所述待存储文件时,删除所述待存储文件对应的存储块;
其中,删除所述待存储文件对应的存储块具体为:
删除所述待存储文件时,不在所述待存储文件的实际存储区域擦除,直接在文件块管理区将所述待存储文件对应的存储块删除,同时将所述待存储文件的文件头标记为脏数据;
当所述第一判断结果为否时,利用碎片文件存储区对所述待存储文件进行存储,当删除所述待存储文件时,将所述待存储文件对应的原存储数据标记为脏数据,不予删除;
其中,将任一存储块的能够存储数据的大小确定为所述预设阈值;
所述利用多个存储块对所述待存储文件进行存储之后,还包括:
当修改所述待存储文件的部分数据时,根据所述映射关系、编号数据确定所述部分数据对应的存储块,并对所述部分数据对应的存储块中的存储内容进行修改。
2.根据权利要求1所述的一种基于flash存储器的文件存储方法,其特征在于,所述当所述第一判断结果为否时,利用碎片文件存储区对所述待存储文件进行存储,包括:
当所述第一判断结果为否时,利用FLASH存储器的最小存储单位的倍数对所述待存储文件进行数据补齐,将数据补齐后的待存储文件存储至所述碎片文件存储区的第一存储区域。
3.根据权利要求2所述的一种基于flash存储器的文件存储方法,其特征在于,还包括:
当将所述待存储文件存储至所述碎片文件存储区的第一存储区域时,生成用于指向在所述碎片文件存储区的下一个存储区域的指针;
当有新待存储文件存储至所述碎片文件存储区时,根据所述指针,将所述新待存储文件存储至所述下一个存储区域。
4.根据权利要求1至3任一项所述的一种基于flash存储器的文件存储方法,其特征在于,还包括:
将所述flash存储器的存储区域进行划分时,还得到掉电保护管理区,所述掉电保护管理区用于存储掉电保护记录表;
当发生掉电时,根据所述掉电保护记录表进行恢复。
5.一种基于flash存储器的文件存储系统,其特征在于,包括对应模块、划分模块、划分编号模块、判断模块、第一存储模块和第二存储模块;
所述对应模块用于:将flash存储器的每个逻辑页和每个实际物理页一一对应,形成映射关系;
所述划分模块用于:将所述flash存储器的存储区域进行划分,得到大文件存储区和碎片文件存储区;
所述划分编号模块用于:将所述大文件存储区的每个实际物理页划分为多个存储块,对每个存储块进行编号,得到编号数据;
所述判断模块用于:判断待存储文件的大小是否超过预设阈值,得到第一判断结果;
所述第一存储模块用于:当所述第一判断结果为是时,利用多个存储块对所述待存储文件进行存储,当删除所述待存储文件时,删除所述待存储文件对应的存储块,其中,删除所述待存储文件对应的存储块具体为:
删除所述待存储文件时,不在所述待存储文件的实际存储区域擦除,直接在文件块管理区将所述待存储文件对应的存储块删除,同时将所述待存储文件的文件头标记为脏数据;
所述第二存储模块用于:当所述第一判断结果为否时,利用碎片文件存储区对所述待存储文件进行存储,当删除所述待存储文件时,将所述待存储文件对应的原存储数据标记为脏数据,不予删除;
其中,将任一存储块的能够存储数据的大小确定为所述预设阈值;
所述第一存储模块还用于:
当修改所述待存储文件的部分数据时,根据所述映射关系、编号数据确定所述部分数据对应的存储块,并对所述部分数据对应的存储块中的存储内容进行修改。
6.根据权利要求5所述的一种基于flash存储器的文件存储系统,其特征在于,所述第二存储模块具体用于:
当所述第一判断结果为否时,利用FLASH存储器的最小存储单位的倍数对所述待存储文件进行数据补齐,将数据补齐后的待存储文件存储至所述碎片文件存储区的第一存储区域。
7.根据权利要求6所述的一种基于flash存储器的文件存储系统,其特征在于,还包括指针模块,所述指针模块用于:当将所述待存储文件存储至所述碎片文件存储区的第一存储区域时,生成用于指向在所述碎片文件存储区的下一个存储区域的指针;
所述第二存储模块还用于:当有新待存储文件存储至所述碎片文件存储区时,根据所述指针,将所述新待存储文件存储至所述下一个存储区域。
8.根据权利要求5至7任一项所述的一种基于flash存储器的文件存储系统,其特征在于,还包括数据恢复模块;
所述划分模块还用于:将所述flash存储器的存储区域进行划分时,还得到掉电保护管理区,所述掉电保护管理区用于存储掉电保护记录表;
所述数据恢复模块用于:当发生掉电时,根据所述掉电保护记录表进行恢复。
CN202111612765.7A 2021-12-27 2021-12-27 一种基于flash存储器的文件存储方法和系统 Active CN114265562B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111612765.7A CN114265562B (zh) 2021-12-27 2021-12-27 一种基于flash存储器的文件存储方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111612765.7A CN114265562B (zh) 2021-12-27 2021-12-27 一种基于flash存储器的文件存储方法和系统

Publications (2)

Publication Number Publication Date
CN114265562A CN114265562A (zh) 2022-04-01
CN114265562B true CN114265562B (zh) 2022-09-20

Family

ID=80830420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111612765.7A Active CN114265562B (zh) 2021-12-27 2021-12-27 一种基于flash存储器的文件存储方法和系统

Country Status (1)

Country Link
CN (1) CN114265562B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255433A (zh) * 2018-01-12 2018-07-06 纳思达股份有限公司 Flash存储器、Flash存储器的文件管理方法和装置
CN112631516A (zh) * 2020-12-22 2021-04-09 上海宏力达信息技术股份有限公司 一种具有寿命管理的flash文件管理系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954765B2 (en) * 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
CN102541753B (zh) * 2011-12-29 2015-08-19 上海爱信诺航芯电子科技有限公司 一种嵌入式存储器的读写优化方法
US9870367B2 (en) * 2016-01-04 2018-01-16 Acronis International Gmbh System and method of using data blocks to optimize file storage
CN109656481A (zh) * 2018-12-14 2019-04-19 成都三零嘉微电子有限公司 一种提高智能卡文件系统flash写入寿命的方法
CN110674051A (zh) * 2019-09-24 2020-01-10 中国科学院微电子研究所 一种数据存储方法及装置
CN111694765A (zh) * 2020-06-05 2020-09-22 重庆大学 一种面向移动应用特征的非易失性内存文件系统多粒度空间管理方法
CN112231244B (zh) * 2020-12-21 2021-04-20 深圳杰睿联科技有限公司 应用于SoftSIM的SIM卡文件擦写系统、方法和可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255433A (zh) * 2018-01-12 2018-07-06 纳思达股份有限公司 Flash存储器、Flash存储器的文件管理方法和装置
CN112631516A (zh) * 2020-12-22 2021-04-09 上海宏力达信息技术股份有限公司 一种具有寿命管理的flash文件管理系统

Also Published As

Publication number Publication date
CN114265562A (zh) 2022-04-01

Similar Documents

Publication Publication Date Title
US7594062B2 (en) Method for changing data of a data block in a flash memory having a mapping area, a data area and an alternative area
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
JP4238514B2 (ja) データ記憶装置
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US8291155B2 (en) Data access method, memory controller and memory storage system
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
JP4837731B2 (ja) プログラム可能な耐久度を有するフラッシュメモリ
EP2042995B1 (en) Storage device and deduplication method
US10061710B2 (en) Storage device
US8589617B2 (en) Write once recording device
EP2631916A1 (en) Data deletion method and device
KR101077904B1 (ko) 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
US20040098397A1 (en) Memory device and recording/reproducing apparatus using the same
US20050163014A1 (en) Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device
JP2005222550A (ja) フラッシュメモリのリマッピング方法
KR20090091101A (ko) 비휘발성 메모리 시스템에서 사용하기 위한 전원 관리 블럭
JP6008325B2 (ja) データ記憶システムおよびその制御方法
JP4130808B2 (ja) フォーマット方法
KR100954603B1 (ko) 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법
CN114265562B (zh) 一种基于flash存储器的文件存储方法和系统
KR102094786B1 (ko) 파일 시스템 및 상기 파일 시스템을 이용한 파일 저장 방법
CN114327292A (zh) 文件管理方法、系统、电子设备和存储介质
CN111949212A (zh) 基于自定义开放通道ssd的文件系统及文件管理方法
JP7435470B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant