1.FAT16

FAT16按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。我们来分别介绍一下:
(1)MBR区(主引导扇区)
MBR (Main Boot Record),按其字面上的理解即为主引导记录区,位于整个硬盘的0柱面0磁头1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的 446个字节(偏移0--偏移1BDH),另外的64个字节(偏移1BEH--偏移1FDH)交给了DPT(Disk Partition Table硬盘分区表),最后两个字节"55,AA"(偏移1FEH- 偏移1FFH)是分区的结束标志。这个整体构成了硬盘的主引导扇区。

DPT共有4项64字节,每个分区表项有16个字节,每字节含义如下:
偏移 长度     所表达的意义
0      字节     分区状态:如0-->非活动分区
                      80--> 活动分区
1      字节     该分区起始头(HEAD)
2      字         该分区起始扇区和起始柱面
4      字节     该分区类型:如82--> Linux Native分区
                       83--> Linux Swap 分区
5      字节     该分区终止头(HEAD)
6      字         该分区终止扇区和终止柱面
8      双字     该分区起始绝对分区
C     双字      该分区扇区数

下面,我们以一个实例让大家更直观地来了解主引导记录:
例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00
在这里我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导;"01 01 00"表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;"0B"表示分区的系统类型是FAT32,其他比较常用的有04 (FAT16)、07(NTFS);"FE BF FC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F 00 00 00"表示首扇区的相对扇区号为63;"7E 86 BB 00"表示总扇区数为12289622。

(2)DBR区
DBR (Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为 BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msdos.sys)。如果确定存在,就把其读入内存,并把控制权交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。

(3)FAT区
在DBR 之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。

