来源:公众号【鱼鹰谈单片机】

作者:鱼鹰Osprey

ID   :emOsprey

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 调试经验总结

线程CPU使用率到底该如何计算?

许久以后,你会感谢自己写的异常处理代码

终极串口接收方式,极致效率

延时功能进化论(合集)

如何写一个健壮且高效的串口接收程序?

打了多年的单片机调试断点到底应该怎么设置?| 颠覆认知

-THE END-


如果对你有帮助,记得转发分享支持鱼鹰!

微信公众号「鱼鹰谈单片机」

每周一更单片机知识

长按后前往图中包含的公众号关注

图解 FAT 文件系统之基础知识(一)相关推荐

  1. git flow 命名规范 驼峰_图解ThinkPHP5框架(一):基础知识,开发规范与目录结构

    php中文网最新课程 每日17点准时技术干货分享 基于最新ThinkPHP5.0.8制定,原稿是xmind思维导图制作,如果觉得图片看不太清楚,可以下载xmind源文件,用xmind软件打开. 另外, ...

  2. 分布式文件系统KFS基础知识介绍

    Kosmos distributed file system,简称KFS,是一个类GFS的分布式文件系统,被设计用于分布式的结构化存储.下面将对KFS的体系结构进行简单介绍,最后给出一个使用KFS C ...

  3. fat文件系统基础知识

    文件分配表(英语:File Allocation Table,首字母缩略字:FAT),是一种由微软发明并拥有部分专利的文件系统,供MS-DOS使用,也是所有非NT核心的Windows系统使用的文件系统 ...

  4. Linux操作系统文件系统基础知识详解

    标签:基础知识操作系统根目录Linux程序 一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Li ...

  5. linux文件系统基础知识

    这两天看了一本fedora 6的实践教程,下面是有关linux文件系统知识的学习笔记: 1.linux文件系统分配策略:     块分配( block allocation ) 和 扩展分配  ( e ...

  6. linux文本运行层次,Linux基础知识之---文件系统层级结构

    #Linux基础知识之---文件系统层级结构 @(Linux系统)[基础知识,文件系统,层级结构,FHS] 一切皆文件: 在Linux中,无论是目录.配置.cpu.内存.键盘.鼠标.或者运行中的系统及 ...

  7. unix/linux文件系统基础知识

    1.linux文件系统分配策略: 块分配( block allocation ) 和 扩展分配 ( extent allocation ) 块分配:磁盘上的文件块根据需要分配给文件,避免了存储空间的浪 ...

  8. 常用电子元件基础知识(图解)

    常用电子元件基础知识(图解) 分类: 基础电路2009-04-16 16:483387人阅读评论(5)收藏举报 工作c测试存储 电容 电容器俗称电容.它是在两个金属电机之间夹了一层电介质构成.所以它具 ...

  9. Linux基础知识与文件系统简介

    Linux基础知识与文件系统简介 参考文献:Ubuntu Linux 基础教程 Linux是在什么样的历史背景下出现的 Linux的诞生与发展与UNIX系统.Minix系统.Internet.GNU计 ...

  10. linux基础知识之磁盘管理及文件系统

    linux基础知识之磁盘管理及文件系统管理 磁盘管理及文件系统管理 一.磁盘硬件介绍 1. 接口类型 2. 硬盘种类 3. 磁盘命名 二.磁盘分区及文件系统介绍 1. 分区 1.1 什么是分区 1.2 ...

最新文章

  1. SQLite header and source version mismatch解决方案
  2. 正则表达式 (re包)——python(快餐)
  3. 【信号与系统】三大变换公式表 | 傅里叶变换 | 拉普拉斯变换 | Z变换
  4. Android EditText监测(TextWatcher)输入后延时500ms再搜索
  5. python定义结构体_python中定义结构体的方法
  6. 服务器系统怎么打驱动精灵,win7系统如何使用驱动精灵?教你在win7系统使用驱动精灵的方法...
  7. Java集成快递100的订阅服务和根据物流单号查询物流详情的接口
  8. 启动系统提示“NTLDR is missing”的解决办法
  9. 《西部世界》第三季开播,机器人会比人类更有人性吗?
  10. 基于JAVA高校教材征订管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  11. fiddler手机下载证书提示No root certificate was found. Have you enabled HTTPS traff 解决方法 及手机配置代理后无网络问题
  12. 请假工资扣费总额计算机公式,病假扣款计算公式excel
  13. 著者四角号码查询_著者姓名汉语拼音与四角号码数字混合编制书次号之见
  14. 什么是客户关系管理CRM?
  15. linux xdm 启动执行文件,Linux下配置XDM登录服务器
  16. JAVA测试题-定义一个运动员(Sportsman)类,包含姓名(name)、跳高(highJump)
  17. html5 xml在线编辑,XML 编辑器
  18. OpenStack-Ironic裸金属简介
  19. js setTimeout 参数传递使用
  20. 判断浏览器是pc端还是手机端

热门文章

  1. cad怎么查找未闭合_CAD应该怎么测量图形?未封闭、不规则的图形要这样测量
  2. linux系统自动获取ip地址,Linux系统怎么自动获取ip地址用什么命令
  3. linux取ip地址命令,linux下命令取IP地址的多种方法
  4. 【R】ggplot2_堆积图
  5. MATLAB——数据类型
  6. PLC开发没有前景想转行嵌入式,找个培训机构还是自学?
  7. js下载视频(mp4格式)
  8. 用友T1商贸宝批发零售版SQL SERVER数据库恢复
  9. html语言ppt,htmlppt课件
  10. MetaMask新版本新增获取并修改用户剪切板内容权限