CN105868285A - 一种基于flash数据的文件系统 - Google Patents
一种基于flash数据的文件系统 Download PDFInfo
- Publication number
- CN105868285A CN105868285A CN201610169021.5A CN201610169021A CN105868285A CN 105868285 A CN105868285 A CN 105868285A CN 201610169021 A CN201610169021 A CN 201610169021A CN 105868285 A CN105868285 A CN 105868285A
- Authority
- CN
- China
- Prior art keywords
- data
- data segment
- blocks
- files
- block
- 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.)
- Pending
Links
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/13—File access structures, e.g. distributed indices
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于flash数据的文件系统,将flash数据划分为四种数据块,包括第一文件块、第二文件块、第一目录块和第二目录块。本发明将flash数据划分为四种数据块,第一文件块、第二文件块、第一目录块和第二目录块组成的文件系统比较适合于储存空间较小的flash,通过分块降低数据丢失、破坏造成的损失。
Description
技术领域
本发明涉及文件系统技术领域,特别是指一种基于flash数据的文件系统。
背景技术
在嵌入领域,传统的文件系统完全基于Flash存储,需要使用linux或Wince等操作系统的文件管理系统对文件系统进行管理。由于FLASH的固有的特点(需要扇区擦除、而且使用受命很短,只有10万次),对文件进行管理时,要么对Flash造成损坏,要么就需要大量的存储空间循环存储机制存储每个文件的文件目录(包括:读写指针、文件物理地址等文件相关的描述信息),使得文件系统管理复杂且维护麻烦很容易出错;同时文件的读取速度降低,而且造成FLASH存储空间大大浪费。而且基于flash做的文件系统,在将数据写入flash的过程中,可能因为某些原因(比如断电)导致数据丢失、破坏等异常情况。
发明内容
本发明提出一种基于flash数据的文件系统,占用的储存空间小,通过分块降低数据丢失、破坏造成的损失。
本发明的技术方案是这样实现的:
一种基于flash数据的文件系统,将flash数据划分为四种数据块,包括第一文件块、第二文件块、第一目录块和第二目录块,第一文件块包括依次排列的第一name数据段、第一next数据段、第一parent数据段和第一data数据段,第一name数据段用于记录文件名称,第一next数据段用于保存与其相邻的下个数据块的索引,第一parent数据段用于保存当前第一文件块所在目录的索引,第一data数据段用于保存部分文件数据;第二文件块用于保存剩余部分文件数据;第一目录块包括第二name数据段、第三next数据段、第二parent数据段和第三data数据段,第二name数据段用于记录目录名称,第三next数据段用于记录与当前第一目录块相邻的下个目录块的索引,第三data数据段用于保存部分当前目录下的子目录和文件的索引,第二目录块用于保存剩余部分当前目录下的子目录和文件的索引。
进一步的,第二文件块包括第一prev数据段、第二next数据段和第二data数据段,第一prev数据段用于保存与当前第二文件块相邻的上个数据块的索引,第二next数据段用于保存与当前第二文件块相邻的下个数据块的索引,第二data数据段用于保存剩余部分文件数据。
进一步的,第二目录块包括第二prev数据段、第四next数据段和第四data数据段,第二prev数据段用于保存与当前第二目录块相邻的上个数据块的索引,第四next数据段用于当前第二目录块相邻的下个数据块的索引,第四data数据段用于保存剩余部分目录数据。
进一步的,第一文件块、第二文件块、第一目录块和第二目录块均在数据块的尾部设有CRC数据段,CRC数据段保存有四字节的数据,用于对第一文件块、第二文件块、第一目录块和第二目录块进行分块校验。
进一步的,在向第一文件块、第二文件块、第一目录块和第二目录块存储数据时,通过crc=SDK_CRC(data),计算出一个四字节的数值,保存到CRC数据段;
在从第一文件块、第二文件块、第一目录块和第二目录块任一数据块中读取数据的时候,先通过new_crc=SDK_CRC(data),计算出一个四字节的数值,然后再读取CRC数据段,判断crc==new_crc,若不相等,说明数据被破坏了,应丢弃该数据块,若相等,则按照数据块相应的格式初始化数据,若所有数据块均完成初始化后,则有效的文件系统已完成。
进一步的,第一文件块和第二文件块通过第一next数据段和第一prev数据段建立双向链表结构,第二文件块和第二文件块之间通过第一prev数据段和第二next数据段建立双向链表结构。
进一步的,第一目录块和第二目录块通过第二next数据段和第二prev数据段建立双向链表结构,第二目录块和第二目录块之间通过第二prev数据段和第四next数据段建立双向链表结构。
进一步的,第一文件块和第一目录块通过第一parent数据段和第三data数据段建立双向链表结构。
进一步的,第一目录块和第一目录块之间通过第一parent数据段和第三data数据段建立双向链表结构。
本发明的有益效果在于:本发明将flash数据划分为四种数据块,第一文件块、第二文件块、第一目录块和第二目录块组成的文件系统比较适合于储存空间较小的flash,通过分块降低数据丢失、破坏造成的损失。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种基于flash数据的文件系统的组成结构示意图;
图2为图1中四种数据块的组成结构示意图;
图3为图1中四种数据块初始化之前的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1-图3所示,本发明提出了一种基于flash数据的文件系统,将flash数据划分为四种数据块,包括第一文件块、第二文件块、第一目录块和第二目录块,第一文件块包括依次排列的第一name数据段、第一next数据段、第一parent数据段和第一data数据段,第一name数据段用于记录文件名称,第一next数据段用于保存与其相邻的下个数据块的索引,第一parent数据段用于保存当前第一文件块所在目录的索引,第一data数据段用于保存部分文件数据;第二文件块用于保存剩余部分文件数据;第一目录块包括第二name数据段、第三next数据段、第二parent数据段和第三data数据段,第二name数据段用于记录目录名称,第三next数据段用于记录与当前第一目录块相邻的下个目录块的索引,第三data数据段用于保存部分当前目录下的子目录和文件的索引,第二目录块用于保存剩余部分当前目录下的子目录和文件的索引。
第一文件块和第二文件块可分别标记为FileBlockA和FileBlockB,第一目录块和第二目录块可分别标记为DirBlockA和DirblockB。
第二文件块包括第一prev数据段、第二next数据段和第二data数据段,第一prev数据段用于保存与当前第二文件块相邻的上个数据块的索引,第二next数据段用于保存与当前第二文件块相邻的下个数据块的索引,第二data数据段用于保存剩余部分文件数据。
第二目录块包括第二prev数据段、第四next数据段和第四data数据段,第二prev数据段用于保存与当前第二目录块相邻的上个数据块的索引,第四next数据段用于当前第二目录块相邻的下个数据块的索引,第四data数据段用于保存剩余部分目录数据。
将四种不同类型的数据块组织起来,构成一个完整的文件系统,本发明适用于存储空间小的flash,本发明主要实现了在一块flash上建立一个文件系统,可以支持基本的文件操作(创建文件、目录,打开文件并读写内容等),并且对flash数据进行分块校验,可以有效的防止因为部分文件内容被破坏而导致整块flash无法使用。
如图3所示,还未初始化的数据块包括data数据段和CRC数据段。从外部读取的数据,不进过效验直接使用会引起未知异常,效验之后,可以保证数据没有被破坏,还是按照原来的格式保存,排除异常。
第一文件块、第二文件块、第一目录块和第二目录块均在数据块的尾部设有CRC数据段,CRC数据段保存有四字节的数据,用于对第一文件块、第二文件块、第一目录块和第二目录块进行分块校验。
在向第一文件块、第二文件块、第一目录块和第二目录块存储数据时,通过crc=SDK_CRC(data),计算出一个四字节的数值,保存到CRC数据段;
在从第一文件块、第二文件块、第一目录块和第二目录块任一数据块中读取数据的时候,先通过new_crc=SDK_CRC(data),计算出一个四字节的数值,然后再读取CRC数据段,判断crc==new_crc,若不相等,说明数据被破坏了,应丢弃该数据块,若相等,则按照数据块相应的格式初始化数据,若所有数据块均完成初始化后,则有效的文件系统已完成。
第一文件块和第二文件块通过第一next数据段和第一prev数据段建立双向链表结构,第二文件块和第二文件块之间通过第一prev数据段和第二next数据段建立双向链表结构。
第一目录块和第二目录块通过第二next数据段和第二prev数据段建立双向链表结构,第二目录块和第二目录块之间通过第二prev数据段和第四next数据段建立双向链表结构。
第一文件块和第一目录块通过第一parent数据段和第三data数据段建立双向链表结构。
第一目录块和第一目录块之间通过第一parent数据段和第三data数据段建立双向链表结构。
值得注意的是,图1中的parent、data、next、prev分别指的是第一文件块、第二文件块、第一目录块和第二目录块中的数据段的类型,比如第一目录段DirBlockA和第二目录段DirblockB之间有一个从DirBlockA到DirblockB的箭头,箭头上标注的是next,指的是第一目录段DirBlockA中的第三next数据段,而从DirblockB到DirBlockA的箭头上面标注的是prev,代表的是第二目录段DirblockB中的第二prev数据段。以此类推,可得出图1中其他标记的含义。
在图2和图3中,第一文件块和第二文件块可分别标记为FileBlockA和FileBlockB,第一目录块和第二目录块可分别标记为DirBlockA和DirblockB。第一行FileBlockA后面的几个数据段代表了FileBlockA的数据组成,其中的几个标记:name、next、parent和data分别代表了第一name数据段、第一next数据段、第一parent数据段和第一data数据段;以此类推,可知,FileBlockB后的几个标注:prev、next和data分别表示第一prev数据段、第二next数据段和第二data数据段;DirBlockA后的几个标注:name、next、parent和data分别代表了第二name数据段、第三next数据段、第二parent数据段和第三data数据段;DirblockB后的几个标注:prev、next和data分别表示第二prev数据段、第四next数据段和第四data数据段。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于flash数据的文件系统,其特征在于:将所述flash数据划分为四种数据块,包括第一文件块、第二文件块、第一目录块和第二目录块,所述第一文件块包括依次排列的第一name数据段、第一next数据段、第一parent数据段和第一data数据段,所述第一name数据段用于记录文件名称,所述第一next数据段用于保存与其相邻的下个数据块的索引,所述第一parent数据段用于保存当前第一文件块所在目录的索引,所述第一data数据段用于保存部分文件数据;所述第二文件块用于保存剩余部分文件数据;所述第一目录块包括第二name数据段、第三next数据段、第二parent数据段和第三data数据段,所述第二name数据段用于记录目录名称,所述第三next数据段用于记录与当前第一目录块相邻的下个目录块的索引,所述第三data数据段用于保存部分当前目录下的子目录和文件的索引,所述第二目录块用于保存剩余部分当前目录下的子目录和文件的索引。
2.根据权利要求1所述的一种基于flash数据的文件系统,其特征在于:所述第二文件块包括第一prev数据段、第二next数据段和第二data数据段,所述第一prev数据段用于保存与当前第二文件块相邻的上个数据块的索引,所述第二next数据段用于保存与当前第二文件块相邻的下个数据块的索引,所述第二data数据段用于保存剩余部分文件数据。
3.根据权利要求1所述的一种基于flash数据的文件系统,其特征在于:所述第二目录块包括第二prev数据段、第四next数据段和第四data数据段,所述第二prev数据段用于保存与当前第二目录块相邻的上个数据块的索引,所述第四next数据段用于当前第二目录块相邻的下个数据块的索引,所述第四data数据段用于保存剩余部分目录数据。
4.根据权利要求1-3任一项所述的一种基于flash数据的文件系统,其特征在于:所述第一文件块、第二文件块、第一目录块和第二目录块均在数据块的尾部设有CRC数据段,所述CRC数据段保存有四字节的数据,用于对所述第一文件块、第二文件块、第一目录块和第二目录块进行分块校验。
5.根据权利要求4所述的一种基于flash数据的文件系统,其特征在于:
在向所述第一文件块、第二文件块、第一目录块和第二目录块存储数据时,通过crc=SDK_CRC(data),计算出一个四字节的数值,保存到CRC数据段;
在从所述第一文件块、第二文件块、第一目录块和第二目录块任一数据块中读取数据的时候,先通过new_crc=SDK_CRC(data),计算出一个四字节的数值,然后再读取CRC数据段,判断crc==new_crc,若不相等,说明数据被破坏了,应丢弃该数据块,若相等,则按照数据块相应的格式初始化数据,若所有数据块均完成初始化后,则有效的文件系统已完成。
6.根据权利要求2所述的一种基于flash数据的文件系统,其特征在于:所述第一文件块和第二文件块通过所述第一next数据段和所述第一prev数据段建立双向链表结构,所述第二文件块和第二文件块之间通过第一prev数据段和第二next数据段建立双向链表结构。
7.根据权利要求3所述的一种基于flash数据的文件系统,其特征在于:所述第一目录块和第二目录块通过所述第二next数据段和所述第二prev数据段建立双向链表结构,所述第二目录块和第二目录块之间通过第二prev数据段和第四next数据段建立双向链表结构。
8.根据权利要求1-3任一项所述的一种基于flash数据的文件系统,其特征在于:所述第一文件块和第一目录块通过所述第一parent数据段和所述第三data数据段建立双向链表结构。
9.根据权利要求8任一项所述的一种基于flash数据的文件系统,其特征在于:所述第一目录块和第一目录块之间通过所述第一parent数据段和所述第三data数据段建立双向链表结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610169021.5A CN105868285A (zh) | 2016-03-23 | 2016-03-23 | 一种基于flash数据的文件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610169021.5A CN105868285A (zh) | 2016-03-23 | 2016-03-23 | 一种基于flash数据的文件系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105868285A true CN105868285A (zh) | 2016-08-17 |
Family
ID=56624737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610169021.5A Pending CN105868285A (zh) | 2016-03-23 | 2016-03-23 | 一种基于flash数据的文件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868285A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1400531A (zh) * | 2001-08-03 | 2003-03-05 | 华为技术有限公司 | 快速存储器文件的处理方法 |
CN101013397A (zh) * | 2007-02-08 | 2007-08-08 | 深圳万利达电子工业有限公司 | 一种nandflash文件系统实现方法 |
US20100138589A1 (en) * | 2008-12-03 | 2010-06-03 | Texas Instruments Incorporated | Storage optimizations by directory compaction in a fat file system |
-
2016
- 2016-03-23 CN CN201610169021.5A patent/CN105868285A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1400531A (zh) * | 2001-08-03 | 2003-03-05 | 华为技术有限公司 | 快速存储器文件的处理方法 |
CN101013397A (zh) * | 2007-02-08 | 2007-08-08 | 深圳万利达电子工业有限公司 | 一种nandflash文件系统实现方法 |
US20100138589A1 (en) * | 2008-12-03 | 2010-06-03 | Texas Instruments Incorporated | Storage optimizations by directory compaction in a fat file system |
Non-Patent Citations (1)
Title |
---|
HZM7512: "YAFFS文件系统简介", 《CSDN博客HTTPS://BLOG.CSDN.NET/HZM7512/ARTICLE/DETAILS/5149895》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12119054B2 (en) | Lifetime mixed level non-volatile memory system | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
US7634624B2 (en) | Memory system for data storage and retrieval | |
KR101215864B1 (ko) | 전력 손실에 의한 데이터 손상을 방지하는 플래시 메모리관리 방법 | |
US9990276B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN101645043B (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN109416666A (zh) | 具有压缩数据和标签的缓存 | |
CN101446921B (zh) | 一种Flash存储器的动态存储方法 | |
CN104461391A (zh) | 一种存储设备元数据管理处理方法及系统 | |
CN103838853B (zh) | 一种基于不同存储介质的混合文件系统 | |
US20130238835A1 (en) | Burning system and method | |
CN107544749B (zh) | 数据储存媒体的损坏数据行的筛选方法 | |
KR20100065786A (ko) | 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템 | |
WO2017143843A1 (zh) | 元数据修复方法及装置 | |
CN106527992A (zh) | 一种存储设备数据销毁方法及装置 | |
CN102214143A (zh) | 一种多层单元闪存的管理方法、装置及存储设备 | |
CN105354099A (zh) | 一种西数硬盘修复方法 | |
CN110347613A (zh) | 多租户固态盘中实现raid的方法、控制器及多租户固态盘 | |
US9772782B2 (en) | Non-volatile complement data cache | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN100465910C (zh) | 对产品中闪存数据的防错、纠错方法 | |
CN105868285A (zh) | 一种基于flash数据的文件系统 | |
CN102495680A (zh) | Raid系统的重建方法 | |
CN108733575B (zh) | 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘 | |
CN105260130A (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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20200501 |