闪存文件系统及方法 【技术领域】
本发明涉及一种闪存文件系统及方法,特别是一种可平衡闪存存储单元损耗的闪存文件系统及方法。
【背景技术】
目前的个人便携式电子产品主要采用两种方式来储存用户数据,一种是用随机储存器(Random Access Memory,RAM)存储,另外一种就是使用闪存(Flash Memory)来储存。使用随机储存器存储数据的优点在于其价格便宜,使用方便且读取速度快。但是,随机储存器的最大不便之处在于它只能在保持供电的状态下才能保存数据,否则数据将会丢失,由于再好的系统也无法保证供电系统永远正常,因此,在电池没电的时候,随机储存器中的数据将全部丢失,无法保证用户数据的安全。
闪存是最常见的一种非挥发性内存(Non-Volatile Memory,NVM),其组件集成度高,在使用闪存保存数据时,可避免系统在电池没电的情况下已存储的用户数据丢失。但是,由于闪存本身随机读、按扇区写和按块删除的特点,在突然掉电地瞬间,如果系统正在执行闪存块的擦除操作,则原来块上的内容也将全部丢失,如果系统是采用FAT的文件系统,在掉电的瞬间系统恰好正在更新文件分配表或ROOT表,则闪存上的数据可能全部丢失。
如中国专利申请第01119887.7号,其将闪存中的每一个物理块设置为一个管理单元,每个管理单元设有文件块首控信息区、数据区和文件块状态信息区,每一个文件由一个或一个以上的管理单元组成。由于其存储文件的方法中没有对闪存存储单元的损耗平衡解决方案,可能会导致闪存的局部坏块过多而影响其使用寿命。
因此,如何提供一种存储文件安全,且使用寿命长的闪存文件系统及其管理方法,即为本发明所要解决的课题。
【发明内容】
本发明的目的在于提供一种能够平衡闪存存储单元的损耗,且提供闪存文件掉电保护的闪存文件系统及方法。
本发明的目的是通过以下技术方案实现的:本发明提供一种闪存文件系统,其文件构成为一文件节点列表,上述文件节点列表中的每一节点都设有节点头信息区、数据区和节点状态信息区。其中上述节点头信息区用于保存节点头信息,上述节点头信息至少包括有节点类型、节点长度及一个节点头循环冗余校验信息,上述数据区用于保存文件数据,上述节点状态信息区用于保存节点状态信息,上述节点状态信息至少包括有节点版本次数、损坏标志、可用标志、垃圾收集标志、节点链接信息和备用区信息,其中上述节点链接信息用来保证上述等文件节点逻辑上连结的正确性,而系统每对一文件节点进行一次写入或擦除操作,上述节点的节点版本次数就会被加一,且系统都是从版本次数较小的文件节点开始向闪存写入数据。
本发明另提供一种闪存文件系统管理方法,系统在重组文件时,首先扫描整个闪存,找到需要修改的文件节点所在的区域,然后计算需要修改处的文件节点位置偏移量,而后利用上述位置偏移量来截断文件,再通过系统指令在上述处进行修改或删除文件数据。所有对文件的重组只是逻辑上截断文件而对文件进行修改或删除,使得对文件修改的逻辑上的位置是对的,实际上新数据在写入前,系统会首先扫描和编排那些离散的空白文件节点,然后将新数据写入到那些版本次数较小的空白文件节点上,存储旧文件数据的文件节点会被标上垃圾收集标志信息,一段适当时间之后这些文件节点上的旧数据将会被系统删除,所有经写入或擦除过的文件节点的节点版本次数加一。因此,当系统正在往闪存芯片中写入数据时掉电,闪存文件中的新数据和旧数据将都不会丢失,这样就保证了闪存中文件的安全性。由于系统都是从版本次数较小的文件节点开始写入数据,故可以保证每一文件节点的写入或擦除操作次数基本相当,从而延长了整个闪存的使用寿命。
由于采用了上述技术方案,本发明闪存文件系统具有存储文件安全,且使用寿命长的功效。
下面参照附图,结合实施例对本发明作进一步描述。
【附图说明】
图1是本发明闪存文件系统的文件结构设置示意图。
图2是第一图中节点头信息的结构设置示意图。
图3是第一图中节点状态信息的结构设置示意图。
图4是本发明闪存文件系统及方法的文件重组流程图。
图5是本发明闪存文件系统及方法的文件重组过程中向闪存写入新数据的流程图。
【具体实施方式】
请参阅图1至图3,其为本发明闪存文件系统的文件结构设置与文件节点设置示意图。上述闪存文件系统中的文件构成为一文件节点列表,其中,每一个节点都设有节点头信息区10、数据区20和节点状态信息区30。上述节点头信息区10用于保存节点头信息,上述节点头信息至少包括有节点类型11、节点长度12及一个节点头循环冗余校验信息13,数据区20用于保存文件数据,节点状态信息区30用于保存节点状态信息,上述节点状态信息至少包括有节点版本次数31、损坏标志32、可用标志33、垃圾收集标志34、节点链接信息35和备用区信息36。
上述闪存文件系统中的每一文件都是由包含上述特征的文件节点的列表构成,其由上述文件节点链接信息35来保证这些文件节点逻辑上连结的正确性,所有的文件节点还包括一个节点版本次数信息,每对上述文件节点进行一次写入或擦除,系统就会将其版本次数加一。请参阅图4,为本发明闪存文件系统及方法的文件重组流程图。重组文件时,系统首先扫描整个闪存(步骤110),找到需要修改的文件节点所在的区域(步骤120),然后计算需要修改处的文件节点位置偏移量(步骤130),而后利用上述位置偏移量来截断文件(步骤140),再通过系统指令在上述处进行修改或删除文件数据(步骤150)。
所有对文件的重组只是逻辑上截断文件而对文件进行修改或删除,使得对文件修改的逻辑上的位置是对的,请参阅图5,为本发明闪存文件系统及方法的文件重组过程中向闪存写入新数据的流程图。实际上新数据在写入前,系统会首先扫描和编排那些离散的空白文件节点(步骤210),然后将新数据写入到那些版本次数较小的空白文件节点上(步骤220),存储旧文件数据的文件节点会被标上垃圾收集标志信息(步骤230),一段适当时间之后这些文件节点上的旧数据将会被系统删除(步骤240),所有经写入或擦除过的文件节点的节点版本次数加一(步骤250)。因此,当系统正在往闪存芯片中写入数据时掉电,闪存文件中的新数据和旧数据将都不会丢失,这样就保证了闪存中文件的安全性。由于系统都是从版本次数较小的文件节点开始写入数据,故可以保证每一文件节点的写入或擦除操作次数基本相当,从而延长了整个闪存的使用寿命。