CN101799820A - 闪存、文件***挂载方法及装置、数据管理方法及装置 - Google Patents
闪存、文件***挂载方法及装置、数据管理方法及装置 Download PDFInfo
- Publication number
- CN101799820A CN101799820A CN201010111465A CN201010111465A CN101799820A CN 101799820 A CN101799820 A CN 101799820A CN 201010111465 A CN201010111465 A CN 201010111465A CN 201010111465 A CN201010111465 A CN 201010111465A CN 101799820 A CN101799820 A CN 101799820A
- Authority
- CN
- China
- Prior art keywords
- back end
- index node
- node
- management
- piece
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种闪存中数据管理的方法,利用空间换时间的策略,在Flash中创建管理节点以存储数据节点的位置信息,同时,本发明还提供了一种文件***挂载的方法、闪存及对应的数据管理装置和***挂载装置,使得在进行JFFS文件***挂载时,可以直接从Flash块中的管理节点中直接读取到数据节点的地址信息,根据读取到的所述地址信息建立文件树,完成挂载,从而避免***挂载时扫描整个Flash,以寻找到各数据节点并从中读取出地址信息,缩短了挂载过程所经历的时间,提高了JFFS文件***挂载的速度,减少***初始化时用户等待时间。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种闪存、文件***挂载方法及装置、闪存数据管理方法及装置。
背景技术
JFFS(Journalling Flash File System,闪存设备日志型文件***)文件***是最初由瑞典的Axis Communication AB公司设计的一种日志型文件***,并在linux下实现了该文件***。
JFFS文件***不存在类似超级块的这种结构,JFFS文件***以节点的方式来管理整个文件***上的数据。保存在Flash闪存上的节点又称为数据实体,JFFS在Flash上只有一种类型的数据实体jffs_raw_inode(Flash上保存数据的节点,简称数据节点),它包含文件的管理信息及描述文件在文件***中的位置。而真正的数据信息就保存在jffs_raw_inode节点的后面,大部分管理的信息都是在***挂载之后建立起来的。
目前这种实现策略的缺点是在每次挂载整个文件***时,就需要扫描整个Flash并在RAM中逐步建立索引机制,因此挂载***时间与节点的数量成正比,这在存储器规模较小时似乎还是可以接受的,但当存储器规模大到一定程度时,尤其当它应用到对实时性要求较高的嵌入式***中时,会成为嵌入式***的明显缺陷。
发明内容
鉴于上述现有技术所存在的问题,本发明实施例提供了一种闪存、文件***挂载方法及装置、闪存数据管理的方法及对应的装置,其可缩短挂载过程所经历的时间,提高JFFS文件***挂载的速度,减少***初始化时用户等待时间。
为了达到上述技术效果,本发明实施例提供了一种闪存中数据管理的方法,包括:在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。
相应的,本发明实施例还提供了一种文件***挂载方法,包括:
依次读取闪存中每个块,检测该块中是否存在管理索引节点,得出检测结果,所述块中的数据存储在数据节点中;
在所述检测结果为是时,根据所述管理索引节点找到索引节点,并获取所述索引节点中存储的数据节点的地址信息,所述索引节点与数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
根据获取的数据节点的地址信息在内存中建立文件树。
相应的,本发明实施例还提供了一种用于闪存的数据管理装置,包括管理节点创建单元,用于在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点;所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。
相应的,本发明实施例还提供了一种闪存,包括数据节点和与数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。
相应的,本发明实施例还提供了一种文件***挂载装置,包括:
检测单元,用于依次读取闪存中每个块的数据,且在读取某块中的数据时,检测该块中是否存在管理索引节点,得出检测结果,所述块中的数据存储在数据节点中;
第一获取单元,与所述检测单元相连,用于在所述检测单元得出的检测结果为是时,根据所述管理索引节点找到索引节点,并获取所述索引节点中存储的数据节点的地址信息,所述索引节点与数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
文件树建立单元,与所述第一获取单元相连,用于根据获取的数据节点的地址信息在内存中建立文件树。
实施本发明实施例,利用空间换时间的策略,在Flash的各个块中,预先创建与存储的数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址,使得下次挂载时,可以直接从管理节点中读取挂载所需要的数据节点的地址信息,根据读取到的数据节点的地址信息建立文件树,完成挂载,从而避免扫描整个Flash,以寻找到各数据节点并从中读取出地址信息,缩短了挂载过程所经历的时间,提高了JFFS文件***挂载的速度,减少***初始化时用户等待时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中文件***挂载方法的流程图;
图2是本发明实施例中闪存中数据管理方法中,在往闪存中写入数据节点时创建管理节点的流程图;
图3是创建管理节点后,Flash中数据节点及管理节点的存放位置关系图;
图4是本发明文件***挂载方法的另一实施例流程图;
图5是本发明实施例中数据写入装置结构示意图;
图6是本发明实施例中文件***挂载装置的结构示意图;
图7是本发明另一实施例中文件***挂载装置的结构示意图。
具体实施方式
本发明实施例提供了一种JFFS文件写入闪存的方法、JFFS文件***挂载方法及对应的装置,利用空间换时间的策略,将数据节点的位置信息通过管理节点写入Flash,使得下次挂载时,可以直接从Flash的块中的管理节点中直接读取到数据节点的地址信息,根据读取到的数据节点的地址信息建立文件树,完成挂载,从而避免扫描整个Flash,以寻找到各数据节点并从中读取出地址信息,缩短了挂载过程所经历的时间,提高了JFFS文件***挂载的速度,减少***初始化时用户等待时间。
通常Flash由多个块组成,在本发明实施例中设计为在每个块中创建管理节点以保存该块中所有已写入的数据节点(jffs_raw_inode)的相关信息,所述管理节点包括索引节点jffs_raw_snode和管理索引节点jffs_raw_blockend,所述索引节点jffs_raw_snode结构主要存储数据节点jffs_raw_inode在该块中的地址信息,如果该块中有多个数据节点则用多个索引节点结构存储,每个索引节点结构存储一个数据节点的地址信息,这些索引节点构成一个链表,所述管理索引节点jffs_raw_blockend结构位于所述索引节点结构之后,即位于该块的最后,该结构记录了第一个索引节点在该块中的偏移地址,用于管理前面的索引节点结构。
下面结合附图详细说明本发明的实施例。
本发明实施例首先提出了一种闪存中数据管理的方法,在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址,以便在***挂载时,能直接从管理节点中读取挂载所需要的数据节点的地址信息,避免扫描整个Flash,从而缩短挂载过程所经历的时间,提高JFFS文件***挂载的速度,减少***初始化时用户等待时间。所提出的闪存中数据管理的方法是为本发明实施例中提出的***挂载方法做准备。所述管理节点的创建方式有多种,可以是往闪存中写入数据时创建,也可以是在扫描读取闪存中数据时创建,方式不限,实际应用时,可将管理节点创建于闪存各块末尾,方便挂载时查找。
闪存中创建了管理节点后,就可以根据本发明实施例提出的文件***挂载方法快速实现挂载***文件,下面将结合图1对本发明实施例中文件***挂载方法进行说明。
参见图1,为本发明实施例中文件***挂载方法的流程图,主要运用于JFFS文件***的挂载,利用该方法挂载JFFS文件***可以避免扫描整个Flash,从而缩短挂载过程所经历的时间,具体包括如下步骤:
步骤101:依次读取闪存中每个块的数据,在读取某块中的数据时,检测该块中是否存在管理索引节点,得出检测结果,所述块中的数据存储在数据节点中;
步骤102:在所述检测结果为是时,根据所述管理索引节点找到索引节点,并获取所述索引节点中存储的数据节点的地址信息,所述索引节点与数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
在所述检测结果为否时,通过现有技术方案对Flash中该块上的所有数据节点进行扫描,并获取数据节点的地址信息,本步骤可视为对现有技术的一个兼容步骤。
在所述检测结果为是时,在本发明实施例中,还可以包括一个校验步骤,当设计了校验步骤时,校验步骤具体可为下面步骤:
a:校验管理索引节点数据是否完整,若校验出管理索引节点数据完整,则根据所述管理索引节点找到索引节点;
b:校验索引节点数据是否完整,若校验出索引节点数据完整,则获取所述索引节点中存储的数据节点的地址信息;
c:当校验到管理索引节点数据或索引节点数据不完整时,扫描该块上的所有数据节点,并获取数据节点的地址信息,校验到管理索引节点数据或索引节点数据不完整可能是在保存。
步骤103:根据获取的数据节点的地址信息在内存中建立文件树,数据节点地址信息的获取可以是上面102步骤中所说的在检测结果为是时,通过管理节点获取,也可以是在检测结果为否时,通过扫描整个Flash上的所有数据节点获取。
上面,用原理的方式介绍本发明实施例中闪存中数据管理的方法和文件***挂载的方法,下面结合图2、图3和图4详细介绍本发明实施例中闪存中数据管理的方法和JFFS文件***挂载的方法。
下面结合附图2介绍本发明实施例中一种管理节点的创建方式,该创建方式是在往闪存中写入数据节点时创建所述管理节点,本实施例中的管理节点创建方式为在往闪存中写入数据节点的同时,在内存中生成管理节点后直接将其写入闪存中,当然,本创建方式为一种具体的创建方式举例,创建方式可以有多种,最终实现的目的就是在闪存的各个块中创建与该块中存储的数据节点相对应的管理节点。
参见图2,为本发明实施例中JFFS文件写入闪存时在闪存中创建管理节点的方法流程图,本方法主要是在闪存的一个块中,先写入数据节点,在块中通过写入的方式创建管理节点,管理节点可以创建在块的任意位置,在本实施例中,设计为将管理节点写入到块的末尾位置,以便挂载时,***能更好的读取管理节点内的信息。在图2中,jffs_raw_inode为数据节点,它包含文件的管理信息及文件在文件***中的位置,真正的数据信息就保存在jffs_raw_inode节点的后面;jffs_raw_snode为本发明实施例中管理节点中的索引节点,用于记载jffs_raw_inode在Flash相关块中的重要信息,所述重要信息主要指jffs_raw_inode在Flash相关块中的偏移地址,如果一个Flash的一个块中保存有多个jffs_raw_inode,则用多个索引节点结构存储所述jffs_raw_inode的偏移地址,每个索引节点结构存储一个jffs_raw_inode的偏移地址信息,这些索引节点构成一个链表;jffs_raw_blockend为本发明实施例中管理索引节点,存储于Flash块的最末位置,该结构用于存储记录索引节点构成的链表中第一个索引节点在该块中的偏移地址,本实施例在JFFS文件写入闪存时在闪存中创建管理节点的方法包括如下步骤:
步骤301:在启动执行写操作后,首先检测该块是否有足够的空间存储待写入的下一个数据节点jffs_raw_inode、该数据节点jffs_raw_inode及已写入该块的其他数据节点jffs_raw_inode的管理节点,得出第一检测结果。所述数据节点jffs_raw_inode用于存储要写入的数据,所述管理节点包括索引节点jffs_raw_snode及管理索引节点jffs_raw_blockend,所述索引节点jffs_raw_snode与所述数据节点jffs_raw_inode一一对应,用于存储数据节点jffs_raw_inode在所述块中的偏移地址,所述管理索引节点jffs_raw_blockend用于存储由索引节点jffs_raw_snode构成的链表中的第一个索引节点在所述块中的偏移地址;在所述第一检测结果为是时,则进入步骤302;在所述第一检测结果为否时,则进入步骤303;
步骤302:当步骤301中检测到有足够的空间,即在所述第一检测结果为是时,则执行数据写入操作,即将所述待写入的下一个数据节点jffs_raw_inode写入当前块,并在内存中创建一个索引节点jffs_raw_snode保存本次写入操作所写入的数据节点的jffs_raw_inode的偏移地址。
在本实施例中,索引节点jffs_raw_snode仅先保存在***内存中,暂时不写入块中,继续返回步骤301检测空间是否足够写入另外一个jffs_raw_inode和相关管理节点;
步骤303:当步骤301中检测到没有足够的空间,即在所述第一检测结果为否时,则检测该块是否有足够的空间存储已写入该块的所有数据节点的管理节点,得出第二检测结果;
当步骤303中检测到有足够的空间,即在所述第二检测结果为是时,则进入步骤304,当步骤303中检测到没有足够的空间,即在所述第二检测结果为否时,则进入步骤305;
步骤304:当步骤303中检测到有足够的空间,即在所述第二检测结果为是时,则挂起数据写入操作,创建该块已写入的数据节点的管理节点并写入当前块。其中,索引节点jffs_raw_snode是在执行数据写入操作时,在***内存中生成的。索引节点jffs_raw_snode生成后,先存储于***内存中,待步骤301中检测到空间不足而步骤303中检测到空间足够时,才将其依次写入Flash的对应块中;而管理索引节点jffs_raw_blockend是在执行索引节点写入操作时在内存中生成的,当索引节点jffs_raw_snode写入块中后,内存中会生成相应的管理索引节点jffs_raw_blockend并将其写入该块末尾。在步骤304中将管理节点写入当前块后,进入步骤305,当然在实际运用中,也可设计为返回步骤301进行新一轮的检测。内存中存储的索引节点和jffs_raw_blockend在写入Flash后,可以进行清除,以释放***内存,当然不清除对***影响也不大。
步骤305:当步骤303中检测到空间不足时,即在所述第二检测结果为否时,或步骤304完成管理节点的写入后,进入本步骤,放弃管理节点的写入,激活挂起的数据写入操作,向另一个空的块执行数据写入操作并创建索引节点保存本次写入操作所写入的数据节点的偏移地址。其中,索引节点是在执行数据写入操作时,在***内存中生成的。索引节点生成后,先存储于***内存中,再将其依次写入Flash的对应块中;而管理索引节点是在执行索引节点写入操作时在内存中生成的,当索引节点写入块中后,内存中会生成相应的管理索引节点并将其写入该块末尾。
然后,再进入下一个块的数据写入,如此循环,当数据全部写入Flash后,写操作就结束。
本发明实施例中的管理节点都是***在向闪存中写入数据节点jffs_raw_inode时,在***内存中生成后通过写入的方式在闪存中创建的,该创建方式仅为本发明实施例列举的一种创建方式,在实际应用中,管理节点的创建还可以是在往闪存中写入数据节点时,边写入数据节点边直接在闪存中创建。
本发明实施例中将索引节点和管理索引节点用jffs_raw_snode和jffs_raw_blockend结构表示,JFFS文件***进行垃圾回收时,会将标识为jffs_raw_snode及jffs_raw_blockend的节点视为脏数据,这样在进行垃圾回收时,即对一个全是脏数据的块执行擦除操作时,本发明实施例中所设计的存储在Flash的块的末尾的jffs_raw_snode及jffs_raw_blockend也会被擦除掉(因为它们作为脏数据处理),不会对Flash的擦除操作造成任何影响,也不需要专门设计擦除方案来清除这些信息,与现有擦除技术兼容。
按照图2中的方法进行数据写入操作后,在Flash中数据节点及管理节点的存放位置关系可参见图3。从图3中可以看出,Flash是由多个块组成,如图中的第一块block1、第二块block2等,在图中,第一块block1中写入了数据节点和管理节点,如图,数据节点jffs_raw_inode存储在第一块block1的前端,管理节点中的索引节点jffs_raw_snode与所述数据节点jffs_raw_inode一一对应,存储在第一块block1的末端位置,而管理索引节点jffs_raw_blockend存储于索引节点之后,位于第一块block1的最末位置。
在Flash中创建了管理节点后,进行JFFS***文件挂载时,便可根据本发明实施例中的方法进行挂载,下面结合图4进行详细介绍本发明实施例中JFFS文件***挂载的方法,包括如下步骤:
步骤401:当启动JFFS文件***挂载后,依次读取每个块,检测该块的末尾是否存在管理索引结点jffs_raw_blocked,得出检测结果,若存在则进入步骤402,若不存在则进入步骤403。在读取块的过程中,要判断是否每个块都读取完成,如果判断出没有读取完所有的块,则进入继续读取下一个块,如果判断到读取完所有的块,则结束挂载。
步骤402:当步骤401中检测到该块的末尾存在管理索引结点jffs_raw_blocked,即所述检测结果为是时,则根据管理索引结点jffs_raw_blockend找到索引节点jffs_raw_snode并读取其中的数据节点jffs_raw_inode的地址信息。执行完本步骤后,进步骤404。所述索引节点与数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
步骤403:当步骤401中检测到该块的末尾不存在管理索引结点jffs_raw_blocked,即所述检测结果为否时,则表示该块中还没有按照本发明实施例中的JFFS数据写入方法写入数据,则需要根据现有技术方案扫描整个该块上的数据节点jffs_raw_inode,以获取数据节点jffs_raw_inode的地址信息,此步骤的设计为一个现有技术的兼容步骤。执行完本步骤后,进步骤404。
步骤404:当步骤402或403中获得了Flash中存储的数据节点jffs_raw_inode的地址信息后,根据所述获取的地址信息在内存中建立文件树,完成挂载。
在实际运用时,在步骤401中检测到该块的末尾存在管理索引结点jffs_raw_blocked后,可增加一个校验步骤,避免在通过图2所示的方法进行数据写入且创建管理节点过程中,断电造成索引节点jffs_raw_snode和管理索引节点jffs_raw_blockend数据写入不完整而读不出需要的信息,如果校验到索引节点和jffs_raw_blockend均完整,则通过校验,进入步骤402,则根据jffs_raw_blockend找到索引节点读取其中的地址信息;若校验到索引节点和jffs_raw_blockend其中的一个不完整或两个都不完整时,则校验失败,将该块中的索引节点和jffs_raw_blockend信息作为垃圾数据等待下次垃圾回收时回收掉,同时进入步骤403,扫描整个该块上的jffs_raw_inode,以获取jffs_raw_inode的地址信息。
通过上面的实施例,详细介绍了本发明实施例中的闪存中数据管理的方法和文件***载的方法,下面结合图5、图6、图7详细介绍与上述方法对应的装置结构。
本发明实施例提供了一种用于闪存的数据管理装置,包括一个管理节点创建单元,用于在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。在闪存中写入或读取数据节点时,该数据管理装置就会在闪存的各个块中创建与各块中存储的数据节点对应的管理节点,以便在***挂载时,能直接从管理节点中读取挂载所需要的数据节点的地址信息,避免扫描整个Flash,从而缩短挂载过程所经历的时间,提高JFFS文件***挂载的速度,减少***初始化时用户等待时间,为***挂载做好了准备。该数据管理装置可以是闪存中的装置,也可以是内存中的装置。
在闪存中创建管理节点可以通过上述的管理节点创建单元进行创建,也可以是***在往闪存中写入数据时,***内的写入装置通过写入的方式在闪存中创建管理节点,此时,所述数据写入装置结构可结合图5进行详细说明。
本发明实施例中在往闪存中写入数据节点时,通过写入方式创建管理节点的用于闪存的数据管理装置还包括一数据写入装置,其结构示意图,请参见图5。该装置包括如下单元:
第一检测单元10,用于检测待写入的闪存的块中是否有足够的空间存储待写入的另一个数据节点、和该数据节点及已写入该块的数据节点的管理节点,得出第一检测结果,其中,所述数据节点用于存储要写入的数据,数据节点用jffs_raw_inode表示,所述管理节点包括索引节点jffs_raw_snode和管理索引节点jffs_raw_blockend,所述索引节点jffs_raw_snode与所述数据节点jffs_raw_inode一一对应,用于存储数据节点jffs_raw_inode在所述块中的偏移地址,所述管理索引节点jffs_raw_blockend用于存储由索引节点jffs_raw_snode构成的链表中的第一个索引节点在所述块中的偏移地址;
第二检测单元11,在所述第一检测结果为否时,检测所述块是否有足够的空间存储已写入该块的数据节点的管理节点,得出第二检测结果;
写入单元12,分别与所述第一检测单元10和所述第二检测单元11相连,当所述第一检测结果为是时,在当前块执行数据节点jffs_raw_inode的写入操作,当所述第二检测结果为否时,在另一个空的块执行jffs_raw_inode写入操作;且在所述第二检测结果为是时,挂起jffs_raw_inode写入操作,将内存中保存的所述块中已写入的数据节点的管理节点jffs_raw_snode和jffs_raw_blockend和写入该块。
管理节点创建单元13,与所述写入单元12相连,用于在所述写入单元12执行jffs_raw_inode写入操作时,在闪存的各个块中,创建所述管理节点。具体地,先在内存中创建索引节点jffs_raw_snode以保存所述写入操作所写入的jffs_raw_inode的偏移地址;且在将内存中保存的所述块中已写入的jffs_raw_inode的索引节点jffs_raw_snode写入该块时,在内存中创建一个管理索引节点jffs_raw_blockend来保存本次写入操作所写入的索引节点jffs_raw_snode构成的链表中的第一个索引节点jffs_raw_snode在所述块中的偏移地址。
所述数据写入装置还包括:
写入操作激活单元14,与所述写入单元12相连,当所述第二检测结果为否时,或在写入单元将管理节点创建单元创建的所述块中已写入的jffs_raw_inode的管理节点(jffs_raw_snode和jffs_raw_blockend)写入该块之后,用于激活挂起的数据写入操作,以使所述写入单元12向另一个空的块执行数据写入操作,并将所述管理节点创建单元13创建的保存本次写入操作所写入的数据节点的偏移地址的索引节点写入该块。
参见图7,为本发明实施例中文件***挂载装置的结构示意图,主要运用于JFFS文件***挂载,所述装置用于包括:
检测单元21,用于依次读取闪存中每个块的数据,且在读取某块中的数据时,检测该块中是否存在管理索引节点jffs_raw_blockend,得出检测结果,所述块中的数据存储在数据节点中;
第一获取单元22,与所述检测单元21相连,用于在所述检测单元得出的检测结果为是时,根据所述管理索引节点jffs_raw_blockend找到索引节点jffs_raw_snode,并获取所述索引节点jffs_raw_snode中存储的数据节点jffs_raw_inode的地址信息,所述索引节点与jffs_raw_inode一一对应,用于存储jffs_raw_inode在所述块中的偏移地址,所述jffs_raw_blockend用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
文件树建立单元24,与所述第一获取单元22相连,用于根据获取的数据节点jffs_raw_inode的地址信息在内存中建立文件树。
所述文件***挂载装置还包括:
第二获取单元23,分别与所述检测单元21和所述文件树建立单元24相连,用于在所述检测结果为否时,扫描该块上的所有数据节点,并获取数据节点的地址信息,通过该单元实现JFFS文件***的挂载时,与现有技术方案一致,此单元是一个兼容设计。
为了避免在利用图6中的装置进行数据写入过程中,断电造成索引节点jffs_raw_snode和管理索引节点jffs_raw_blockend数据写入不完整而读不出需要的信息的情况,在JFFS文件***挂载装置中可以设计一个校验单元,在检测单元21检测到该块的末尾是否存在jffs_raw_blockend时,校验索引节点jffs_raw_snode和管理索引节点jffs_raw_blockend是否均完整,当JFFS文件***挂载装置中设计了校验单元时,JFFS文件***挂载装置的结构图可参见图8。
参见图8,为本发明实施例中文件***挂载装置的另一结构示意图,除了图7中所述的检测单元21、第一获取单元22、文件树建立单元24和第二获取单元23外,还包括校验单元25:
所述校验单元25,分别与所述检测单元21、第一获取单元22和第二获取单元23相连,用于在所述检测单元21得出的检测结果为是时,校验所述管理索引节点jffs_raw_blockend和所述索引节点jffs_raw_snode是否完整,
当校验到jffs_raw_blockend数据完整且索引节点数据完整时,校验成功,指示第一获取单元22根据所述jffs_raw_blockend找到索引节点,并获取所述索引节点中存储的jffs_raw_inode的地址信息;
当校验到jffs_raw_blockend数据或索引节点数据不完整时,校验失败,将该块中的索引节点和jffs_raw_blockend信息作为垃圾数据等待下次垃圾回收时回收掉,同时指示第二获取单元23扫描该块上的所有jffs_raw_inode,并获取jffs_raw_inode的地址信息。
实施本发明实施例,利用空间换时间的策略,将数据节点的位置信息通过管理节点写入Flash,使得下次挂载时,可以直接从Flash的块中的管理节点中直接读取到数据节点的地址信息,根据读取到的数据节点的地址信息建立文件树,完成挂载,从而避免扫描整个Flash,以寻找到各数据节点并从中读取出地址信息,缩短了挂载过程所经历的时间,提高了JFFS文件***挂载的速度,减少***初始化时用户等待时间。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
Claims (15)
1.一种闪存中数据管理的方法,其特征在于,包括:
在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。
2.如权利要求1所述的方法,其特征在于,所述在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点的步骤具体是在往闪存中写入数据节点时,在闪存的各块中创建所述管理节点。
3.如权利要求2所述的方法,其特征在于,所述在往闪存中写入数据节点时,在闪存的各块中创建所述管理节点的步骤包括:
检测待写入的闪存的块中是否有足够的空间存储待写入的下一个数据节点、和该数据节点及已写入该块的数据节点的管理节点,得出第一检测结果;
在所述第一检测结果为是时,执行数据写入操作并创建一个索引节点保存本次写入操作所写入的数据节点的偏移地址;
在所述第一检测结果为否时,检测所述块是否有足够的空间存储已写入该块的所有数据节点的管理节点,得出第二检测结果;
在所述第二检测结果为是时,挂起数据写入操作,创建所述块中已写入的数据节点的管理节点并写入该块;
在所述第二检测结果为否时,或完成上述在第二检测结果为是时的步骤后,放弃管理节点的写入,激活挂起的数据写入操作,向另一个空的块执行数据写入操作并创建一个索引节点保存本次写入操作所写入的数据节点的偏移地址。
4.如权利要求3所述的方法,其特征在于,所述在所述第二检测结果为是时,挂起数据写入操作,创建所述块中已写入的数据节点的管理节点并写入该块,进一步包括:
在所述第二检测结果为是时,挂起数据写入操作,将内存中保存的所述块中已写入的数据节点的索引节点写入该块,并在内存中创建一个管理索引节点保存本次写入操作所写入的索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
将所述管理索引节点写入该块。
5.一种文件***挂载方法,其特征在于,包括:
依次读取闪存中每个块,检测该块中是否存在管理索引节点,得出检测结果,所述块中的数据存储在数据节点中;
在所述检测结果为是时,根据所述管理索引节点找到索引节点,并获取所述索引节点中存储的数据节点的地址信息,所述索引节点与数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
根据获取的数据节点的地址信息在内存中建立文件树。
6.如权利要求5所述的挂载方法,其特征在于,进一步包括:
在所述检测结果为否时,扫描该块上的所有数据节点,并获取数据节点的地址信息。
7.如权利要求5或6所述的挂载方法,其特征在于,在所述检测结果为是时,还包括:
校验管理索引节点数据是否完整,若校验出管理索引节点数据完整,则根据所述管理索引节点找到索引节点;
校验索引节点数据是否完整,若校验出索引节点数据完整,则获取所述索引节点中存储的数据节点的地址信息;
当校验到管理索引节点数据或索引节点数据不完整时,扫描该块上的所有数据节点,并获取数据节点的地址信息。
8.一种用于闪存的数据管理装置,其特征在于,包括管理节点创建单元,用于在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点;所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。
9.如权利要求8所述的用于闪存的数据管理装置,其特征在于,所述管理节点创建单元,用于在往闪存中写入数据节点时,在闪存的各块中创建所述管理节点;还包括数据写入装置,其包括:
第一检测单元,用于检测待写入的闪存的块中是否有足够的空间存储待写入的下一个数据节点、和该数据节点及已写入该块的数据节点的管理节点,得出第一检测结果;
第二检测单元,用于在所述第一检测结果为否时,检测所述块是否有足够的空间存储已写入该块的所有数据节点的管理节点,得出第二检测结果;
写入单元,分别与所述第一检测单元、所述第二检测单元和管理节点创建单元相连,用于当所述第一检测结果为是时,在当前块执行数据节点的写入操作;当所述第二检测结果为否时,在另一个空的块执行写入操作;且在所述第二检测结果为是时,挂起数据写入操作,将所述管理节点创建单元创建的该块中已写入的数据节点的管理节点,写入该块。
10.如权利要求9所述的用于闪存的数据管理装置,其特征在于,所述数据写入装置还包括:
写入操作激活单元,与所述写入单元相连,用于当所述第二检测结果为否时,或在写入单元将所述管理节点创建单元创建的该块中已写入的数据节点的管理节点,写入该块之后,激活挂起的数据写入操作;
所述写入单元,还用于在写入操作激活单元激活挂起的数据写入操作后,向另一个空的块执行数据写入操作,并将所述管理节点创建单元创建的保存本次写入操作所写入的数据节点的偏移地址的索引节点写入该块。
11.一种闪存,包括数据节点,其特征在于,还包括与数据节点相对应的管理节点,所述管理节点包括索引节点和管理索引节点,所述索引节点与所述数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址。
12.如权利要求11所述的闪存,其特征在于,还包括用于闪存的数据管理装置,其包括管理节点创建单元,用于在闪存的各个块中,创建与该块中存储的数据节点相对应的管理节点。
13.一种文件***挂载装置,其特征在于,包括:
检测单元,用于依次读取闪存中每个块的数据,且在读取某块中的数据时,检测该块中是否存在管理索引节点,得出检测结果,所述块中的数据存储在数据节点中;
第一获取单元,与所述检测单元相连,用于在所述检测单元得出的检测结果为是时,根据所述管理索引节点找到索引节点,并获取所述索引节点中存储的数据节点的地址信息,所述索引节点与数据节点一一对应,用于存储数据节点在所述块中的偏移地址,所述管理索引节点用于存储由索引节点构成的链表中的第一个索引节点在所述块中的偏移地址;
文件树建立单元,与所述第一获取单元相连,用于根据获取的数据节点的地址信息在内存中建立文件树。
14.如权利要求13所述的挂载装置,其特征在于,还包括:
第二获取单元,分别与所述检测单元和所述文件树建立单元相连,用于在所述检测结果为否时,扫描该块上的所有数据节点,并获取数据节点的地址信息。
15.如权利要求14所述的挂载装置,其特征在于,还包括:
校验单元,分别与所述检测单元、第一获取单元和第二获取单元相连,用于在所述检测单元得出的检测结果为是时,校验所述管理索引节点和所述索引节点是否完整,
当校验到管理索引节点数据完整且索引节点数据完整时,指示第一获取单元根据所述管理索引节点找到索引节点,并获取所述索引节点中存储的数据节点的地址信息;
当校验到管理索引节点数据或索引节点数据不完整时,指示第二获取单元扫描该块上的所有数据节点,并获取数据节点的地址信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101114656A CN101799820B (zh) | 2010-02-08 | 2010-02-08 | 闪存、文件***挂载方法及装置、数据管理方法及装置 |
PCT/CN2011/070593 WO2011095093A1 (zh) | 2010-02-08 | 2011-01-25 | 文件***挂载方法、数据管理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101114656A CN101799820B (zh) | 2010-02-08 | 2010-02-08 | 闪存、文件***挂载方法及装置、数据管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101799820A true CN101799820A (zh) | 2010-08-11 |
CN101799820B CN101799820B (zh) | 2013-03-20 |
Family
ID=42595498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101114656A Expired - Fee Related CN101799820B (zh) | 2010-02-08 | 2010-02-08 | 闪存、文件***挂载方法及装置、数据管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101799820B (zh) |
WO (1) | WO2011095093A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011095093A1 (zh) * | 2010-02-08 | 2011-08-11 | 深圳市同洲电子股份有限公司 | 文件***挂载方法、数据管理方法及相关装置 |
CN102521312A (zh) * | 2011-12-01 | 2012-06-27 | 深圳市航天泰瑞捷电子有限公司 | 一种文件索引的存储方法及文件*** |
WO2012119384A1 (zh) * | 2011-08-10 | 2012-09-13 | 华为技术有限公司 | 文件***的挂载方法、装置及*** |
CN106502729A (zh) * | 2016-10-09 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种Flash播放器的资源加载方法及*** |
CN110515909A (zh) * | 2019-08-29 | 2019-11-29 | 北京字节跳动网络技术有限公司 | 文件存储方法、装置、电子设备及计算机存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7873810B2 (en) * | 2004-10-01 | 2011-01-18 | Mips Technologies, Inc. | Microprocessor instruction using address index values to enable access of a virtual buffer in circular fashion |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
KR101274181B1 (ko) * | 2006-02-13 | 2013-06-14 | 삼성전자주식회사 | 플래시 메모리를 관리하는 장치 및 방법 |
KR101433859B1 (ko) * | 2007-10-12 | 2014-08-27 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법 |
CN101799820B (zh) * | 2010-02-08 | 2013-03-20 | 深圳市同洲电子股份有限公司 | 闪存、文件***挂载方法及装置、数据管理方法及装置 |
-
2010
- 2010-02-08 CN CN2010101114656A patent/CN101799820B/zh not_active Expired - Fee Related
-
2011
- 2011-01-25 WO PCT/CN2011/070593 patent/WO2011095093A1/zh active Application Filing
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011095093A1 (zh) * | 2010-02-08 | 2011-08-11 | 深圳市同洲电子股份有限公司 | 文件***挂载方法、数据管理方法及相关装置 |
WO2012119384A1 (zh) * | 2011-08-10 | 2012-09-13 | 华为技术有限公司 | 文件***的挂载方法、装置及*** |
CN102812458A (zh) * | 2011-08-10 | 2012-12-05 | 华为技术有限公司 | 文件***的挂载方法、装置及*** |
US8719467B2 (en) | 2011-08-10 | 2014-05-06 | Huawei Technologies Co., Ltd. | Method, apparatus and system for mounting file system |
CN102521312A (zh) * | 2011-12-01 | 2012-06-27 | 深圳市航天泰瑞捷电子有限公司 | 一种文件索引的存储方法及文件*** |
CN106502729A (zh) * | 2016-10-09 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种Flash播放器的资源加载方法及*** |
CN106502729B (zh) * | 2016-10-09 | 2019-05-17 | 武汉斗鱼网络科技有限公司 | 一种Flash播放器的资源加载方法及*** |
CN110515909A (zh) * | 2019-08-29 | 2019-11-29 | 北京字节跳动网络技术有限公司 | 文件存储方法、装置、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2011095093A1 (zh) | 2011-08-11 |
CN101799820B (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687488B2 (en) | Directory deletion method and apparatus, and storage server | |
CN107911249B (zh) | 一种网络设备的命令行发送方法、装置和设备 | |
CN101799820B (zh) | 闪存、文件***挂载方法及装置、数据管理方法及装置 | |
CN102779180A (zh) | 数据存储***的操作处理方法,数据存储*** | |
CN107329704B (zh) | 一种缓存镜像方法及控制器 | |
CN104657435B (zh) | 一种应用数据的存储管理方法和网络管理*** | |
US20140101106A1 (en) | Log server and log file storage method | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
CN109684099A (zh) | 消息处理方法及装置 | |
CN109522154A (zh) | 数据恢复方法及相关设备与*** | |
CN102497286A (zh) | 一种mib匹配方法和设备 | |
CN110413376A (zh) | 一种虚拟机管理usb设备的方法、设备以及存储介质 | |
CN110399171A (zh) | 一种硬盘管理方法、***及相关组件 | |
CN107256723A (zh) | 一种存储产品的测试方法及装置 | |
CN109783462A (zh) | 一种基于分布式文件***的数据访问方法和装置 | |
US20110264991A1 (en) | Method and System for Management of Electronic Mail Communication | |
CN105389268B (zh) | 资料储存***及其运作方法 | |
CN110352410A (zh) | 跟踪索引节点的访问模式以及预提取索引节点 | |
WO2015087509A1 (ja) | 状態保存復元装置、状態保存復元方法、および、記憶媒体 | |
CN102750213B (zh) | 磁盘检测、处理方法及检测、处理*** | |
CN109815059A (zh) | 一种数据备份方法、***及板卡和存储介质 | |
CN106407123A (zh) | 一种服务器接口的自动化测试方法及装置 | |
WO2016095644A1 (zh) | 数据库的高可用解决方法和装置 | |
US9021321B2 (en) | Testing disk drives shared by multiple processors in a supercomputer complex | |
CN105677579A (zh) | 缓存***中的数据访问方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1147318 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130320 Termination date: 20150208 |
|
EXPY | Termination of patent right or utility model | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1147318 Country of ref document: HK |