一种文件索引的存储方法及文件系统的制作方法

文档序号:6439872阅读:384来源:国知局
专利名称:一种文件索引的存储方法及文件系统的制作方法
技术领域
本发明属于存储技术领域,尤其涉及一种文件索引的存储方法及文件系统。
背景技术
NAND FLASH作为一种广泛应用的存储体,它的一大弱点就是在使用中动态产生坏块。因此,避免坏块的产生,使存储数据的丢失最小,是与NAND FLASH对应的软件系统必须要考虑的问题。目前广泛使用的文件系统中,一种是JFFS和YAFFS类文件系统,将文件索引随机存储在NAND FLASH中,由于文件索引在NAND FLASH中以无关联的方式存放,当产生某个坏块时,不影响其它目录文件,但是,在文件系统挂载时,需要扫描整个NAND FLASH,导致挂载时间过长。另外一种是对JFFS和YAFFS类文件系统进行改进,将文件索引以链表方式存放, 文件系统挂载过程中按照索引链表加载文件系统,这种方式效率较高,但是,当坏块刚好产生在链表上的某个节点时,会破坏后续所有的目录文件,若增加备份链表,则会增大各个方面的开销。综上所述,现有技术提供的文件索引在NAND FLASH中的存储方法,使得NAND FLASH的存储效能不能得到充分发挥。

发明内容
本发明的目的在于提供一种文件索引的存储方法,旨在解决现有提供的文件索引的存储方法,使得NAND FLASH的存储效能不能得到充分发挥的问题。本发明是这样实现的,一种文件索引的存储方法,所述方法包括将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间;按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分,其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索弓I头数据,文件数据区用于存储文件中除文件索引头以外的普通数据;文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。本发明的另一目的在于提供一种文件系统,所述文件系统包括配对单元,用于将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间;存储空间划分单元,用于按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分,其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索引头数据,文件数据区用于存储文件中除文件索引头以外的普通数据;
索引存储单元,用于文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。在本发明中,将关键字和索引存储空间进行关联,并将NAND FLASH分成关键字区, 索引存储空间区和文件数据区三部分,存储文件索引头数据在与关键字区中的关键字关联的空闲索引存储空间中,使得文件索引数据的存储可以兼具随机散存的数据独立性,同时具有链式存储的可索引性,很好的优化和提高了 NAND FLASH类存储体的存储效能。


图1是本发明实施例提供的文件索引的存储方法的实现流程图;图2是本发明实施例提供的关键字、文件索引数据在NAND FLASH中的具体存储位置示意图;图3是本发明实施例提供的文件系统的结构框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。在本发明实施例中,通过借鉴C++标准算法库中MAP数据结构,将关键字KEY与一组索引存储空间进行关联,这一组索引存储空间是通过对关键字KEY根据预制的空间生成函数得到,空间生成函数中的参数可以根据实际动态选择。可以存储文件索引头数据在与关键字关联的空闲索引存储空间中,使得文件索引数据的存储可以兼具随机散存的数据独立性,同时具有链式存储的可索引性,很好的优化和提高了 NAND FLASH类存储体的存储效能。图1是本发明实施例一提供的文件索引的存储方法的实现流程图,详述如下在步骤SlOl中,将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间。本发明提供的文件系统,关键字KEY的产生可以通过下述公式产生f (χ) = A*x其中,f (χ)表示关键字KEY的值,A为任意的自然数,χ为整数,比如,可以取A为 l,x为1,得到关键字KEY的值为1,也可以取A为6,x为1,得到关键字KEY的值为6。与关键字KEY关联的索引存储空间可以通过预制的空间生成函数来生成。所述预制的空间生成函数可以是线性函数,也可以是非线性的函数,具体可以根据实际情况自行配置,只要通过该空间生成函数可以有规律生成与一个关键字对应的一组索引存储空间即可。本实施例中以线性函数为例来进行说明。该线性函数的公式如下所述f (χ) = A*x+B其中,f(x)表示索引空间;A为任意的自然数;χ表示关键字KEY的值,为整数,B 为任意的自然数,比如,可以取A为10、x为1、B为1,得到索引空间的值为11 ;也可以取A 为20、x为1、B为1,得到关键字KEY的值为索引空间的值为21。具体的关键字KEY与索引存储空间的对应关系如图2所示,从图2中可以看出,关键字KEY为1时,对应的一组索引存储空间分别为11、21、31和41 ;关键字KEY为6时,对应的一组索引存储空间分别为16、 26,36和46。在将关键字与关联对象配对时,文件系统根据实际动态从多个预制的空间生成函数中选择其中一个来进行关键字与关联对象之间的配对。在步骤S102中,按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分,其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索引头数据,文件数据区用于存储文件中除文件索引头以外的普通数据。本发明提供的文件系统,按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分。其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索引头数据,文件数据区用于存储文件中除文件索引头以外的普通数据。关键字区是NAND FLASH中以起始地址开始的、预先设定大小的连续存储空间,关键字在NAND FLASH中的具体存储位置如图2所示。在步骤S103中,文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。本发明提供的文件系统,在向NAND FLASH中存储数据时,首先执行步骤1、判断所述数据是否是文件索引头数据,如果是文件索引头数据,则依次读取NAND FLASH关键字区中存储的关键字,并执行后续的步骤2和步骤3,否则,按照原有的文件系统自身的算法存储所述数据在NANDFLASH的文件数据区中的相应文件数据存储空间中。步骤2、根据预制的空间生成函数,查找与所述关键字对应的一组空闲索引存储空间,所述空间生成函数表示关键字与索引存储空间的对应关系。在存储文件索引数据时,本发明提供的文件系统依次读取NANDFLASH关键字区中存储的关键字,并根据预制的空间生成函数,查找与所述关键字对应的一组空闲索引存储空间,当查找到与所述关键字对应的空闲索引存储空间时,则存储文件索引数据在所述空闲索引存储空间中。其中,所述预制的空间生成函数可以是线性函数,也可以是非线性的函数,具体可以根据实际情况自行配置,只要通过该空间生成函数可以有规律生成与一个关键字对应的一组索引存储空间即可。本实施例中,预制的线性函数的公式为f(X) =A*x+B, 具体的介绍请参见步骤SlOl。步骤3、存储文件索引数据在所述空闲索引存储空间中。当文件系统查找到与关键字KEY对应的空闲索引存储空间后,就可以将文件索引数据存储在这一组空闲索引存储空间中。当后续文件系统需要读取NAND FLASH中存储的数据时,就可以先读取关键字区存储的关键字KEY,再用与步骤2中的预制的空间生成函数计算出关键字KEY对应的一组索引存储空间,从这些索引存储空间中读取有效文件索引数据,再根据所读取的有效文件索引数据组织文件目录,通过文件目录即可得到整个文件系统架构。另外,作为本发明的另一个优选实施例,在存储文件索引数据时,当出现已有的关键字KEY所对应的索引存储空间不能够存储所有的文件索引数据时,可以生成新的关键字,在新的关键字对应的索引存储空间继续存储文件索引数据,比如,当关键字区只有一个关键字KEY,并且该关键字KEY所对应的空闲索引存储空间不能够存储所有的文件索引数据时,则可以生成第二个关键字,在第二个关键字对应的索引存储空间继续存储文件索引数据,以此类推,可以生成第三个、第四个关键字等等。该步骤可以在步骤S103之后执行, 具体包括在步骤S104中,判断所述关键字对应的空闲索引存储空间是否足够存储文件索引头数据,如果是,则继续在所述空闲索引存储空间存储文件索引数据,如果否,则执行步骤 S105。在步骤S105中,生成新的关键字。当文件系统判断出一个关键字对应的当前空闲索引存储空间不够用时,则生成新的关键字。具体的生成新的关键字的步骤详见步骤S101。在步骤S106中,在NAND FLASH关键字区存储所述新的关键字。在步骤S107中,根据预制的线性函数生成与所述新的关键字对应的一组索引存储空间。通过本发明优选实施例,解决了预先分配的索引存储空间不足,导致文件索引数据不能完全存储,造成数据丢失的问题。本发明实施例,通过借鉴C++标准算法库中MAP数据结构,将关键字KEY与一组索引存储空间进行关联,存储文件索引数据在与关键字关联的空闲索引存储空间中,使得文件索引数据的存储可以兼具随机散存的数据独立性,同时具有链式存储的可索引性,很好的优化和提高了 NANDFLASH类存储体的存储效能。适用于NAND FLASH及类似运行中会动态产生坏块的存储体中,也可以用于改进已经存在的各种主流文件系统,如JFFAS、YAFFS等中,也可以适用在各种自行开发的文件系统中的存储算法部分。图3是本发明实施例提供的文件系统的结构框图,为了便于说明,仅示出了本发明实施例相关的部分。在本发明实施例中,该文件系统包括配对单元31、存储空间划分单元32和索引存储单元33。其中,配对单元31用于将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间,所述索引存储空间是对所述关键字根据预制的空间生成函数进行计算得到的;存储空间划分单元32用于按所存储的数据的数据类型,将NANDFLASH分成关键字区,索引存储空间区和文件数据区三部分,其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索引头数据,文件数据区用于存储文件中除文件索引头以外的普通数据;索引存储单元33用于文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。其中,索引存储单元33包括关键字读取模块、空闲空间查找模块和索引存储模块。关键字读取模块用于在存储文件索引数据时,读取NAND FLASH关键字区中存储的关键字;空闲空间查找模块用于根据预制的空间生成函数,查找与所述关键字读取模块读取的关键字对应的一组空闲索引存储空间,所述空间生成函数表示关键字与索引存储空间的对应关系;
索引存储模块用于存储文件索引数据在所述空闲空间查找模块查找到的空闲索引存储空间中。另外,作为本发明的一个优选实施例,所述系统还包括新关键字生成单元34、新关键字存储单元35和新索引存储空间生成单元36。新关键字生成单元34用于当一个关键字对应的当前空闲索引存储空间不够存储文件索引头数据时,则生成新的关键字;新关键字存储单元35用于在NAND FLASH的关键字区存储所述新的关键字;新索引存储空间生成单元36用于按照预制的空间生成函数生成与所述新的关键字对应的一组索引存储空间。此外,所述系统还包括索引头判断单元,该索引头判断单元用于文件系统在存储数据时,判断所述数据是否是文件索引头数据,如果是,则执行通过关键字区的关键字查到当前空闲索引存储空间进行存储的步骤;如果否,则存储所述数据在NAND FLASH的文件数据区中的相应文件数据存储空间中。另外,所述系统还包括函数选择单元,该单元用于在将关键字与关联对象配对时,文件系统根据实际动态从多个预制的空间生成函数中选择其中一个来进行关键字与关联对象之间的配对。具体详细介绍请参照图1所示方法实施例,在此不再赘述。本发明实施例,将关键字和索引存储空间进行关联,存储文件索引头数据在与关键字关联的索引存储空间中,使得文件索引数据的存储可以兼具随机散存的数据独立性, 同时具有链式存储的可索引性,很好的优化和提高了 NAND FLASH类存储体的存储效能。另夕卜,在存储文件索引头数据时,当出现现有的关键字KEY所对应的索引存储空间不能够存储所有的文件索引数据时,可以动态生成新的关键字,在后续的生成的关键字对应的索引存储空间存储文件索引数据,不会造成文件索引数据的丢失。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种文件索引的存储方法,其特征在于,所述方法包括将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间;按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分,其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索弓丨头数据,文件数据区用于存储文件中除文件索引头以外的普通数据;文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。
2.如权利要求1所述的方法,其特征在于,在所述文件系统在存储文件索引数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储的步骤之后,所述方法还包括当所述关键字对应的空闲索引存储空间不够存储文件索引头数据时,则生成新的关键字;在NAND FLASH的关键字区存储所述新的关键字;按照预制的空间生成函数生成与所述新的关键字对应的一组索引存储空间。
3.如权利要求1所述的方法,其特征在于,在所述文件系统在存储文件索引头数据时, 通过关键字区的关键字查到当前空闲索引存储空间进行存储的步骤之前,所述方法还包括文件系统在存储数据时,判断所述数据是否是文件索引头数据;如果是,则执行通过关键字区的关键字查到当前空闲索引存储空间进行存储的步骤;如果否,则存储所述数据在NAND FLASH的文件数据区中的相应文件数据存储空间中。
4.如权利要求1所述的方法,其特征在于,所述预制的空间生成函数包括多个,在将关键字与关联对象配对时,文件系统根据实际动态从中选择其中一个来进行关键字与关联对象之间的配对。
5.如权利要求1所述的方法,其特征在于,所述文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储的步骤具体包括读取NAND FLASH关键字区中存储的关键字;根据预制的空间生成函数,查找与所述关键字对应的一组空闲索引存储空间,所述空间生成函数表示关键字与索引存储空间的对应关系;存储文件索引数据在所述空闲索引存储空间中。
6.一种文件系统,其特征在于,所述文件系统包括配对单元,用于将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间;存储空间划分单元,用于按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分,其中,关键字区用于存储生成的关键字KEY,索引存储空间区用于存储文件索引头数据,文件数据区用于存储文件中除文件索引头以外的普通数据;索引存储单元,用于文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。
7.如权利要求6所述的文件系统,其特征在于,所述系统还包括新关键字生成单元,用于当一个关键字对应的空闲索引存储空间不够存储文件索引头数据时,则生成新的关键字;新关键字存储单元,用于在NAND FLASH的关键字区存储所述新的关键字; 新索引存储空间生成单元,用于按照预制的空间生成函数生成与所述新的关键字对应的一组索引存储空间。
8.如权利要求6所述的文件系统,其特征在于,所述系统还包括索引头判断单元,用于文件系统在存储数据时,判断所述数据是否是文件索引头数据, 如果是,则执行通过关键字区的关键字查到当前空闲索引存储空间进行存储的步骤;如果否,则存储所述数据在NAND FLASH的文件数据区中的相应文件数据存储空间中。
9.如权利要求6所述的文件系统,其特征在于,所述系统还包括函数选择单元,用于在将关键字与关联对象配对时,文件系统根据实际动态从多个预制的空间生成函数中选择其中一个来进行关键字与关联对象之间的配对。
10.如权利要求6所述的文件系统,其特征在于,所述索引存储单元包括关键字读取模块,用于在存储文件索引数据时,读取NAND FLASH关键字区中存储的关键字;空闲空间查找模块,用于根据预制的空间生成函数,查找与所述关键字对应的一组空闲索引存储空间,所述空间生成函数表示关键字与索引存储空间的对应关系; 索引存储模块,用于存储文件索引数据在所述空闲索引存储空间中。
全文摘要
本发明适用于存储技术领域,提供了一种文件索引的存储方法及文件系统,所述方法包括将关键字与关联对象配对,所述关联对象是与所述关键字对应的一组索引存储空间;按所存储的数据的数据类型,将NAND FLASH分成关键字区,索引存储空间区和文件数据区三部分;文件系统在存储文件索引头数据时,通过关键字区的关键字查到当前空闲索引存储空间进行存储。本发明,将关键字和索引存储空间进行关联,存储文件索引数据在与关键字关联的索引存储空间中,使得文件索引数据的存储可以兼具随机散存的数据独立性,同时具有链式存储的可索引性,很好的优化和提高了NAND FLASH类存储体的存储效能。
文档编号G06F17/30GK102521312SQ20111039370
公开日2012年6月27日 申请日期2011年12月1日 优先权日2011年12月1日
发明者何运衡, 卞凤来 申请人:深圳市航天泰瑞捷电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1