hypertechnology

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盘
  • FAT32作为较老的文件系统类型兼容性上没有问题,下图是识别出的fat32类型u盘

 

根据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。用FTP或者SCP不香吗?
  • 在Windows上用U盘传文件,无脑做成exFAT就行。
  • 你使用的数据库可能在某一种文件系统上发挥更好的性能,所以优先看数据库官方文档的推荐选择。
  • ext4的分区容量达到1EB,而文件则达到16TB;xfs是一个64位文件系统,最大支持8EB减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32位Linux系统,文件和文件系统的大小会被限制在16TB。所以根据你存储内容的情况来选择。
  • 一般情况下最好使用ext4文件系统,因为其向后兼容性很好,你可以把ext2、ext3的文件系统按照ext4挂载。并且ext4可以有效减少碎片,对于SSD和HDD硬盘是很好的选择。
  • XFS由于其对大文件的吞吐性能良好,因此对于媒体文件系统是个不错的选择。但是由于对小文件的不可预测的表现,大多数Linux发行版需要分割/boot(?)

关于文件系统性能参考:关于ext3,ext4,xfs和btrfs文件系统性能对比

其他参考:

百度百科

https://www.3cwu.com/p/275375.html

https://stackoverflow.com/questions/197162/ntfs-performance-and-large-volumes-of-files-and-directories

http://www.lotpc.com/yjzs/8001.html

https://blog.csdn.net/justlpf/article/details/80703763

https://stackoverflow.com/questions/42431954/xfs-or-ext4-filesystem-mongodb-server-on-ubuntu-machine?r=SearchResults

分类:

技术点:

相关文章: