加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 文件系统整体结构
    • MBR
    •  
    • MBR
    •  
    • 隐藏扇区
    •  
    • 保留扇区
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

图解 FAT 文件系统之基础知识(一)

2020/12/15
339
阅读需 8 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

FAT 文件系统是什么,当你格式化 U 盘之后 U 盘发生了什么,为什么删除的文件还可以再恢复?买的 U 盘明明写着 16 G,实际却只有 15 G,这里隐藏了什么事实?这些问题,将由鱼鹰一一为你解答(佛系更新,喜欢的话就关注鱼鹰吧)。

FAT 文件系统随着发展,经历了多个版本,从 FAT12 到 FAT16 再到 FAT32,exFAT,每一个版本的迭代都是容量的巨大提升……你以为鱼鹰会像书本一样长篇大论历史?那你错了,关于这些历史感兴趣的话可以自行查阅资料,鱼鹰就不多谈了。本篇主要介绍 FAT 文件系统的通用知识点。

文件系统整体结构

我们看看当你的 U 盘(16 G,鱼鹰亲自试验并图解)格式化为 FAT32 格式后,U 盘发生了什么:

这里将 U 盘分成了三个分区,类似你将电脑的硬盘分成 C 盘、D 盘、E 盘,这里的新加卷、分区 2、分区 3 就是目前 U 盘上建立的三个分区,但事实上,我们一般不会将 U 盘分成三个分区,一个就够用了,只是鱼鹰想告诉你,这在 U 盘也可以做到。

MBR

在 FAT 文件系统中, 0 扇区必定是 MBR,这个扇区包含了磁盘(U 盘)很多信息,比如整个 U 盘的大小(容量),即扇区总数,各个分区的起始扇区、分区大小,引导代码等。

前面 446 个字节和主引导代码有关,因为在单片机系统中一般不会使用这种引导方式引导操作系统,所以按下不表。我们主要关注后面的分区信息和一些标志:

分区表项具体含义可看该图:

这里有一个标志,即扇区最后的两个字节,一般是 55 AA(0xAA55),如果说你的扇区里面没有这个标志,那么系统就不认为这是一个 FAT 文件系统,更不用说进行接下来的其他验证操作了。我们从上图可以看到,一个 MBR 可以记录四个分区信息,但是你会发现你的 U 盘可以分成超过四个分区,那么这又是怎么回事?原因在于,可以使用逻辑分区。即可设置三个主分区,另一个分区设置为逻辑分区,这个逻辑分区里面可以分成很多很多分区,这就是它为什么能创建超过四个分区的原因。当然,我们目前也没必要深入了解逻辑分区是怎么一回事,先把基本分区搞定再说。

 

MBR

说完 MBR,我们再说一个和 MBR 很像的一个扇区,DBR。

从上图我们可以看到,每一个分区的第一个扇区必定是 DBR,这是做什么用的?我们知道 MBR 记录的分区信息十分有限,只有分区的开始扇区、分区的大小、分区类型、引导标志(表示该分区是否可被引导,通俗的话说,就是这个分区是否存在操作系统)等有限信息,我们不知道这个分区叫什么名字,文件系统的版本号是多少等。所以我们需要一个扇区保存这些信息。这就是 DBR 的作用。如果说 MBR 保存的是整个磁盘的基本信息,那么 DBR 保存的就是当前分区的基本信息。

我们可以看到 DBR 的扇区结尾也是一样的结束标志,所以它们是比较相似的,在有些资料中,如果不区分它们的话,很容易让人迷惑。

 

隐藏扇区

细看这张图,你会发现其中存在隐藏扇区。隐藏扇区指的是扇区 0 到 DBR 扇区之间的空间。换句话说,从整个磁盘开始到分区部分的扇区称之为隐藏扇区(每一个分区都有自己的隐藏扇区),因为这些扇区对于分区而言是不可见的,也不可以被分区内的文件系统所管理。这部分扇区数保存在 DBR 中。当然,除了这部分扇区不被当前分区管理外,其他分区也不可以被当前分区管理,也可说其他分区也对当前分区隐藏了,但不被 DBR 所记录。从这个角度说,每一个分区都是一个独立的文件系统,比如一个 U 盘可以同时创建一个 FAT32 文件系统分区,同时还可以创建一个 FAT16 文件系统分区,他们之间并不会相互影响。同时,格式化某个分区不会影响其他分区的正常使用,比如 C 盘格式化或重装系统并不会影响 D 盘的数据,这就是为什么说要分区的原因了,否则一个硬盘只分一个区,想重装系统的话,很多数据都会丢失,包括桌面文件。这就是为什么最好把数据放在除 C 盘外的区域了,当然为了方便,你也可以使用快捷方式,将文件指向其他盘,而将快捷方式放桌面。

 

保留扇区

在每个分区之内,我们可以看到有部分扇区被文件系统认为是保留扇区,而这些所谓的保留扇区才是实现 FAT 文件系统的关键。

(这里为了图解清晰,并没有按照比例图解,实际上,数据区比保留区空间大的多)这里有 DBR、FSINFO、FAT,还有为了安全考虑,存有他们的备份信息(如果文件系统损坏,可以尝试使用备份恢复他们)。但我们还可以从上面知道,除了这些,还有一部分是真正的保留扇区,即上面的空白部分,这些保留扇区大小不是固定的,但确实占用了空间,而你却无法使用它们。文章开头,有个疑问,为什么明明买的是 16 G U 盘,格式化后,系统却提示我们只有 15 G,这少了 1 G 空间去哪了?最大头,我相信大家都知道了,就是 1024 和 1000 进制的区别了,商家说的 16 G 是按照 1000 为单位的,而系统按照 1024 计算,当然不一致了。还有就是一般 MBR 之后会有一些保留分区存在(如果磁盘空间有限,可以不需要)。另外就是文件系统本身占用的空间了(即上面的保留扇区),如果有多个分区,那么显示的只有当前分区的大小,其他分区大小是无法查看的。而如果是单个分区,那么显示的大小只是数据区大小而已,保留区并不在显示空间内,你也不能直接通过文件的方式操作它。

 

还有就是数据区的空间使用簇来进行管理的,不满一簇大小的扇区空间,将直接丢弃不被文件系统所使用,这也会损失一点空间。而有些分区为了效率,会将分区进行对齐处理,未对齐部分也不能使用。种种原因,导致显示的空间比实际要小,不过对于大容量的存储介质来说,这点损失根本不算什么,而且在后面你会发现,为了高效管理空间,还有其他损失。

本篇笔记本打算介绍分区的簇、FAT 等相关知识的,但目前文章太长了,只能下期再见了。

相关推荐

电子产业图谱

六年开发经验,丰富的KEIL调试经验,STM32使用经验,C语言运用经验。