引子
拷贝一个大文件(大于4G)到8GU盘时,报存储空间不足,查看u盘属性,发现空间足够,原因是FAT32文件系统支持的最大单文件大小为4G。需要重新格式化u盘为NTFS格式,但发现居然木有NTFS选项,多了一个exFAT文件系统选项,这个还是头一次见,于是查了一下资料。现把几种U盘常用的文件系统做一下归纳比较。本文只介绍windows操作系统下文件系统,linux上使用的文件系统要多一些,这里不做介绍。
本文将对比总结一下几个文件系统:FAT16、FAT32、NTFS和exFAT。
FAT16
FAT(File Allocation Table)是“文件分配表”的意思。顾名思义,就是用来记录文件所在位置的表格。FAT16使用16位的簇寻址空间,因此最多可寻址65536个簇。簇(簇是磁盘空间分配的最小单元)大小随文件系统所在的磁盘分区空间的增大而增大。FAT16文件系统分区大小与簇大小的关系如下表:
分区大小 | FAT16簇大小 |
16MB-127MB | 2KB |
128MB-255MB | 4KB |
256MB-511MB | 8KB |
512MB-1023MB | 16KB |
1024MB-2047MB | 32KB |
FAT16文件系统有3个最大的缺点:
- 磁盘分区最大只能到2GB(2^16 * 32KB = 2GB)。
- 空间浪费。例如,簇大小为32KB时,即使文件只有1Byte,也将使用32KB的存储空间。
- FAT文件系统的通病。当文件删除后写入新资料,FAT不会将档案整理成完整片段再写入,长期使用后会使档案资料变得逐渐分散,而减慢了读写速度。为了保持FAT文件系统的效率必须经常进行磁盘碎片整理。
现今u盘容量不断增大,由于以上两个原因,u盘很少再使用FAT16文件系统了,而更多使用FAT32。
FAT32
FAT32文件系统采用32位的簇寻址空间,使其对磁盘的管理能力大大增强,突破了FAT16对每一个分区的容量只有2 GB的限制。FAT32文件系统最大大单文件大小为4 GB;最多268,435,437个文件。
FAT32相比于FAT16,有如下优点:
- 可支持大于2GB的分区。最大可达2TB(windows 2000和windows XP能够读写任何大小的FAT32文件系统,但是这些平台上的格式化程序只能创建最大32GB的FAT32文件系统。)。
- 空间利用率更高。FAT32采用了更小的簇,可以更有效率的保存数据。
- 更稳定。FAT32文件系统可以重新定位根目录和使用备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。
- 活性更高。FAT32分区上的根文件夹是普通的簇链,因此它可以位于驱动器上的任何位置。以前对根文件夹数量的限制不复存在。此外,可以禁用文件分配表镜像,这样就可以让文件分配表的副本而不是让第一个文件分配表处于活动状态。这些功能允许您动态重调FAT32分区的大小。不过要注意,虽然FAT32的设计允许这一功能,但微软自己的分区软件不支持此功能,需要使用第三方分区软件。
FAT32有以下缺点:
- 单个文件大小不能超过4GB。如果想用u盘拷贝高清电影,就不要格式化为FAT32格式。
- FAT文件系统的通病。当文件删除后写入新资料,FAT不会将档案整理成完整片段再写入,长期使用后会使档案资料变得逐渐分散,而减慢了读写速度。为了保持FAT文件系统的效率必须经常进行磁盘碎片整理。
NTFS
NTFS(New Technology File System)是Windows NT以及之后的Windows 2000、Windows XP、Windows Server 2003、Windows Server 2008、Windows Vista和Windows 7的标准文件系统。NTFS已经取代了FAT文件系统,为Microsoft的Windows系列操作系统提供文件系统。NTFS的目标是提供比FAT32更高的可靠性,并消除FAT文件系统中的种种限制。
NTFS尽管是windows系列操作系统的主流文件系统,但其不适合作为u盘等闪存卡的文件系统。
NTFS虽然有诸多优点,但这些都是针对传统机械硬盘而设计的,对于新兴的Flash闪存材料不一定适用。NTFS属于“日志”文件系统,因为要记录磁盘的详细读写操作,对U盘这种快闪存储介质会造成较大的负担,比如同样存取一个文件或目录,在NTFS系统上的读写次数就会比FAT32来得多,理论上NTFS格式的U盘比较容易损坏,而且400MB以下的分区也比FAT16更浪费空间。
NTFS这些额外的功能无论对SSD硬盘和U盘都会造成不同程度的伤害,因此新一代windows7操作系统专门针对SSD进行优化,通过各种手段减少读写次数和碎片的产生。而对于U盘来说,本身USB的带宽就有限,NTFS文件系统频繁读写占据通道会让磁盘性能降低,为此微软专门针对移动存储设备开发了ExFAT文件系统。exFAT
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更为适用。
exFAT相较于FAT文件系统,有以下优势“
- 增强了台式电脑与移动设备的互操作能力。
- 单文件大小最大可达16EB(18 446 744 073 709 551 616字节,就是(理论值,16×1024×1024TB),1TB=1024G)。
- 簇大小可高达32MB。
- 采用了剩余空间分配表,剩余空间分配性能改进。
- 同一目录下最大文件数可达65 536个。
- 支持访问控制。
- 支持TFAT。
需要强调的一点是:exFAT只是一个折中的方案,只为U盘而生。
结论
许多操作系统上默认的大容量U盘格式化文件系统默认为NTFS,但这种日志文件系统对U盘的伤害比较大,不推荐使用。建议使用exFAT格式化大容量U盘。尽管exFAT格式可能存在兼容性问题,但其不失为目前大容量u盘的一个最好解决方案。