非常大的文件是否会在现代文件系统上产生问题?

Do very large files create issues on modern file systems?

我正在开发一个使用一些大型二进制文件的应用程序 - 在 1GB - 25GB 范围内。该应用程序将 运行 主要在服务器上,也可能是奇怪的 powerful/modern 台式电脑。我可以 (a) 将这些大文件分开,使它们始终小于 4 GB,或者 (b) 将它们放在一个文件中。

FAT32 文件系统只允许文件大小 up to 4 GB。如果我不拆分这些文件,它们将无法在 FAT32 系统上使用。

我需要费心拆分这些文件吗

此应用程序将始终 运行 在相当现代的硬件上运行。有没有可能使用 FAT32 的现代服务器?是否有任何其他云文件系统会对文件大小有重大限制? (例如 AWS Elastic 文件系统很好,因为它允许单个文件 up to 47 TB)。

根据我的经验,如果您要处理大于 4GB 的文件,不建议使用 FAT32。 Fat32 存储 32 位大小,因此限制为

2^32-1 ~= 4.29e9. 2^32-1 bytes = 4GB - 1 byte

如果你喜欢 fat 文件系统,我建议使用 exFat。

参考:exFAT 文件系统的规格、功能和要求包括:文件大小限制为 16 exbibytes(264-1 字节,或约 1019 字节,否则受限于最大卷大小为 128 PiB ,或 257−1 字节),从标准 FAT32 文件系统中的 4 GiB(232−1 字节)提升

所以如果你不想被FAT32限制,我推荐使用exFat。

或者如果你打算通过云计算来做,最好使用专用的AWS EC2实例或者Lambda来按需使用。

您可以根据需要保留文件,但有一个大问题。您必须移动或复制这些文件吗?

如果不是,那么我看不出问题所在。巨大的数据库文件、交换文件和虚拟机映像文件工作得很好。如果必须复制、移动和上传文件,那么我会拆分它们。

首先复制、移动、上传、下载和备份通常是基于文件的。有一些工具可以将文件拆分成多个部分并从各个部分重建文件,但您必须寻找它们。上传和下载也可能有问题,因为传输有时会中断,而且大多数工具不支持恢复。

FAT32是在1977中设计的文件系统。

要回答您是否应该支持 FAT32 的问题,请查看这些类似的问题:

  • 我的主页应该支持 Internet Explorer 1.0 吗?
  • 为什么Windows10不支持DOS程序?
  • 最新的 Firefox 运行 会在 Windows 98 上吗?

所以答案很简单:不支持 FAT32。如果您检测到 FAT32 文件系统,请告诉用户更改它。


让我们来看看像 ext4 or NTFS 这样的现代文件系统。

这些支持大文件。所以不需要拆分。


您也可以考虑完全不使用文件系统。

您可以使用固定大小的分区或整个磁盘。

它会给你更好的性能,因为你的数据没有碎片化。

但是你的 "file" 的大小是固定的。

如果您的文件系统位于具有复制功能的 SAN 上 and/or 对文件不同区域的分布式更改进行快照可能会对存储造成负载。

在任何现代文件系统中,大小超过 100GB 的文件并不少见。只要网络稳定且快速,即使通过网络复制这种大小的文件也没有问题。

如果目录中有许多小文件,实际上更糟糕。不同的 FS 处理大量文件的方式非常不同,并且总是可以选择工具来访问包含那么多文件的目录。

即使在相对较旧的硬件上,存储 4-25GB 也不成问题,文件系统(如 ntfs 和 ext2,自 90 年代以来就已经存在)在处理这种大小的文件时没有问题,事实上,对于视频制作公司在 ext4/ntfs 文件系统上存储高达 100GB 的原始视频文件。 (如果我没记错的话,现代文件系统的理论限制超过 1TB)

话虽如此,如果您不打算经常读取文件,您可能希望将文件分成几个部分,以便更轻松地存储和移动它们。复制大文件可能很麻烦。

目前您可能遇到的 fat32 唯一实际用例是在 USB 闪存驱动器上。