各个类别file systems文件系统的详解

本文将要对于如下这些常见的文件系统进行解释,并给出日常的使用建议:NTFS exFAT FAT32 ext2 ext3 ext4 xfs FAT FAT12 FAT16 FAT32 HFS HFS+ APFS ZFS。

我们实际的工作、生活中,越来越少拿着物理介质进行数据的传输及拷贝了,都是直接用微信、网盘、邮件直接发送,所以很少能遇到文件系统的问题。

我最近一次真正遇到文件系统的麻烦,还是打印机打交道,公司的打印机死活识别不出U盘,猜测,可能不支持NTFS,因此换成了exFAT,发现还是识别不出,猜测只能支持FAT32,结果,windows11格式化的选项中,把FAT32都给淘汰了,换了一台MAC,格式化成FAT32,打印机终于可以识别了。那么,问题来了,有多少人能搞清楚,NTFS exFAT FAT32都是啥玩意儿?

Windows系

首先我们要讲的是FAT,FAT(File Allocation Table)文件系统是一种早期的文件系统,最初由Microsoft开发。它经历了多个版本和改进,具有较长的发展历程。

  • FAT12(1977):最早的FAT版本,用于早期的微型计算机,如IBM PC。支持最大的分区大小为32 MB。主要用于5.25英寸软盘和早期硬盘。

  • FAT16(1984):增加了对更大硬盘分区的支持。支持分区大小最高达2 GB。用于MS-DOS和早期的Windows操作系统。

  • FAT32(1996):引入了32位文件分配表项,支持更大的硬盘和分区。支持最大分区大小约为2 TB。FAT32文件系统支持的单个最大文件大小通常是约4 GB(4,294,967,296字节)。这是FAT32文件系统的主要限制之一。用于Windows 95、Windows 98、Windows Me和一些其他操作系统。

FAT32在不同操作系统间的兼容性是非常好的,但是它的硬伤是最大2T的分区及单文件4GB的限制。很多不了解FAT32特性的人,容易在单文件4GB的限制层面出现奇怪的错误。

因此在FAT32的基础上发展出了exFAT,exFAT的兼容性也很好,假如家里面有windows Mac linux,建议格式化成exFAT。exFAT同时也是SDXC卡默认的文件系统。

  • exFAT(2006):exFAT是对FAT文件系统的扩展,设计用于支持大容量移动设备和闪存驱动器。支持更大的文件和分区,适用于闪存驱动器、外部硬盘、数码相机等。支持Windows、macOS和一些Linux系统。

目前windows系统上默认的文件系统是NTFS

  • NTFS(New Technology File System)是一种用于Microsoft Windows操作系统的文件系统。它在1993年首次引入,取代了早期的FAT(File Allocation Table)文件系统,以提供更强大的功能和性能。NTFS是一种功能强大、高性能的文件系统,适用于现代Windows操作系统,具有许多高级特性,如安全性、大容量支持、文件压缩和加密等。这使其成为管理和存储大量数据的理想选择。

Mac系

Mac的生态比较封闭,一般来说,出了苹果系统本身使用相关的文件系统,日常使用的场景并不多。

  • HFS(Hierarchical File System):HFS是苹果公司在1985年推出的第一个文件系统,用于早期的Macintosh计算机。它是一个经典的文件系统,采用了分层目录结构,支持文件和文件夹的管理。HFS采用了16位文件标识符,这导致了文件和卷的容量受到限制。随着时间的推移,HFS的性能和容量限制变得明显,因此苹果逐渐转向更现代的文件系统。

  • HFS+(Hierarchical File System Plus):HFS+是HFS的升级版本,于1998年首次引入。HFS+引入了一些改进,包括更大的文件和卷容量,更好的文件元数据支持,支持文件名中的扩展字符,以及更好的磁盘空间利用。HFS+在苹果的操作系统中使用了很长时间,但它仍然存在一些性能和容量限制。

  • APFS(Apple File System):APFS是苹果于2017年推出的全新文件系统,用于macOS High Sierra以及后续的操作系统版本。APFS是一种现代的、高性能的文件系统,专为SSD(固态硬盘)和闪存存储设备设计,同时也支持传统的机械硬盘。APFS具有强大的特性,包括快照支持、数据冗余、加密、更好的文件系统性能和容量管理,以及更好的文件系统完整性。APFS还引入了更高级的元数据管理和文件系统优化,以提供更好的文件和数据管理体验。

