我有一个 10M 的文件夹。每个文件夹包含 13 个文件。
我希望将所有这些文件夹放在一个主文件夹(根)中。
Windows Server 对此有什么限制吗?
答案1
就NTFS的理论容量而言,没有问题。
微软文章 NTFS 卷上的最大大小 指定每个卷的最大文件数为 4,294,967,295,这也应该是文件夹的最大文件数。但是,您需要一台速度极快且具有大量 RAM 的计算机才能在 Explorer 中查看该文件夹。
从我自己的经验来看,在几年前的一台好电脑上,查看一个有数千个子文件夹的文件夹需要几十秒钟才能显示出来。我不知道如果有 1000 万个子文件夹会发生什么,但即使电脑可以处理,你也肯定需要很大的耐心。最终。
我真的建议您重新考虑一下您的文件夹架构。
答案2
这可能是X/Y问题。也许你正在做的事情更适合数据库而不是文件系统。使用数据库,你可以容易地快速高效地存储和访问数百万条记录。公认的答案是正确的,即 NTFS 理论上能够存储这么多记录,但速度不会很快。这基本上适用于所有文件系统(例如 NTFS、exFAT、ext4、HFS……)。它们的设计不足以满足您的要求。
其中一个主要原因是大多数操作系统的文件系统 API 只能一次返回整个目录条目列表。例如,在典型的文件系统中,没有办法只检索与特定模式匹配的目录。它必须检索它们全部和然后解析(大量)输出以找到您想要的名称。除了名称之外,其他文件/目录属性(如大小、创建和修改时间等)也是如此。数据库的情况并非如此。
答案3
文件夹内的文件数量与操作系统无关. 这是文件系统尽管您使用的系统可能限制较低。有些文件系统限制文件夹中的文件数量,但有些文件系统仅限制卷中的文件总数,有些则根本没有任何限制。请参阅文件系统的限制。请注意,目录基本上只是一个文件,其内容是其他文件的列表
如果你使用外置FAT,最大数量是每个文件夹有 2 796 202 个文件。 在NTFS每个卷的限制是 2 32 -1 个文件。如果你使用胖的那么限制取决于 FAT 版本
- FAT12:8 KiB 集群为 4 068
- FAT16:32 KiB 集群为 65 460
- FAT32:32 KiB 簇为 268 173 300
Windows 还原生支持其他一些文件系统,如 ReFS,或者您可以安装其他非原生文件系统的驱动程序。它们可能有不同的限制
但无论如何文件夹中有大量文件是一个非常糟糕的想法。列表和操作速度取决于文件系统如何存储元数据,例如在 FAT 中它是一个线性列表,因此速度非常慢。但即使使用 NTFS 中的 B+tree 等高效方式列出文件,速度仍然很慢。一般来说,我避免在一个文件夹中包含超过 2000 个文件
你的情况更好的解决方案应该是某种数据库。但是如果你真的必须将文件直接存储在驱动器中,那么您需要将文件均匀分布到多个较小的文件夹中。常用方法是对文件名或内容进行哈希处理,然后将其拆分为包含该名称部分的文件夹。例如,如果哈希为0xabcdef12
(32 位),则将文件存储在ab/cd/ef/12
、ab/cde/f12
或2af/0de/f12
中(每个路径组件分别代表原始值的 8/8/8/8、8/12/12 和 10/10/12 位)。这样,文件夹中的文件就不会太多或太少。请参阅
此方法在git或docker中常用
也可以看看
- 如果数百万个文件存储在一个 NTFS 文件夹中,这会很糟糕吗?
- 在同一文件夹 (NTFS) 中存储 600,000 多张图像对性能的影响
- 如果单个目录(NTFS)中有大量文件,文件系统性能会下降吗?
- 拥有 100 万个文件夹还是一个文件夹中有 100 万个文件?
- 您可以在 Windows 文件夹中放置多少个文件而不会明显降低性能?
- NTFS 性能和大量文件和目录
- 您如何处理大量小文件?
- 数百万个小图形文件以及如何解决 XP 上文件系统访问缓慢的问题
- 目录中有多少个文件太多(在 Windows 和 Linux 上)?(重复)
- 文件夹中有数百万个(小)文本文件
- 在 NTFS 上存储数百万个文件的性能