» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 20 12
发新话题
打印

[其他] 为什么FAT32格式有时候可以超过32GB?

posted by wap, platform: Android
引用:
原帖由 @xphi  于 2016-9-22 22:19 发表
通常认为这是微软故意设置的限制,因为从Windows2000开始Fat32格式化工具才有32G的限制,Windows98都可以格式化出大约127G的Fat32卷,大约是28位簇空间和512字节簇大小限制的上限(2^28*512 = 128G)。

Windows 2000以后放开了更大的簇大小,最大可以到64k,即单卷理论大小可以到16T(2^28*64k = 16T),不过微软限制了自己的格式化工具最大只能格式化32G的卷而且对原因语焉不详,所以都认为这是微软为了推NTFS有意压制Fat32。
比较赞同,当初微软做出这个限制确实有推NTFS的考虑,不过现在拿到新硬盘你会格成FAT32么?4G最大文件限制就够你喝一壶的了……后来微软为啥专门出一个给U盘用的exFAT文件格式而且改专门给XP出支持补丁?不就是随着技术的发展FAT32上的4G最大文件限制…


TOP

这个是Windows的强行限制……对于大于32GB的FAT32分区,Windows可能有兼容性问题,因此自从Windows XP起便不再支持。至少不给官方支持,你用第三方软件弄出来的,有问题活该。
Windows XP也是最后一个可以把OS安装到FAT32分区上的Windows。假如你想把它装到一个大于32GB的分区上会怎么样呢?直接不给装。

实际上,从技术上来看,FAT32的最大支持大小非常大。
FAT32使用32位(2^32)存储簇的数量&每簇的扇区数,那么对于一个标准扇区的驱动器来说,每扇区512字节,总容量为512*2^32字节,即2TB。对于一个高级格式化扇区的驱动器来说(不懂的自己去搜),每扇区为4KB,同理可得总容量最大为16TB……
看着很美好是吧?但是对于单个文件大小来说,最大限制为2^32-1字节,即4GB-1字节……这个没办法突破。给FAT32下了死刑。



TOP

引用:
原帖由 xphi 于 2016-9-22 22:19 发表
通常认为这是微软故意设置的限制,因为从Windows2000开始Fat32格式化工具才有32G的限制,Windows98都可以格式化出大约127G的Fat32卷,大约是28位簇空间和512字节簇大小限制的上限(2^28*512 = 128G)。

Windows 2 ...
还是兼容性问题
多年以前见过有总结的 一堆程序不兼容 于是直接BAN掉
况且4GB文件大小是死结
NTFS从设计上来说也确实先进很多


TOP

引用:
原帖由 EraserKing 于 2016-9-22 22:37 发表
这个是Windows的强行限制……对于大于32GB的FAT32分区,Windows可能有兼容性问题,因此自从Windows XP起便不再支持。至少不给官方支持,你用第三方软件弄出来的,有问题活该。
Windows XP也是最后一个可以把OS安装到 ...
2T和16T这个数字对,不过算法有错误。

2T是由于MBR分区表最大只支持单分区2T,其实和Fat无关;Fat32簇地址其实只有28位,高4位是保留的,但是单簇最大可以到64K,所以算出来也正好是16T,此外一般都最大只会用32K的簇大小,所以前面也有人说单卷理论上限是8T。

TOP

引用:
原帖由 xphi 于 2016-9-22 22:48 发表


2T和16T这个数字对,不过算法有错误。

2T是由于MBR分区表最大只支持单分区2T,其实和Fat无关;Fat32簇地址其实只有28位,高4位是保留的,但是单簇最大可以到64K,所以算出来也正好是16T,此外一般都最大只会用 ...
年代过于久远,具体怎么算的确实是错了。

FAT32的簇地址是32位中的28位
FAT32分区的Boot Sector中,有两个参数决定了簇大小
第一个,扇区大小(2字节),第二个,每簇的扇区数(1字节)
对于前者,一般是512
对于后者,有效值为2^0~2^7中的2的各次幂,即1 2 4 8 16 32 64 128
由此可知,分区的最大大小为2^28(簇数)* 128(每簇扇区数)* 512(扇区大小)=2^28 * 2^7 * 2^9或者2^12 = 2^44 = 16TB

TOP

 20 12
发新话题
     
官方公众号及微博