我正在开发一个将数据写入NTFS稀疏文件的软件,我找不到任何关于NTFS稀疏文件限制的文档。
我已经看到存在限制这一事实,但没有提到这些限制。
具体而言,我对稀疏文件的最大文件大小和文件中已分配范围的数量有任何限制。
答案 0 :(得分:1)
答案取决于文件的稀疏程度以及硬盘的群集大小。
与大多数其他文件系统一样,NTFS将文件视为磁盘集群的有序列表。那个"有序列表"是文件系统中的物理数据结构,占用磁盘空间。随着此列表中记录数量的增加,文件系统必须分配更多物理块来保存它。但是,它可以添加的块数最终是有限的(参见参考资料)。
所以,让我们假设您有一个1TB磁盘,默认情况下具有4kb簇大小,并且您写了512GB文件。
我不知道这些碎片数量是否会超出NTFS管理结构的容量。但是我们假设它是。如果您使用的卷大小为64k(导致8,388,608个碎片),您可能仍然可以管理该文件。
除了碎片耗尽的可能性之外,严重碎片化的文件效率会降低,因为访问任何特定块需要遍历碎片列表才能找到该块(我假设某种形式的二进制搜索涉及,但它仍然比检查一个包含所有块的片段更糟糕。此外,当使用磁介质时,整个磁盘访问将是次优的,因为紧密编号的块可能位于驱动器上的广泛不同的位置。在我看来,更好的是预先分配并顺序初始化整个文件(当然,除非您不打算在其中存储大量数据)。
参考资料(均来自Microsoft):
答案 1 :(得分:1)
在documentation on the error code中你会得到一些关于限制的提示:
具体做法是:
如果您计划使用具有许多就地块的超大文件(超过500 GB),则应使用" / L"来格式化卷。适应大型文件记录的选项。默认情况下,卷的格式设置为使用小型文件记录。
documentation of the "/L" option具有每个NTFS文件的近似最大区数:
启用对大型文件记录段(FRS)的支持。这需要增加卷上每个文件允许的范围数。对于大型FRS记录,限制从大约150万个范围增加到大约600万个范围。