CN107818269A - 一种基于Flash的文件保存方法及系统 - Google Patents
一种基于Flash的文件保存方法及系统 Download PDFInfo
- Publication number
- CN107818269A CN107818269A CN201711206547.7A CN201711206547A CN107818269A CN 107818269 A CN107818269 A CN 107818269A CN 201711206547 A CN201711206547 A CN 201711206547A CN 107818269 A CN107818269 A CN 107818269A
- Authority
- CN
- China
- Prior art keywords
- file
- block
- flash
- original
- idle
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种基于Flash的文件保存方法及系统,所述方法包括:获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;如果存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;如果不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。本发明能够通过在Flash上存放同名文件的地址链接,实现断电的保护并达到磨损均衡的效果。
Description
技术领域
本发明涉及Flash存储技术领域,尤其涉及一种基于Flash的文件保存方法及系统。
背景技术
随着科技的进步,各类智能硬件的发展非常迅猛,这些设备中都需要具备存储能力,记录设备的配置信息、设备运行状态等;同时,由于Flash存储器具有高可靠性、高存储密度、低价格、非易失、擦写方便等优点,进而取代了传统的EPROM和EEPROM,在嵌入式系统中得到了广泛的应用。Flash存储器可以分为若干块,每块义由若干页组成,对Flash的擦除操作以块为单位进行,而读和写操作以页为单位进行。Flash存储器在进行写入操作之前必须先擦除目标块。同时由于供电的不确定性,如果正在记录数据时发生断电,可能导致Flash文件系统数据丢失,甚至系统损坏导致无法启动等严重后果。
因此,在目前典型的Flash文件系统,如Linux系统的闪存日志型文件系统第2版(jffs2:journaling flash file system version 2)文件系统中,虽然能够对断电数据进行保护,但会占用大量的Flash空间作文件系统的日志管理,异常断电后,再次启动时,会花费较长时间进行数据修复,效率很低;例如,通过自行实现的双备份的方法进行断电保护,即通过每次写入数据都会全量的写两次Flash,但是,双备份的方法不仅擦写时花费时间较长,而且还由于每次都从固定起始位置擦写Flash,导致Flash寿命降低的问题。
发明内容
本发明提供的基于Flash的文件保存方法及系统,能够通过在Flash上存放同名文件的地址链接,在文件写入过程中实现断电的保护,确保至少一份文件不会被损坏,且重启后数据恢复简单,并达到磨损均衡的效果。
第一方面,本发明提供一种基于Flash的文件保存方法,包括:
获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;
如果在有效文件地址索引表中存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;
如果在有效文件地址索引表中不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。
可选地,在所述获取待保存文件的文件名之前,所述方法还包括:
初始化储存系统。
可选地,所述初始化储存系统包括:
按预设格式检测Flash分区并将所述Flash分区初始化,其中,当所述Flash分区首次使用时,则将所述Flash分区格式化;
遍历所述Flash分区内各Block头部数据搜索出存在文件数据的Block;
在所述存在文件数据的Block内,遍历文件头部数据搜索出有效文件的头部Flash地址,并在内存中根据所述有效文件的头部Flash地址建立有效文件地址索引表;
遍历所述存在文件数据的Block搜索出空闲Block,并按所述空闲Block头部内的编号顺序在内存中建立空闲Block索引表,其中,所述空闲Block索引表用于申请空闲Flash存储空间;
在内存中记录所述空闲Block索引表的头部Block序号和尾部Block序号,并分别记为空闲Block头部序号和空闲Block尾部序号,再释放所述空闲Block索引表。
可选地,所述判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名为遍历所述有效文件地址索引表,依次比对所述有效文件地址索引表中的文件名是否与待保存文件的文件名相同,如果相同,则判断得出存在所述文件名;如果不同,则判断得出不存在所述文件名。
可选地,在所述申请空闲Flash存储空间写入待保存文件形成第二新文件中,所述方法还包括:
检测得出当前Block能够存储部分文件后,返回对应空闲Flash存储空间;
检测得出当前Block被占满后,获取Block头部指向的下个可用Block使用;
检测得出当前可用Block小于阈值时,触发垃圾回收处理机制将小于阈值的当前可用Block插入脏Block链表中。
可选地,在所述将所述第一新文件的头部原文件地址字段指向原文件的Flash地址之后,所述方法还包括:
在所述申请空闲Flash存储空间写入待保存文件形成第一新文件时发生断电,则系统重启后使用原文件,并将所述第一新文件标记为删除;
在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,则系统重启后使用第一新文件,继续将原文件标记为删除。
可选地,在所述系统重启之后,所述方法还包括:
遍历所有Block,检查所有第一新文件的头部原文件地址字段指向原文件的Flash地址;
当所指向原文件的Flash地址有效时,则继续检查所述第一新文件和所指向的原文件是否有效;
当所述第一新文件和所指向的原文件校验仅其一有效时,则对应将另一个所指向的原文件或所述第一新文件的状态标记为删除;
当所述第一新文件和所指向的原文件校验均有效时,则将原文件状态标记为删除。
可选地,所述方法还包括垃圾回收过程,其中,所述垃圾回收过程包括:
将经删除文件所释放的Block、或经修改文件所释放的Block、或经触发垃圾回收处理机制所回收的Block进行统计并插入脏Block链表中,其中,所述脏Block链表以各Block空闲的比例进行排序;
根据所述脏Block链表依次获取Block编号,遍历Block内文件确定有效文件,并申请空闲Flash存储空间转移所述有效文件形成第三新文件,保留所述第三新文件的头部原文件地址字段,然后对Block格式化;
擦除经转移所述有效文件后的Block,更新空闲Block的尾部;
当释放的Block达到设定的阈值时,则结束垃圾回收过程。
可选地,所述对Block格式化包括:
由记录的当前最后一个空闲Block序号开始进行编号。
新生成的Block头部序号依次排列,并按次序指向下个空闲Block位置。
当完成一个Block处理后让出CPU使得文件可以写入。
第二方面,本发明提供一种基于Flash的文件保存系统,包括:
判断单元,用于获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;
修改文件单元,用于在有效文件地址索引表中存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;
新建文件单元,用于在有效文件地址索引表中不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。
可选地,所述系统还包括:
初始化单元,用于初始化储存系统;
检测单元,用于检测当前Block是否能够存储部分文件、或当前Block是否被占满、或当前可用Block是否小于阈值;
断电启动单元,用于在所述申请空闲Flash存储空间写入待保存文件形成第一新文件时发生断电,则系统重启后使用原文件,并将所述第一新文件标记为删除、或者在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,则系统重启后使用第一新文件,继续将原文件标记为删除。
本发明实施例提供的基于Flash的文件保存方法及系统,所述方法第一方面能够通过在Flash上存放同名文件的地址链接,在文件写入过程中实现断电的保护,确保至少一份文件不会被损坏,且重启后数据恢复简单,另外通过顺序写入待保存文件,不在固定位置修改数据,进一步达到磨损均衡的效果。第二方面所述方法能够在初始化时在内存中建立有效文件地址索引表,使得在查找时可略过无文件的Block直接查找有效文件,进而加快检索速度,减少运算负担,提高修改文件和新建文件效率。第三方面所述方法能够在垃圾回收过程中,将经删除文件所释放的Block、或经修改文件所释放的Block、或经触发垃圾回收处理机制所回收的Block按照空闲比例排序,有助于提升垃圾回收效率;同时,当当前可用Block小于阈值时,触发垃圾回收处理机制将小于阈值的当前可用Block插入脏Block链表中并完成垃圾回收,不仅不会长时间阻塞文件写入;哈能及时将未使用的空闲Block及时回收,提高了所述方法的整体处理效率。因此,本实施例所述方法通过在Flash上存放同名文件的地址链接,并顺序写入待保存文件,以使各个Block逻辑上平等,某些Block损坏不会影响其它部分的数据,从而保证数据的安全可靠,进而避免使用超级Block,导致某些Block由于频繁擦写出现损坏。
附图说明
图1为本发明一实施例Flash存储空间的结构示意图;
图2为本发明一实施例基于Flash的文件保存方法的流程图;
图3为本发明另一实施例基于Flash的文件保存方法的流程图;
图4为本发明一实施例垃圾回收过程的流程图;
图5为本发明一实施例基于Flash的文件保存系统的结构示意图;
图6为本发明另一实施例基于Flash的文件保存系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种基于Flash的文件保存方法,如图2所示,所述方法包括:
S11、获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;
S12、如果在有效文件地址索引表中存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;
S13、如果在有效文件地址索引表中不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。
本发明实施例提供的基于Flash的文件保存方法一方面通过在Flash上存放同名文件的地址链接,在文件写入过程中实现断电的保护,确保至少一份文件不会被损坏,且重启后数据恢复简单,另一方面通过顺序写入待保存文件,不在固定位置修改数据,进一步达到磨损均衡的效果。
其中,当确定在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内不存在与待保存文件的文件名相同的同名文件时,通过申请空闲Flash存储空间写入待保存文件进行保存用以新建文件;当确定在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内存在与待保存文件的文件名相同的同名文件时,申请空闲Flash存储空间写入待保存文件进行保存,同时将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,再将原文件状态标记为删除用以修改文件,实现文件的存储,并且能够有效平衡Flash区块的写入次数,延长使用寿命;同时,在修改文件断电时第一新文件和原文件中至少一份数据有效,进而实现了断电保护功能。因此,所述方法能够达到磨损均衡和断电数据保护的效果。
同时,所述Flash存储空间被划分为若干个平等的Block,每个Block包括Block头部数据、以及可可保存若干个文件;其中,所述Block头部数据内包括编号、与有效文件地址索引表对应的索引序和下个空闲Block位置;所述文件包括文件头部、原文件的Flash地址和文件内容,文件头部包括文件状态和文件地址。
可选地,如图1和图3所示,在所述获取待保存文件的文件名之前,所述方法还包括:
S10、初始化储存系统。
可选地,所述初始化储存系统包括:
S101、按预设格式检测Flash分区并将所述Flash分区初始化,其中,当所述Flash分区首次使用时,则将所述Flash分区格式化;
S102、遍历所述Flash分区内各Block头部数据搜索出存在文件数据的Block;
S103、在所述存在文件数据的Block内,遍历文件头部数据搜索出有效文件的头部Flash地址,并在内存中根据所述有效文件的头部Flash地址建立有效文件地址索引表;
S104、遍历所述存在文件数据的Block搜索出空闲Block,并按所述空闲Block头部内的编号顺序在内存中建立空闲Block索引表,其中,所述空闲Block索引表用于申请空闲Flash存储空间;
S105、在内存中记录所述空闲Block索引表的头部Block序号和尾部Block序号,并分别记为空闲Block头部序号和空闲Block尾部序号,再释放所述空闲Block索引表。
具体的,本实施例所述方法中还需要对储存系统进行初始化,且在初始化时在内存中建立有效文件地址索引表,使得在查找时可略过无文件的Block直接查找有效文件,进而加快检索速度,减少运算负担,提高修改文件和新建文件效率。
可选地,所述判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名为遍历所述有效文件地址索引表,依次比对所述有效文件地址索引表中的文件名是否与待保存文件的文件名相同,如果相同,则判断得出存在所述文件名;如果不同,则判断得出不存在所述文件名。
可选地,在所述申请空闲Flash存储空间写入待保存文件形成第二新文件中,所述方法还包括:
检测得出当前Block能够存储部分文件后,返回对应空闲Flash存储空间;
检测得出当前Block被占满后,获取Block头部指向的下个可用Block使用;
检测得出当前可用Block小于阈值时,触发垃圾回收处理机制将小于阈值的当前可用Block插入脏Block链表中。
具体的,本实施例所述方法在在所述申请空闲Flash存储空间写入待保存文件形成第一新文件或第二新文件之前,使得待保存文件能够在Flash地址空间顺序写入至空闲Flash存储空间中,不仅减少断电后数据恢复的运算负担,还能够保证所述Flash分区内各Block的均衡擦写,并达到磨损均衡的效果,延长Flash整体的使用寿命。
可选地,在所述将所述第一新文件的头部原文件地址字段指向原文件的Flash地址之后,所述方法还包括:
S14、在所述申请空闲Flash存储空间写入待保存文件形成第一新文件时发生断电,则系统重启后使用原文件,并将所述第一新文件标记为删除;
S15、在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,则系统重启后使用第一新文件,继续将原文件标记为删除。
具体的,本实施例所述方法中经修改文件所形成的第一新文件头部原文件地址字段指向原文件的Flash地址,如果在写入待保存文件形成第一新文件时断电,由于原文件未做任何修改,因此,系统重启后原文件数据完好则仍使用原文件,并将第一新文件状态标记为删除。如果在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,系统重启后,由于第一新文件有效,则使用新文件,并将原文件状态标记为删除。
同时,在新建文件时,由于是在新申请的空闲Flash存储空间内写入待保存文件,因此,不会破坏其它存储空间的数据,即使此时发生断电,也只会导致所新建的文件异常,其它所有文件不会受到影响;进而对其他文件达到断电保护的效果。
可选地,在所述系统重启之后,所述方法还包括:
遍历所有Block,检查所有第一新文件的头部原文件地址字段指向原文件的Flash地址;
当所指向原文件的Flash地址有效时,则继续检查所述第一新文件和所指向的原文件是否有效;
当所述第一新文件和所指向的原文件校验仅其一有效时,则对应将另一个所指向的原文件或所述第一新文件的状态标记为删除;
当所述第一新文件和所指向的原文件校验均有效时,则将原文件状态标记为删除。
具体的,本实施例所述方法在断电重启数据恢复时对所述第一新文件的头部原文件地址字段指向原文件的Flash地址、以及所述第一新文件和所指向的原文件校验后,仅需要将原文件或第一新文件的状态标记为删除,即可实现数据恢复,因此,所述方法能够保证文件写入的可靠性,减少断电后数据恢复的运算负担,并提高数据恢复效率。
可选地,如图4所示,所述方法还包括:S16、垃圾回收过程,其中,所述垃圾回收过程包括:
S161、将经删除文件所释放的Block、或经修改文件所释放的Block、或经触发垃圾回收处理机制所回收的Block进行统计并插入脏Block链表中,其中,所述脏Block链表以各Block空闲的比例进行排序;
S162、根据所述脏Block链表依次获取Block编号,遍历Block内文件确定有效文件,并申请空闲Flash存储空间转移所述有效文件形成第三新文件,保留所述第三新文件的头部原文件地址字段,然后对Block格式化;
S163、擦除经转移所述有效文件后的Block,更新空闲Block的尾部;
S164、当释放的Block达到设定的阈值时,则结束垃圾回收过程。
可选地,所述对Block格式化包括:
由记录的当前最后一个空闲Block序号开始进行编号。
新生成的Block头部序号依次排列,并按次序指向下个空闲Block位置。
当完成一个Block处理后让出CPU使得文件可以写入。
具体的,本实施例所述方法在垃圾回收过程中,将经删除文件所释放的Block、或经修改文件所释放的Block、或经触发垃圾回收处理机制所回收的Block按照空闲比例排序,有助于提升垃圾回收效率;同时,当当前可用Block小于阈值时,触发垃圾回收处理机制将小于阈值的当前可用Block插入脏Block链表中并完成垃圾回收,一方面不会长时间阻塞文件写入;另一方面及时将未使用的空闲Block及时回收,提高了所述方法的整体处理效率。
综上所述,本实施例所述方法第一方面能够通过在Flash上存放同名文件的地址链接,在文件写入过程中实现断电的保护,确保至少一份文件不会被损坏,且重启后数据恢复简单,另外通过顺序写入待保存文件,不在固定位置修改数据,进一步达到磨损均衡的效果。
第二方面所述方法能够在初始化时在内存中建立有效文件地址索引表,使得在查找时可略过无文件的Block直接查找有效文件,进而加快检索速度,减少运算负担,提高修改文件和新建文件效率。
第三方面所述方法能够在垃圾回收过程中,将经删除文件所释放的Block、或经修改文件所释放的Block、或经触发垃圾回收处理机制所回收的Block按照空闲比例排序,有助于提升垃圾回收效率;同时,当当前可用Block小于阈值时,触发垃圾回收处理机制将小于阈值的当前可用Block插入脏Block链表中并完成垃圾回收,不仅不会长时间阻塞文件写入;哈能及时将未使用的空闲Block及时回收,提高了所述方法的整体处理效率。
因此,本实施例所述方法通过在Flash上存放同名文件的地址链接,并顺序写入待保存文件,以使各个Block逻辑上平等,某些Block损坏不会影响其它部分的数据,从而保证数据的安全可靠,进而避免使用超级Block,导致某些Block由于频繁擦写出现损坏。
本发明实施例还提供一种基于Flash的文件保存系统,如图5所示,所述系统包括:
判断单元11,用于获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;
修改文件单元12,用于在有效文件地址索引表中存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;
新建文件单元13,用于在有效文件地址索引表中不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。
本发明实施例提供的基于Flash的文件保存系统一方面通过在Flash上存放同名文件的地址链接,在文件写入过程中实现断电的保护,确保至少一份文件不会被损坏,且重启后数据恢复简单,另一方面通过顺序写入待保存文件,不在固定位置修改数据,进一步达到磨损均衡的效果。
其中,当判断单元11确定在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内不存在与待保存文件的文件名相同的同名文件时,通过新建文件单元13申请空闲Flash存储空间写入待保存文件进行保存用以新建文件;当判断单元11确定在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内存在与待保存文件的文件名相同的同名文件时,修改文件单元12申请空闲Flash存储空间写入待保存文件进行保存,同时将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,再将原文件状态标记为删除用以修改文件,实现文件的存储,并且能够有效平衡Flash区块的写入次数,延长使用寿命;同时,在修改文件断电时第一新文件和原文件中至少一份数据有效,进而实现了断电保护功能。因此,所述系统能够达到磨损均衡和断电数据保护的效果。
可选地,如图6所示,所述系统还包括:
初始化单元14,用于初始化储存系统;
检测单元15,用于检测当前Block是否能够存储部分文件、或当前Block是否被占满、或当前可用Block是否小于阈值;
断电启动单元16,用于在所述申请空闲Flash存储空间写入待保存文件形成第一新文件时发生断电,则系统重启后使用原文件,并将所述第一新文件标记为删除、或者在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,则系统重启后使用第一新文件,继续将原文件标记为删除。
本实施例的系统,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (11)
1.一种基于Flash的文件保存方法,其特征在于,包括:
获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;
如果在有效文件地址索引表中存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;
如果在有效文件地址索引表中不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。
2.根据权利要求1所述的方法,其特征在于,在所述获取待保存文件的文件名之前,所述方法还包括:
初始化储存系统。
3.根据权利要求2所述的方法,其特征在于,所述初始化储存系统包括:
按预设格式检测Flash分区并将所述Flash分区初始化,其中,当所述Flash分区首次使用时,则将所述Flash分区格式化;
遍历所述Flash分区内各Block头部数据搜索出存在文件数据的Block;
在所述存在文件数据的Block内,遍历文件头部数据搜索出有效文件的头部Flash地址,并在内存中根据所述有效文件的头部Flash地址建立有效文件地址索引表;
遍历所述存在文件数据的Block搜索出空闲Block,并按所述空闲Block头部内的编号顺序在内存中建立空闲Block索引表,其中,所述空闲Block索引表用于申请空闲Flash存储空间;
在内存中记录所述空闲Block索引表的头部Block序号和尾部Block序号,并分别记为空闲Block头部序号和空闲Block尾部序号,再释放所述空闲Block索引表。
4.根据权利要求3所述的方法,其特征在于,所述判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名为遍历所述有效文件地址索引表,依次比对所述有效文件地址索引表中的文件名是否与待保存文件的文件名相同,如果相同,则判断得出存在所述文件名;如果不同,则判断得出不存在所述文件名。
5.根据权利要求1-4任一所述的方法,其特征在于,在所述申请空闲Flash存储空间写入待保存文件形成第二新文件中,所述方法还包括:
检测得出当前Block能够存储部分文件后,返回对应空闲Flash存储空间;
检测得出当前Block被占满后,获取Block头部指向的下个可用Block使用;
检测得出当前可用Block小于阈值时,触发垃圾回收处理机制将小于阈值的当前可用Block插入脏Block链表中。
6.根据权利要求1-5任一所述的方法,其特征在于,在所述将所述第一新文件的头部原文件地址字段指向原文件的Flash地址之后,所述方法还包括:
在所述申请空闲Flash存储空间写入待保存文件形成第一新文件时发生断电,则系统重启后使用原文件,并将所述第一新文件状态标记为删除;
在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,则系统重启后使用第一新文件,继续将原文件状态标记为删除。
7.根据权利要求6所述的方法,其特征在于,在所述系统重启之后,所述方法还包括:
遍历所有Block,检查所有第一新文件的头部原文件地址字段指向原文件的Flash地址;
当所指向原文件的Flash地址有效时,则继续检查所述第一新文件和所指向的原文件是否有效;
当所述第一新文件和所指向的原文件校验仅其一有效时,则对应将另一个所指向的原文件或所述第一新文件的状态标记为删除;
当所述第一新文件和所指向的原文件校验均有效时,则将原文件状态标记为删除。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括垃圾回收过程,其中,所述垃圾回收过程包括:
将经删除文件所释放的Block、或经修改文件所释放的Block、或经触发垃圾回收处理机制所回收的Block进行统计并插入脏Block链表中,其中,所述脏Block链表以各Block空闲的比例进行排序;
根据所述脏Block链表依次获取Block编号,遍历Block内文件确定有效文件,并申请空闲Flash存储空间转移所述有效文件形成第三新文件,保留所述第三新文件的头部原文件地址字段,然后对Block格式化;
擦除经转移所述有效文件后的Block,更新空闲Block的尾部;
当释放的Block达到设定的阈值时,则结束垃圾回收过程。
9.根据权利要求8所述的方法,其特征在于,所述对Block格式化包括:
由记录的当前最后一个空闲Block序号开始进行编号。
新生成的Block头部序号依次排列,并按次序指向下个空闲Block位置。
当完成一个Block处理后让出CPU使得文件可以写入。
10.一种基于Flash的文件保存系统,其特征在于,包括:
判断单元,用于获取待保存文件的文件名,判断在内存内根据有效文件的头部Flash地址建立的有效文件地址索引表内是否存在所述文件名;
修改文件单元,用于在有效文件地址索引表中存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第一新文件,并且将所述第一新文件的头部原文件地址字段指向原文件的Flash地址,将原文件状态标记为删除,用以修改文件;
新建文件单元,用于在有效文件地址索引表中不存在所述文件名,则申请空闲Flash存储空间写入待保存文件形成第二新文件,并且保留所述第二新文件的头部原文件地址字段,用以新建文件。
11.根据权利要求10所述的系统,其特征在于,所述系统还包括:
初始化单元,用于初始化储存系统;
检测单元,用于检测当前Block是否能够存储部分文件、或当前Block是否被占满、或当前可用Block是否小于阈值;
断电启动单元,用于在所述申请空闲Flash存储空间写入待保存文件形成第一新文件时发生断电,则系统重启后使用原文件,并将所述第一新文件标记为删除、或者在所述申请空闲Flash存储空间写入待保存文件形成第一新文件之前,将原文件标记为删除之前发生断电,则系统重启后使用第一新文件,继续将原文件标记为删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711206547.7A CN107818269B (zh) | 2017-11-27 | 2017-11-27 | 一种基于Flash的文件保存方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711206547.7A CN107818269B (zh) | 2017-11-27 | 2017-11-27 | 一种基于Flash的文件保存方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818269A true CN107818269A (zh) | 2018-03-20 |
CN107818269B CN107818269B (zh) | 2020-03-17 |
Family
ID=61610320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711206547.7A Active CN107818269B (zh) | 2017-11-27 | 2017-11-27 | 一种基于Flash的文件保存方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107818269B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271100A (zh) * | 2018-08-28 | 2019-01-25 | 深圳智芯数据服务有限公司 | 一种Flash存储器数据存储方法和读取方法 |
CN109947708A (zh) * | 2019-03-27 | 2019-06-28 | 芜湖岭上信息科技有限公司 | 一种文件保存方法和系统 |
CN110007856A (zh) * | 2019-03-05 | 2019-07-12 | 四川九洲电器集团有限责任公司 | 数据存储方法、装置及闪存芯片 |
CN111324288A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN111324284A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN111581018A (zh) * | 2020-04-20 | 2020-08-25 | 深圳震有科技股份有限公司 | 一种数据恢复方法、智能终端及存储介质 |
CN111597125A (zh) * | 2020-05-09 | 2020-08-28 | 重庆大学 | 一种非易失内存文件系统索引节点的磨损均衡方法及系统 |
CN114327246A (zh) * | 2020-10-12 | 2022-04-12 | 深圳市爱图仕影像器材有限公司 | 存储介质内数据存储方法、存储介质及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577121A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件存取方法 |
CN104317732A (zh) * | 2014-10-27 | 2015-01-28 | 上海动联信息技术股份有限公司 | 一种大容量Flash芯片的空间管理方法 |
-
2017
- 2017-11-27 CN CN201711206547.7A patent/CN107818269B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577121A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件存取方法 |
CN104317732A (zh) * | 2014-10-27 | 2015-01-28 | 上海动联信息技术股份有限公司 | 一种大容量Flash芯片的空间管理方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271100A (zh) * | 2018-08-28 | 2019-01-25 | 深圳智芯数据服务有限公司 | 一种Flash存储器数据存储方法和读取方法 |
CN111324284B (zh) * | 2018-12-14 | 2024-02-23 | 兆易创新科技集团股份有限公司 | 一种存储器 |
CN111324288A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN111324284A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN111324288B (zh) * | 2018-12-14 | 2024-02-23 | 兆易创新科技集团股份有限公司 | 一种存储器 |
CN110007856A (zh) * | 2019-03-05 | 2019-07-12 | 四川九洲电器集团有限责任公司 | 数据存储方法、装置及闪存芯片 |
CN110007856B (zh) * | 2019-03-05 | 2020-08-04 | 四川九洲电器集团有限责任公司 | 数据存储方法、装置及闪存芯片 |
CN109947708A (zh) * | 2019-03-27 | 2019-06-28 | 芜湖岭上信息科技有限公司 | 一种文件保存方法和系统 |
CN111581018A (zh) * | 2020-04-20 | 2020-08-25 | 深圳震有科技股份有限公司 | 一种数据恢复方法、智能终端及存储介质 |
CN111581018B (zh) * | 2020-04-20 | 2023-08-01 | 深圳震有科技股份有限公司 | 一种数据恢复方法、智能终端及存储介质 |
CN111597125B (zh) * | 2020-05-09 | 2023-04-25 | 重庆大学 | 一种非易失内存文件系统索引节点的磨损均衡方法及系统 |
CN111597125A (zh) * | 2020-05-09 | 2020-08-28 | 重庆大学 | 一种非易失内存文件系统索引节点的磨损均衡方法及系统 |
CN114327246A (zh) * | 2020-10-12 | 2022-04-12 | 深圳市爱图仕影像器材有限公司 | 存储介质内数据存储方法、存储介质及计算机设备 |
CN114327246B (zh) * | 2020-10-12 | 2024-02-27 | 深圳爱图仕创新科技股份有限公司 | 存储介质内数据存储方法、存储介质及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107818269B (zh) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107818269A (zh) | 一种基于Flash的文件保存方法及系统 | |
US6839823B1 (en) | Increased reliability of data stored on flash memory in applications sensitive to power-loss | |
US7979626B2 (en) | Flash recovery employing transaction log | |
CN104298610B (zh) | 资料储存系统及其管理方法 | |
US6381176B1 (en) | Method of driving remapping in flash memory and flash memory architecture suitable therefor | |
CN107943414A (zh) | 嵌入式Linux的文件系统分区及数据读写方法 | |
TW202011195A (zh) | 映射表更新方法 | |
CN101470632B (zh) | 共享内存管理方法及装置 | |
CN110399310B (zh) | 一种存储空间的回收方法及装置 | |
CN106484323A (zh) | 一种固态存储的损耗均衡方法及系统 | |
EP2058737A1 (en) | Memory device, memory management method, and program | |
KR20080037283A (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
KR20120129895A (ko) | 플래시 메모리 상에 소거 성능을 개선하기 위한 소거 명령 캐시 | |
CN109710541B (zh) | 针对NAND Flash主控芯片Greedy垃圾回收的优化方法 | |
CN109669889B (zh) | 一种轻量型Nor Flash闪存控制方法和装置 | |
US8225060B2 (en) | Data de-duplication by predicting the locations of sub-blocks within the repository | |
CN104516959A (zh) | 一种管理数据库日志的方法及装置 | |
CN115269451B (zh) | 闪存垃圾回收方法、装置及可读存储介质 | |
CN111324549B (zh) | 一种存储器及其控制方法和装置 | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
US20150205538A1 (en) | Storage apparatus and method for selecting storage area where data is written | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
CN111324289B (zh) | 一种存储器 | |
CN105677244B (zh) | 一种降低tlc闪存的固态硬盘写放大的方法 | |
JP2004240660A (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 |