![MFT 区域不是 12.5% (区域 1) 吗?咦?](https://linux22.com/image/1477100/MFT%20%E5%8C%BA%E5%9F%9F%E4%B8%8D%E6%98%AF%2012.5%25%20(%E5%8C%BA%E5%9F%9F%201)%20%E5%90%97%EF%BC%9F%E5%92%A6%EF%BC%9F.png)
我最近注意到了 MFT 区域,它有四个级别:1、2、3、4。NTFS 卷的默认格式化级别为 1,根据微软(除非用户指定不同的级别)。在驱动器的初始 NTFS 格式化后,每个级别都是 200MB 的倍数。因此,如果我使用级别 2,MFT 区域大小将以 2(200MB)块 = 400MB 为单位增加。级别 3 将以 3(200MB)= 600MB 块为单位增加。在初始格式化时,12.5% *(磁盘大小)= MFT 区域大小,因为默认为级别 1。
您可以通过更改新创建卷的 MFT 区域大小,使其与用作 MFT 区域的卷百分比相对应。MFT 区域大小如下:• 设置 1(默认值)保留大约 12.5% 的卷。
• 设置 2 保留大约 25%。
• 设置 3 保留大约 37.5%。
• 设置 4 保留大约 50%。
https://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
那么,为什么驱动器的 MFT 区域大小会小于 12.5% 呢?
答案1
虽然这里写的是12.5%:
由于 MFT 对 NTFS 的重要性以及如果该文件高度碎片化可能会对性能产生影响,因此 NTFS 会特别努力保持该文件的连续性。NTFS 会保留 12.5% 的卷供 MFT 专用,除非该卷的剩余部分完全用完。因此,直到所有其他空间都分配完毕后,才会从该 MFT 区域分配文件和目录的空间。
后来它确实这么说过:
Windows NT 4.0 的 Service Pack 4 中引入了一个新的注册表参数,它可以增加 NTFS 为其主文件表保留的卷百分比。NtfsMftZoneReservation 是一个 REG_DWORD 值,可以取 1 到 4 之间的值,其中 1 对应于最小 MFT 区域大小,4 对应于最大 MFT 区域大小。如果未指定该参数或提供了无效值,则 NTFS 将为此参数使用默认值 1。由于没有标准化,因此没有记录与每种设置相对应的确切比率,并且在将来的版本中可能会发生变化。为了了解哪种设置最适合您的环境,可能需要尝试不同的值。
文中还有这样一句话:
注意:您可以更改 NtfsMFTZoneReservation 注册表项以增加Windows NT 4.0 服务包 4。
这让我相信这是本文最初适用的 Windows 版本。如果您没有使用此版本,这可能是由于多年来硬盘容量的增加而发生了变化,并且仍未像承诺的那样记录下来。
答案2
您所参考的文章中有您问题的答案。
NTFS 会保留 12.5% 的卷空间供 MFT 专用,除非卷的剩余空间完全用完。因此,除非先分配了所有其他空间,否则不会从此 MFT 区域分配文件和目录的空间。
这意味着 MFT 将保留 12.5% 的空间,直到文件系统需要使用它为止。此外,保留并不一定意味着它会将该空间标记为已占用,但可以在需要时轻松认领它。
您的 MFT 可以使用 200MB,因为它不需要超过这个数额。当它需要增加时,它将使用保留块中的更多空间(或剩余空间)。
再澄清一下,百分比其实并不重要。重要的是 MFT 正在使用的磁盘空间以及需要增长时可用的空间。
另外,我不太确定区域是否仍然适用,在解压 260 万个文件后,我的 MFT 增加到了 2GB 以上。