在解释文件分配表的概念之前,我们先来谈谈簇(cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……
通过上文我们已经知道,同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。硬盘上的文件常常要进行创建、删除、增长、缩短等操作。这样操作做的越多,盘上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。不过,这种以簇为单位的存储法也是有其缺陷的。这主要表现在对空间的利用上。每个文件的最后一簇都有可能有未被完全利用的空间(称为尾簇空间)。一般来说,当文件个数比较多时,平均每个文件要浪费半个簇的空间。

好了,我们言归正传,为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。
由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为"未占用",但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为"坏簇",以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。

FAT的格式有多种,最为常见和为读者所熟悉的是FAT16和FAT32,其中FAT16是指文件分配表使用16位数字,由于16位分配表最多能管理65536(即2的16次方)个簇,也就是所规定的一个硬盘分区。由于每个簇的存储空间最大只有32KB,所以在使用FAT16管理硬盘时,每个分区的最大存储容量只有(65536×32 KB)即2048MB,也就是我们常说的2G。

现在的硬盘容量是越来越大,由于FAT16对硬盘分区的容量限制,所以当硬盘容量超过2G之后,用户只能将硬盘划分成多个2G的分区后才能正常使用,为此微软公司从Windows 95 OSR2版本开始使用FAT32标准,即使用32位的文件分配表来管理硬盘文件,这样系统就能为文件分配多达4294967296(即2的32次方)个簇,所以在簇同样为32KB时每个分区容量最大为2的47次方bit,即128T,另外还有MBR的限制(最大为2T,参见下一节FAT32),但是不同的操作系统会做限制,比如限制为32G,128G等。

此外使用FAT32管理硬盘时,每个逻辑盘中的簇长度也比使用FAT16标准管理的同等容量逻辑盘小很多。由于文件存储在硬盘上占用的磁盘空间以簇为最小单位,所以某一文件即使只有几十个字节也必须占用整个簇,因此逻辑盘的簇单位容量越小越能合理利用存储空间。所以FAT32更适于大硬盘。

(4)DIR区(根目录区)
DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

(5)数据(DATA)区
数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。

FAT16(Windows):支持最大分区2GB,最大文件2GB。通过上面的FAT16的fat区的概念可以算出来

2.FAT32

FAT32是FAT16的升级版,也是由MBR区、DBR区、FAT区、DIR区和DATA区五部分组成,不过FAT区使用了32bit宽的簇地址,所以称为FAT32。但在微软件的文件系统中只使用了低28位。

FAT32(Windows):支持最大分区128GB,最大文件4GB。这是为什么呢?

首先说最大分区,按照FAT16的计算方法,FAT32支持最大2的32次方个簇,即使微软只是用低28位,也支持2的28次方个簇,以每簇32字节来算,也就是2的15次方bit,单分区最大为2的28次方乘以2的15次方,即2的43次方bit(8T).如果单分区最大为2的32次方乘以2的15次方,得到2的47次方bit(128T)。但是MBR区也有一个单分区的所能包含的最大的扇区数的限制,在MBR区中的每一个DPT项为16字节,表示每个分区的扇区数占4个字节(参见第一节FAT16的内容),则每个分区的最大扇区数就是2的32次方,每个扇区为512字节(即2的9次方bit),可知每个分区最大为2的32次方乘以2的9次方,得2的41次方bit(即2T)。所以FAT32采用MBR引导时最大支持的单分区大小为2T,要想突破2T就得使用GPT引导。MBR与GPT的区别请自行查阅。

2T只是理论上的值,不同的操作系统又会做限制,微软就会针对不同版本的操作系统限制为32G,128G等。

其次说说最大文件为什么是4G ?  按照FAT16的算法,即使微软做了限制,不是2T,也应该是32G或128G,那为什么是4G呢?

因为FAT32文件系统里,表示文件长度信息的内容是保存在一个4字节的数值里的,4字节二进制能表示的最大数就是4294967295,这个数正好是4GB-1字节。

下图是一个FAT32文件系统目录项的截图:

黄框表示文件名,红色框是文件尺寸,可以看到文件尺寸一共就4个字节,所以最多能表示的数字就是4GB-1,再大就变成0了。

机械硬盘的基本支持参见这篇文章 https://www.cnblogs.com/zoneofmine/p/6373468.html

关于FAT32格式详细内容可以参考这篇文章 https://blog.csdn.net/marcosun_sw/article/details/84586379 此文章我认为有诸多错误,可以批判的学习吸收

3.NTFS

NTFS是微软开发的一套私有文件系统,因为不开源所以资料很少,可以参考这篇文章进行学习http://www.360doc.com/content/15/1018/23/27952349_506612064.shtml

4.exFAT

exFAT(Extended File Allocation Table File System,扩展FAT,即扩展文件分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT更为适用。对于磁盘,NTFS文件系统更适合使用,exFAT不适用。

5.ReFS

ReFS(Resilient File System,弹性文件系统) 是在Windows Server 2012中新引入的一个文件系统。只能应用于存储数据,还不能引导系统,并且在移动媒介上也无法使用。

ReFS是与NTFS大部分兼容的,其主要目的 是为了保持较高的稳定性,可以自动验证数据是否损坏,并尽力恢复数据。如果和引入的Storage Spaces(存储空间)联合使用的话则可以提供更佳的数据防护。同时对于上亿级别的文件处理也有性能提升。

下面请看ReFS、exFAT、NTFS、FAT32分区的比较

分区格式

FAT32

NTFS

exFAT

ReFS

操作系统

Win 95 OSR2之后

Windows 2000之后

Windows CE 6/Vista SP1/Windows 7之后

Windows Server 2012之后

最小簇

512bytes

512bytes

512bytes

4096bytes

最大簇

64KB

64KB

32768KB

64KB
同一目录最大文件数 65535 4294967295 2796202 18446744073709551615

最大单一文件

4GB(2^32-1bytes,4294967295bytes)

256TB(2^48-1bytes,281474976710655bytes)

16EB(2^64-1bytes,18446744073709551615bytes)

16EB(2^64-1bytes,18446744073709551615bytes)

最大格式化容量

2TB(但NT内核系统限制为32GB)

2TB~256TB(受MBR影响,GPT分区格式可以更大)

64ZB(理论值,目前支持到128PB)

1YB(2^80bytes)

档案数量

4194304

至少可以大于1000

tips:

FAT32(Windows):支持最大分区128GB,最大文件4GB。

NTFS(Windows):支持最大分区2TB,最大文件64GB。

FAT16(Windows):支持最大分区2GB,最大文件2GB。

HPFS(OS/2):支持最大分区2TB,最大文件2GB。

Ext3(LINUX) Filesystem:

Block 大小 1KB 2KB 4KB
最大单一档案大小 16GB 256GB 2TB
最大文件系统总容量 2TB 8TB 16TB

JFS(AIX):支持最大分区4P(block size=4k),最大文件4P。

XFS(IRIX):这是个正经的64位的文件系统,可以支持9E(2的63次方)的分区。

FAT16 FAT32 NTFS exFAT ReFS相关推荐

  1. U盘的FAT32/NTFS/exFAT文件系统类型区别详解

    U盘的FAT32/NTFS/exFAT文件系统类型区别详解 U盘相信大家非常熟悉了,用户在格式化U盘的时候可以选择文件系统:FAT32/NTFS/exFAT,那么这三个文件系统又有什么区别呢?下面我们 ...

  2. 唠唠 U盘格式 (Normal:FAT32 NTFS exFAT)以及U盘格式化选什么格式好???

    本文适用人群:  抱着学习的态度的人儿                            格式化U盘不知道怎么选择格式的      想要用U盘作为Mac和Windows电脑传输文件的 U盘是我们现 ...

  3. NTFS、FAT32、exFAT这三种格式的区别

    2019独角兽企业重金招聘Python工程师标准>>> NTFS.FAT32.exFAT是我们使用电脑最常见的分区了,它们之间有什么区别呢. NTFS.FAT32.exFAT一个比较 ...

  4. 【软件工具】之磁盘格式 FAT32、exFAT、NTFS

    一.前言 在对硬盘或U盘进行格式化的时候,往往会出现我们选择想要的格式,而常见的格式有 FAT32.exFAT.NTFS 这几种,那么,这几种格式有什么区别呢,我们怎么进行选择呢?下面将对这几种格式进 ...

  5. FAT32、exFAT 和 NTFS 之间有什么区别?

    杜尔莱克/Shutterstock.com 无论您是格式化内部驱动器.外部驱动器.USB 闪存驱动器还是 SD 卡,Windows 都可以让您选择使用三种不同的文件系统:NTFS.FAT32 和 ex ...

  6. FAT32,exFAT和NTFS有什么区别?

    Whether you're formatting an internal drive, external drive, USB flash drive, or SD card, Windows gi ...

  7. Linux之NTFS、FAT32、exFAT 各种格式硬盘挂载整理

    背景 由于业务需要频繁处理大量视频(几十GB),通过公司内网传输太慢,于是就每次处理视频时需要在服务器挂载硬盘或U盘.业务人员给的硬盘或U盘格式有时不一样,目前遇到的格式:NTFS.FAT32.exF ...

  8. Linux之NTFS、FAT32、exFAT各种格式硬盘挂载整理

    前言 在liunx操作系统下,我们文件传输常常会用U盘.移动硬盘等传输,但常常会遇到liunx不支持NTFS.FAT32.exFAT格式驱动器的问题.这几种格式恰恰是windows系统常用的.遇到的格 ...

  9. U盘文件系统FAT32、exFAT、NTFS之间有什么区别?

    U盘文件系统FAT32.exFAT.NTFS之间有什么区别? U盘的存在对于经常拷贝资料的用户来说是再熟悉不过了,TA支持热插拔,使用方便,操作也很简单.但不同的U盘有这不同的文件系统格式,像FAT3 ...

  10. FAT32 or exFAT or NTFS,三种U盘格式的联系与区别

    U盘格式包括三种:FAT32.exFAT 和 NTFS,那么这三个格式具体有什么区别呢? (1) FAT32(File Allocation Table 32bit) 32位文件分配表,FAT32文件 ...

最新文章

  1. WordPress 网站开发“微信小程序“实战(二)
  2. protoc gen php,protoc-gen-php --php_out: protoc-gen-php: Plugin output is unparseable.
  3. java实验四云南大学_云南大学JAVA程序设计实验四
  4. python的闭包及装饰器
  5. Gromacs文件-Chapter1
  6. 线程间同步的几种方法--互斥锁,条件变量,信号量,读写锁
  7. 查看 mysql 状态_查看mysql状态的常用命令
  8. datagrid在MVC中的运用02-结合搜索
  9. VS2017设置背景主题
  10. go语言打印日期_go语言基础:流程控制(4)-多重循环跳转控制
  11. Oracle 11gR2学习之二(创建数据库及OEM管理篇)
  12. Python 文件处理命令
  13. Linux system PXE网络环境
  14. keil添加华大芯片支持jflash下载
  15. Autocad 字体
  16. 分论坛介绍:机器学习、企业数据中台、实验科学与因果推断
  17. Exch:POP3 和 IMAP4 操作指南
  18. cpci检索为什么那么慢_cpci检索论文含金量高吗?
  19. 第二集 第一魂环 第十章
  20. html table 内外边框,HTML_TABLE内外边框

热门文章

  1. 如果你的电脑只能安装三个软件, 你会选择哪三个?
  2. 向iPhone模拟器中添加视频
  3. 【CDN学习笔记6】CDN回源到阿里云主机被拒绝的案例
  4. 传智播客JavaWeb听课总结
  5. PT1000 电桥测温
  6. 无线网络 看不到其他计算机,win10看不到无线局域网其他电脑
  7. ei加声调怎么加_大班拼音ei的教案
  8. 5款自动爬取数据的神器!
  9. mysql中临时字段_MySQL临时表
  10. .chm文件是什么怎么打开?