稀疏文件中分配范围的大小和数量的限制是什么?



我正在处理一个将数据写入NTFS稀疏文件的软件,我找不到有关NTFS稀疏文件的限制的任何文档。

我已经看到了存在限制的事实,但不是这些限制是什么。

特别是我对稀疏文件的最大文件大小和文件中分配范围的数量感兴趣。

在您将获得的错误代码上的文档中,您对限制有一些提示:

特别:

如果您打算使用具有许多就地块的非常大的文件(超过500 GB),则应使用"/l"选项来安装卷,以容纳大尺寸的文件记录。默认情况下,该卷的格式用于使用小型文件记录。

"/l"选项的文档具有每个NTFS文件的最大最大数量:

支持大型文件记录段(FRS)的支持。这需要增加卷上每个文件允许的扩展数量。对于大型FRS记录,极限从约150万次范围增加到约600万范围。

答案将取决于文件的稀疏以及硬盘的群集大小。

NTF与大多数其他文件系统一样,将文件视为磁盘群集的有序列表。该"有序列表"是文件系统中的物理数据结构,并且占据了磁盘空间。随着此列表中的记录数量的增长,文件系统必须分配更多物理块以保持它。但是,它可以添加的块数最终受到限制(请参见参考)。

所以,假设您有一个1TB磁盘,默认情况下,它具有4KB群集大小,并且您编写一个512GB文件。

  • 如果您依次编写该文件,则系统将尝试分配连续块,并且列表中的条目数量相对较少(文件中的片段)。
  • 如果您随机编写该文件,则将创建一个稀疏的文件;每当您编写以前没有写过的块时,都必须为该块分配一个群集。由于您是随机编写的,因此操作系统可能无法分配连续群集,因此您将在列表中有更多条目。您的512GB文件可能需要134,217,728片段(假设我已经正确完成了数学)。

我不知道这些碎片是否超出了NTFS管理结构的能力。但是,假设是。如果您使用了群集大小为64K的卷(导致8,388,608片段)。

,您可能仍然可以管理该文件。

除了可能耗尽片段的可能性外,大量零散的文件效率较低,因为访问任何特定块需要浏览片段列表以找到该块(我假设涉及某种形式的二进制搜索,但是比检查一个块所有块的片段还要糟糕。此外,当使用磁媒体时,总体磁盘访问将是最佳的,因为驱动器上的密度块可能在驱动器上的位置截然不同。我认为,更好的是将整个文件进行预先分配并依次启动整个文件(当然,除非您不打算在其中存储很多数据)。

参考(均来自Microsoft):

  • NTFS的工作原理 - NTFS文件系统中结构的概述。
  • NTFS文件增长的四个阶段 - 由Microsoft支持团队的成员发布,详细介绍了文件的分配节点如何随时间增长。另请参阅后续帖子,显示部分工作能力增加分配记录的数量。

最新更新