文件系统类型基本介绍以及NTFS,exFAT,FAT32,XFS和EXT4文件系统适用场景(转载)

发布时间 2023-05-16 16:40:33作者: 晨米酱

windows上常见的exFAT,NTFS,FAT32 区别

  • NTFS:最早出现在windowsNT的日志文件系统,有文件加密(权限管理)、磁盘文件压缩(节省磁盘空间)、目录索引(方便快速查找)、支持长文件名(255个字符)、磁盘预警、大容量(根据簇的不同最大容量可以达到16~256TB,但存储文件过多,由于索引增多,文件碎片化可能会导致实际性能下降)、记录操作日志(数据安全)等特性
  • FAT32:较早的文件系统类型,兼容性好,但是最大仅支持2TB分区,NT内核仅限制为32GB,单个文件最大也仅4GB
  • exFAT:微软为了解决FAT32在大文件上表现不佳的问题,专门为闪存盘设计的文件系统类型。但是由于没有NTFS的许多特性并不适合作为系统分区使用

下表来源于exfat百度百科

分区格式 FAT32 NTFS exFAT ReFS
操作系统 Windows 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)

exFAT,NTFS,FAT32在LINUX上兼容情况

  • NTFS:由于是windows特有的文件系统类型,所以原生linux、macos默认不支持此文件系统类型。想使用这种文件系统类型的文件,linux需要安装第三方包,否则会提示I/O error或缺少驱动,macos需要开启相关功能。用NTFS制作的U盘也可能由于不兼容而无法读取,NTFS日志记录会频繁读写U盘某区域导致寿命下降。

  • exFAT支持macOS 10.6.5及以上的系统版,支持Linux Kernel 5.4及以上的内核版本。下图是在centos用fdisk执行识别出的u盘img

  • FAT32作为较老的文件系统类型兼容性上没有问题,下图是识别出的fat32类型u盘

    img

根据centos 7.5的文件系统介绍(man fs)

  • minix:在Minix操作系统上使用的文件系统,Linux上运行的第一种文件系统。它有很多限制:64M分区大小限制,短文件名,唯一时间戳等等。只有软盘或者RAM中可能用的到。
  • ext:minix文件系统的复杂扩展,已经被ext2文件系统完全取代,在核心(2.1.21)中已经完全移除。
  • ext2:在Linux的固定盘或者可移除媒体中表现优异的文件系统。ext2是ext文件系统的扩展,ext2可以给Linux的文件系统提供最佳支持(主要是速度和CPU使用上)。
  • ext3:ext2文件系统的日志版本,可以很容易的在ext2和ext3文件系统来回切换。
  • ext4:ext3的一系列更新,包括增加了很多特性,可靠性增强,支持更大的卷、文件、目录格式限制。
  • Reiserfs:由Hans Reiser设计的日志文件系统,整合进核心版本号2.4.1的Linux中。
  • XFS:SGI开发的日志文件系统,整合进核心版本号2.4.20的Linux中。
  • JFS:由IBM开发的日志文件系统,整合进核心版本号2.4.24的Linux中。
  • (xiafs、msdos、umsdos、ISO、hpfs、sysv、smb、ncpfs略过)
  • vfat:Microsoft Windows 95 和 Windows NT使用的一种扩展DOS文件系统。VFAT增加了MSDOS文件系统下可以使用长文件名的特性。
  • ntfs:代替Microsoft Window的FAT文件系统(VFAT,FAT32),在可靠性,表现,空间利用方面增加了像ACL、日志、加密等特性。
  • proc:作为核心的数据结构的接口而不是读取编译 /dev/kmem的假(虚拟)文件系统。尤其是它的文件不占用硬盘。
  • nfs:供远程电脑访问读取的网络文件系统。

选择NTFS,exFAT,FAT32,XFS和EXT4的哪一种作为文件系统

  • Windows系统适合用NTFS文件系统类型做系统分区
  • Windows Vista/7非常依赖NTFS的文件许可等特性,你无法把windows安装在exFAT文件系统类型的磁盘上,即便你不想使用NTFS的特性。
  • 虽然exFAT设计上是为了取代FAT32,但是由于微软授权机制的限制,exFAT的普及并不广泛,在消费电子领域的应用也不是特别多。linux上也应该注意内核版本是否符合要求,比如上图的CentOS7.5仅能识别出exFAT但是无法挂载U盘。
  • 如果你经常需要在Linux和Windows上用U盘互相传文件,而且Linux核心版本又比较低,推荐还是FAT32(不考虑兼容使用exFAT)。用FTP或者SCP不香吗?
  • 在Windows上用U盘传文件,无脑做成exFAT就行。
  • 你使用的数据库可能在某一种文件系统上发挥更好的性能,所以优先看数据库官方文档的推荐选择。
  • ext4的分区容量达到1EB,而文件则达到16TB;xfs是一个64位文件系统,最大支持8EB减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32位Linux系统,文件和文件系统的大小会被限制在16TB。所以根据你存储内容的情况来选择。
  • 在linux上,一般情况下最好使用ext4文件系统,因为其向后兼容性很好,你可以把ext2、ext3的文件系统按照ext4挂载。并且ext4可以有效减少碎片,对于SSD和HDD硬盘是很好的选择。
  • XFS由于其对大文件的吞吐性能良好,因此对于媒体文件系统是个不错的选择。但是由于对小文件的不可预测的表现,大多数Linux发行版需要分割/boot(这里参考原文开始不说人话了,个人理解是XFS更适合用在存储数据文件的分区上,而不宜用在系统分区,除非你想给自己找点麻烦)

原文链接:https://www.cnblogs.com/hypertechnology/p/10374542.html

参考