Linux系

Linux文件系统各有其特点,选择哪种文件系统取决于特定的用途和性能需求。ext4通常是通用的选择,而XFS更适用于需要高性能和扩展性的情况。

  • ext2(Second Extended File System):ext2是Linux中最早的文件系统之一,它是ext文件系统的第二个扩展版本。它支持基本的文件和目录管理,但不提供日志记录功能。这意味着在文件系统崩溃或意外断电时,可能会导致文件系统损坏和数据丢失。ext2适用于较旧的Linux系统,通常不建议在现代系统中使用,因为更现代的文件系统提供了更好的可靠性和性能。

  • ext3(Third Extended File System):ext3是ext2的后继版本,引入了日志记录功能,以提高文件系统的完整性和稳定性。日志记录允许在系统崩溃或掉电情况下更容易地恢复文件系统,减少了数据丢失的风险。ext3仍然广泛用于许多Linux发行版,尤其是在需要可靠性而不需要极高性能的情况下。

  • ext4(Fourth Extended File System):ext4是ext3的进一步改进,引入了更高性能和更大的文件系统容量支持。它支持更大的文件和分区,提供更好的性能、可靠性和扩展性。ext4是目前许多Linux发行版的默认文件系统,适用于各种应用场景,从桌面系统到服务器。

  • XFS:XFS是一种高性能的日志文件系统,最初由SGI(Silicon Graphics, Inc.)开发。它专为处理大文件和高负载的系统而设计,适用于需要高吞吐量和低延迟的应用,如数据库服务器和存储服务器。XFS支持高度并发访问和可扩展性,以及高级特性如快照和在线文件系统扩展。尽管XFS在某些用例中非常有用,但在一些轻型或桌面系统上可能不如ext4适用。

Oracle系

Btrfs和ZFS都是功能强大的文件系统,适用于高级存储需求和数据完整性要求。

  • Btrfs (B-tree file system):Btrfs是一个开源的复制写文件系统,最初由Oracle公司开发,现在是Linux内核的一部分。它采用B树数据结构,用于管理文件和数据。Btrfs支持多种先进特性,包括快照、数据压缩、数据去重(deduplication)、校验和、容错性、以及在线文件系统扩展。Btrfs的快照功能允许您创建文件系统状态的实时副本,这在数据备份和恢复方面非常有用。它具有自动数据校验和修复的能力,可检测并纠正存储介质中的数据错误。Btrfs还支持在线数据压缩,以节省存储空间,并可以轻松扩展文件系统。

  • ZFS (Zettabyte File System):ZFS是由Sun Microsystems(现在是Oracle公司的一部分)开发的开源文件系统,最初用于Solaris操作系统。它是一个先进的文件系统,设计用于处理大容量数据存储,支持数千亿字节的数据。ZFS使用了一种称为"Zettabyte"的计数单位,因此它具有出色的扩展性。ZFS具有强大的数据完整性和可靠性功能,包括写时复制(Copy-on-Write)和数据校验和(checksum)。它支持快照、克隆、压缩、数据去重、数据加密、以及自动故障恢复。ZFS的管理工具允许用户轻松配置、监视和维护文件系统,这些工具通常更易于使用。

最终总结一下,日常使用应该如何选择合适的文件系统。

  1. 系统盘的选择,这个其实是废话,windows选NTFS,Linux选ext4或xfs,Mac选APFS

  2. 移动硬盘和U盘,假如你家里就是windows,那么直接选择NTFS。假如家里面不同的系统较多,推荐使用exFAT。对于老旧设备的兼容,推荐使用FAT32。

谢谢大家阅读到这里。