CN104657471B - 一种fat文件系统的预分配文件建立方法及系统 - Google Patents
一种fat文件系统的预分配文件建立方法及系统 Download PDFInfo
- Publication number
- CN104657471B CN104657471B CN201510077470.2A CN201510077470A CN104657471B CN 104657471 B CN104657471 B CN 104657471B CN 201510077470 A CN201510077470 A CN 201510077470A CN 104657471 B CN104657471 B CN 104657471B
- Authority
- CN
- China
- Prior art keywords
- file
- fat
- files
- directory
- establishing
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000005192 partition Methods 0.000 claims abstract description 21
- 230000008520 organization Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 102100029074 Exostosin-2 Human genes 0.000 description 1
- 101000918275 Homo sapiens Exostosin-2 Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种FAT文件系统的预分配文件建立方法,包括如下步骤:获取磁盘分区信息;在FAT表中建立根目录的簇链关系;根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;采用短文件名格式组织各文件目录项的字段,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立。本发明还提供一种FAT文件系统的预分配文件建立系统,提高了建立文件的速度以及磁盘读写的速度。
Description
技术领域
本发明涉及文件系统领域,尤其涉及一种FAT文件系统的预分配文件建立方法及系统。
背景技术
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,其作为操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统打开文件,扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理,每个簇可以包括2、4、8、16、32 或64 个扇区,簇是操作系统所使用的逻辑概念。常见的文件系统包括FAT、NTFS、EXT2/3等,FAT文件系统以其兼容性好、简单易用等优点而得到广泛应用,已经越来越多的嵌入式存储设备以FAT作为其文件系统。现有磁盘比较多的是机械硬盘,。当文件是连续的或则连续操作的文件是相邻的,磁头移动的距离短,读写速度快,效率高,当文件不连续时,磁头移动距离较大,读写速度慢且使用效率低下,影响硬盘的使用效率。
为保证磁盘文件系统关键信息区的不可变更性,如FAT文件系统的引导区、FAT表和目录项,就需要在文件格式化时预先在磁盘上建立起已知文件(预留文件),从而保证文件系统关键信息区的稳定可靠,但直接使用FAT文件系统提供的文件建立和扩展接口来实现的话,会出现文件目录项的不连续,而不连续的文件目录项会使得文件在读写时磁头的移动距离变大,使得文件读写速度变慢,导致文件建立耗时长,且使用效率低下,影响磁盘的使用寿命。
发明内容
本发明要解决的技术问题之一,在于提供一种FAT文件系统的预分配文件建立方法,保证了数据的连续性以及FAT链表的连续性,提高磁盘读写效率。
本发明要解决的技术问题之一是这样实现的:一种FAT文件系统的预分配文件建立方法,包括如下步骤:
步骤10、在LINUX系统下,以设备文件的形式打开磁盘分区,读取保留区中操作系统引导记录区,获取磁盘分区信息;
步骤20、根据待建立文件总个数确定根目录所占用的簇数,并根据根目录所占用的簇数在FAT表中建立根目录的簇链关系;
步骤30、根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;
步骤40、采用短文件名格式组织各文件目录项的字段,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;
步骤50、将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立。
进一步的,所述步骤10中磁盘分区信息包括扇区字节数、每簇扇区数、总扇区数、FAT表个数、保留扇区数和FAT表大小。
进一步的,每所述文件目录项占用32个字节。
进一步的,所述步骤40进一步包括:
步骤41、采用短文件名格式组织各文件目录项的字段,所述字段包括文件名、本文件的起始簇号、文件生成日期、文件的读写属性和文件长度;
步骤42、根据文件类型在内存中建立同一类文件的所有目录项后,一次性把同一类文件的所有目录项写入磁盘中。
本发明要解决的技术问题之二,在于提供一种FAT文件系统的预分配文件建立系统,保证了数据的连续性以及FAT链表的连续性,提高磁盘读写效率。
本发明要解决的技术问题之二是这样实现的:一种FAT文件系统的预分配文件建立系统,包括文件系统信息获取模块、根目录簇链建立模块、类文件簇链建立模块、类文件目录组织和建立模块以及空闲扇区数回写模块;
文件系统信息获取模块:用于在LINUX系统下,以设备文件的形式打开磁盘分区,读取保留区中操作系统引导记录区,获取磁盘分区信息;
根目录簇链建立模块:用于根据待建立文件总个数确定根目录所占用的簇数,并根据根目录所占用的簇数在FAT表中建立根目录的簇链关系;
类文件簇链建立模块:用于根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;
类文件目录组织和建立模块:用于采用短文件名格式组织各文件目录项的字段,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;
空闲扇区数回写模块:用于将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立。
进一步的,所述文件系统信息获取模块中磁盘分区信息包括扇区字节数、每簇扇区数、总扇区数、FAT表个数、保留扇区数和FAT表大小。
进一步的,每所述文件目录项占用32个字节。
进一步的,所述类文件目录组织和建立模块进一步包括:文件目录项组织模块和文件目录项建立模块;
文件目录项组织模块:用于采用短文件名格式组织各文件目录项的字段。所述字段包括文件名、本文件的起始簇号、文件生成日期、文件的读写属性和文件长度;
文件目录项建立模块:用于根据文件类型在内存中建立同一类文件的所有目录项后,一次性把同一类文件的所有目录项写入磁盘中。
本发明具有如下优点:本发明通过将FAT表项已经占用的簇指向下一个簇号,即除了文件的尾簇,每一FAT表项中的数据是下一个FAT表项的ID号,既保证了数据的连续性,也保证了FAT链表的连续性,提高了建立文件的速度以及磁盘读写的速度。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
图2为本发明系统逻辑结构示意图。
图3为本发明磁盘信息映射示意图。
具体实施方式
请参阅图1,一种FAT文件系统的预分配文件建立方法,包括如下步骤:
步骤10、在LINUX系统下,以设备文件的形式打开磁盘分区,读取保留区中操作系统引导记录区,获取磁盘分区信息,包括扇区字节数、每簇扇区数、总扇区数、FAT表个数、保留扇区数和FAT表大小;
例如,一个磁盘空间为500G的磁盘,预分配4类文件:信息文件2个,每个大小10M;索引文件1833个,每个大小4M;视频文件1833个,每个大小256M;获取磁盘分区信息如下:前后需统一
扇区字节数:512;
每簇扇区数:32;
总扇区数:976773168;
FAT表个数:2;
保留扇区数:6;
FAT表大小:238354字节;
步骤20、根据待建立文件总个数确定根目录所占用的簇数:((2+4+1833+1833)*32+32*512-1)/(32*512)=8;
根据根目录所占用的簇数在FAT表中建立根目录的簇链关系如表1:
表1
簇号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
指向 | 0xfffffff8 | 0xffffffff | 0x00000004 | 0x00000005 | 0x00000006 | 0x00000007 | 0x00000008 | 0x00000009 | 0x0000000A |
簇号 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
指向 | 0xffffffff | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
其中,簇号为1和2的簇为操作系统保留簇,由操作系统在格式化分区的时候固定写入0xfffffff8和0xffffffff,从第3簇到第10簇共8个簇为目录项所占用的簇,每个簇指向下一个簇的簇号,直到第10个簇,其指向为0xffffffff,表示簇链的结束;
步骤30、根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;其中,每类文件的每个文件所占用的簇数如下:
每个信息文件所占用的簇数为:(1*1024*1024 + 32*512 - 1)/ 32*512 = 64;
每个列表文件所占用的簇数为:(10*1024*1024 + 32*512 - 1)/ 32*512 = 640;
每个索引文件所占用的簇数为:(4*1024*1024 + 32*512 - 1)/ 32*512 = 256;
每个数据文件所占用的簇数为:(256*1024*1024 + 32*512 - 1)/ 32*512 =16384;
步骤40、采用短文件名格式组织各文件目录项的字段,每所述文件目录项占用32个字节,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;该步骤进一步包括:
步骤41、采用短文件名格式组织各文件目录项的字段,每所述文件目录项占用32个字节,所述字段包括文件名、本文件的起始簇号、文件生成日期、文件的读写属性和文件长度;
步骤42、根据文件类型在内存中建立同一类文件的所有目录项后,一次性把同一类文件的所有目录项写入磁盘中;
步骤50、将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立;由于文件的建立过程没有经过文件系统的通用接口,保留扇区中记录磁盘空闲簇数的信息没有随着文件的建立而更新,因此需要将保留区中分区剩余簇数修改为0,表示磁盘空间被全部占用,从而拒绝在本磁盘上建立非预分配文件之外的文件,同时对FAT表中未使用的簇进行填充,写入坏簇标志(0xFFFFFFF7),防止操作系统利用未使用的FAT表写入新的文件,破坏磁盘文件结构。
请参阅图2,一种FAT文件系统的预分配文件建立系统,包括文件系统信息获取模块、根目录簇链建立模块、类文件簇链建立模块、类文件目录组织和建立模块以及空闲扇区数回写模块;
文件系统信息获取模块:用于在LINUX系统下,以设备文件的形式打开磁盘分区,读取保留区中操作系统引导记录区,获取磁盘分区信息,所述磁盘分区信息包括扇区字节数、每簇扇区数、总扇区数、FAT表个数、保留扇区数和FAT表大小;
根目录簇链建立模块:用于根据待建立文件总个数确定根目录所占用的簇数,并根据根目录所占用的簇数在FAT表中建立根目录的簇链关系;
类文件簇链建立模块:用于根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;
类文件目录组织和建立模块:用于采用短文件名格式组织各文件目录项的字段,每所述文件目录项占用32个字节,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;该模块进一步包括:文件目录项组织模块和文件目录项建立模块;
文件目录项组织模块:用于采用短文件名格式组织各文件目录项的字段,每所述文件目录项占用32个字节,所述字段包括文件名、本文件的起始簇号、文件生成日期、文件的读写属性和文件长度;
文件目录项建立模块:用于根据文件类型在内存中建立同一类文件的所有目录项后,一次性把同一类文件的所有目录项写入磁盘中
空闲扇区数回写模块:用于将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立,得到如图3所示的磁盘信息映射关系;由于文件的建立过程没有经过文件系统的通用接口,保留扇区中记录磁盘空闲簇数的信息没有随着文件的建立而更新,因此需要将保留区中分区剩余簇数修改为0,表示磁盘空间被全部占用,从而拒绝在本磁盘上建立非预分配文件之外的文件,同时对FAT表中未使用的簇进行填充,写入坏簇标志(0xFFFFFFF7),防止操作系统利用未使用的FAT表写入新的文件,破坏磁盘文件结构。
另外,在计算簇数时,采用向上取整的方式计算,即不足一个簇的部分均以一个簇计算。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (8)
1.一种FAT文件系统的预分配文件建立方法,其特征在于:包括如下步骤:
步骤10、在LINUX系统下,以设备文件的形式打开磁盘分区,读取保留区中操作系统引导记录区,获取磁盘分区信息;
步骤20、根据待建立文件总个数确定根目录所占用的簇数,并根据根目录所占用的簇数在FAT表中建立根目录的簇链关系;
步骤30、根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;
步骤40、采用短文件名格式组织各文件目录项的字段,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;
步骤50、将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立。
2.根据权利要求1所述的一种FAT文件系统的预分配文件建立方法,其特征在于:所述步骤10中磁盘分区信息包括扇区字节数、每簇扇区数、总扇区数、FAT表个数、保留扇区数和FAT表大小。
3.根据权利要求1所述的一种FAT文件系统的预分配文件建立方法,其特征在于:每所述文件目录项占用32个字节。
4.根据权利要求1所述的一种FAT文件系统的预分配文件建立方法,其特征在于:所述步骤40进一步包括:
步骤41、采用短文件名格式组织各文件目录项的字段,所述字段包括文件名、本文件的起始簇号、文件生成日期、文件的读写属性和文件长度;
步骤42、根据文件类型在内存中建立同一类文件的所有目录项后,一次性把同一类文件的所有目录项写入磁盘中。
5.一种FAT文件系统的预分配文件建立系统,其特征在于:包括:
文件系统信息获取模块:用于在LINUX系统下,以设备文件的形式打开磁盘分区,读取保留区中操作系统引导记录区,获取磁盘分区信息;
根目录簇链建立模块:用于根据待建立文件总个数确定根目录所占用的簇数,并根据根目录所占用的簇数在FAT表中建立根目录的簇链关系;
类文件簇链建立模块:用于根据每一类文件中每个文件所占用的簇数,在内存中建立完一类文件中每个文件的簇链关系后将该类文件的簇链关系更新到磁盘的FAT表中;
类文件目录组织和建立模块:用于采用短文件名格式组织各文件目录项的字段,在内存建立完一类文件的所有目录项后将该类文件的所有目录项一次性写入磁盘中;以及
空闲扇区数回写模块:用于将保留区中分区剩余簇数修改为0,同时对FAT表中未使用的簇进行填充,完成文件建立。
6.根据权利要求5所述的一种FAT文件系统的预分配文件建立系统,其特征在于:所述文件系统信息获取模块中磁盘分区信息包括扇区字节数、每簇扇区数、总扇区数、FAT表个数、保留扇区数和FAT表大小。
7.根据权利要求5所述的一种FAT文件系统的预分配文件建立系统,其特征在于:每所述文件目录项占用32个字节。
8.根据权利要求5所述的一种FAT文件系统的预分配文件建立系统,其特征在于:所述类文件目录组织和建立模块进一步包括:文件目录项组织模块和文件目录项建立模块;
文件目录项组织模块:用于采用短文件名格式组织各文件目录项的字段;所述字段包括文件名、本文件的起始簇号、文件生成日期、文件的读写属性和文件长度;
文件目录项建立模块:用于根据文件类型在内存中建立同一类文件的所有目录项后,一次性把同一类文件的所有目录项写入磁盘中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510077470.2A CN104657471B (zh) | 2015-02-13 | 2015-02-13 | 一种fat文件系统的预分配文件建立方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510077470.2A CN104657471B (zh) | 2015-02-13 | 2015-02-13 | 一种fat文件系统的预分配文件建立方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657471A CN104657471A (zh) | 2015-05-27 |
CN104657471B true CN104657471B (zh) | 2020-05-12 |
Family
ID=53248598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510077470.2A Active CN104657471B (zh) | 2015-02-13 | 2015-02-13 | 一种fat文件系统的预分配文件建立方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657471B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912267B (zh) * | 2016-04-05 | 2019-01-18 | 深圳市四季宏胜科技有限公司 | 一种文件分配表处理方法和装置 |
CN111190869A (zh) * | 2019-12-27 | 2020-05-22 | 深圳市恒扬数据股份有限公司 | 文件存储方法及终端 |
CN112800007B (zh) * | 2021-01-28 | 2022-06-14 | 上海华元创信软件有限公司 | 适用于fat32文件系统的目录项扩展方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1508795A (zh) * | 2002-12-13 | 2004-06-30 | 康佳集团股份有限公司 | 摄录设备硬盘的数据存储方法 |
CN102253985A (zh) * | 2011-06-30 | 2011-11-23 | 深圳市江波龙电子有限公司 | 一种文件系统数据的管理方法及系统 |
CN102426586A (zh) * | 2011-10-25 | 2012-04-25 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中的fat文件存储方法 |
-
2015
- 2015-02-13 CN CN201510077470.2A patent/CN104657471B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1508795A (zh) * | 2002-12-13 | 2004-06-30 | 康佳集团股份有限公司 | 摄录设备硬盘的数据存储方法 |
CN102253985A (zh) * | 2011-06-30 | 2011-11-23 | 深圳市江波龙电子有限公司 | 一种文件系统数据的管理方法及系统 |
CN102426586A (zh) * | 2011-10-25 | 2012-04-25 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中的fat文件存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104657471A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230273876A1 (en) | Memory system, data storage device, user device and data management method thereof | |
CN104461391B (zh) | 一种存储设备元数据管理处理方法及系统 | |
US10423339B2 (en) | Logical block address mapping for hard disk drives | |
WO2016086819A1 (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
US20080126684A1 (en) | Caching method for nand flash translation layer | |
US20110145489A1 (en) | Hybrid storage device | |
US20150120988A1 (en) | Method of Accessing Data in Multi-Layer Cell Memory and Multi-Layer Cell Storage Device Using the Same | |
US8914579B2 (en) | Access device, information recording device, controller, and information recording system | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
CN108763531B (zh) | 一种mdvr文件存储系统及其运行方法 | |
CN104346357A (zh) | 一种嵌入式终端的文件存取方法及系统 | |
CN106104463B (zh) | 用于存储设备的故障安全操作的系统和方法 | |
CN111651127B (zh) | 一种基于叠瓦式磁记录盘的监控数据存储方法及装置 | |
CN103514249A (zh) | 一种数据自精简方法和系统及存储装置 | |
CN104657471B (zh) | 一种fat文件系统的预分配文件建立方法及系统 | |
CN111158602A (zh) | 数据分层存储方法、读取方法、存储主机及存储系统 | |
CN102200946B (zh) | 资料存取方法、记忆体控制器与储存系统 | |
CN105260139B (zh) | 一种磁盘管理方法以及系统 | |
CN106709014A (zh) | 一种文件系统转换方法及装置 | |
US20100131561A1 (en) | Disk layout method for object-based storage devices | |
CN104133640B (zh) | 从休眠快速恢复 | |
KR20090035938A (ko) | 하이브리드 디스크의 조각 모음 장치 및 방법 | |
KR20040072875A (ko) | 낸드 플래시 메모리를 이용한 저장장치 | |
CN109508140B (zh) | 存储资源管理方法、装置、电子设备及电子设备、系统 | |
CN108733575B (zh) | 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 361009 Fujian Province Xiamen Torch High tech Zone Software Park Innovation Building C Zone 303-E Patentee after: Xiamen Yaxun Zhilian Technology Co.,Ltd. Country or region after: China Address before: 361009 No.46, guanri Road, phase II, software park industrial base, Xiamen City, Fujian Province Patentee before: XIAMEN YAXON NETWORK Co.,Ltd. Country or region before: China |