FAT16 FAT32 NTFS exFAT ReFS

1 篇文章 0 订阅
1 篇文章 0 订阅

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、NTFSFAT32分区的比较

分区格式

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
同一目录最大文件数655354294967295279620218446744073709551615

最大单一文件

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 大小1KB2KB4KB
最大单一档案大小16GB256GB2TB
最大文件系统总容量2TB8TB16TB

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值