NTFS 如何保留其主文件表空间 (MFT)

本文介绍 NTFS 如何保留其主文件表和 MFT (空间) 。

适用于:  Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 编号:   174619

摘要

NTFS 文件系统的核心包含一个称为主文件表的文件, (MFT) 。 对于 NTFS 卷(包括 MFT 本身)上的每个文件,MFT 中至少有一个条目。

由于对 NTFS 卷进行碎片整理的实用程序无法移动 MFT 条目,并且 MFT 的过多碎片可能会影响性能,因此 NTFS 为 MFT 保留空间,以尽可能使 MFT 在增长时保持连续。

在Windows中,碎片整理实用程序对 MFT 进行碎片整理。

碎片整理实用工具

MFT 上的碎片整理操作将 MFT 文件合并为 1,并阻止它存储在磁盘上顺序不连续的多个位置。 在此类操作中,MFT 文件更加有序。 但是,它的大小与执行碎片整理操作之前 MFT 文件的大小完全相同。

如果卷用于删除大量文件,则 MFT 可能过大。 已删除的文件会导致 MFT 中出现内部漏洞。 这些洞是文件未使用的重要区域。 无法回收此空间。 在活动 NTFS 卷上至少为 true。

更多信息

NTFS 使用 MFT 条目定义它们对应的文件。 有关文件的所有信息(包括文件大小、时间和日期戳、权限和数据内容)要么存储在 MFT 条目中,要么存储在 MFT 外部的空间中,但由 MFT 条目描述。

(MFT 外部的目录条目还包含一些有关文件的冗余信息。 但是,全面讨论 NTFS 上的所有结构不在本文的讨论范围之内。)

当文件添加到 NTFS 卷时,会向 MFT 中添加更多的条目,因此 MFT 的大小会增加。 从 NTFS 卷中删除文件时,其 MFT 条目标记为免费,可重复使用,但 MFT 不会缩小。 因此,这些条目使用的空间不会从磁盘中回收。

由于 MFT 对 NTFS 的重要性,以及如果此文件变得高度碎片化,可能会影响性能,因此 NTFS 会特别努力使此文件保持连续。 NTFS 保留 12.5% 的卷,以独占使用 MFT,除非卷的剩余部分已使用。 因此,在首先分配所有其他空间之前,不会从此 MFT 区域分配文件和目录的空间。

备注

您可以更改 NtfsMFTZoneReservation 注册表项以增加 Windows。 有关 MFT 详细信息,请参阅Maintaining Windows 2000 Peak Performance Through Defragmentation的磁盘碎片整理过程中的关键元素。

根据平均文件大小和其他变量,当磁盘填满容量时,保留的 MFT 区域或磁盘上的未保留空间可能会先于另一个区域使用。

具有少量相对较大的文件的卷首先会耗尽未保留的空间,而具有大量相对小文件的卷会首先耗尽 MFT 区域空间。 无论是哪种情况,当一个或另一个区域已满时,MFT 的碎片开始发生。 如果未保留的空间已满,用户文件和目录的空间将开始从 MFT 区域分配,与 MFT 竞争进行分配。 如果 MFT 区域已满,则从磁盘的剩余部分分配新 MFT 条目的空间,这同样与其他文件竞争。

新的注册表参数可以增加 NTFS 为主文件表保留的卷的百分比。 NtfsMftZoneReservation 是一个 REG_DWORD 值,可以取值范围为 1 到 4,其中 1 对应于最小 MFT 区域大小,4 对应于最大值。 如果未指定参数或提供了无效值,则 NTFS 对此参数使用默认值 1。 与每个设置对应的准确比率未记录,因为它们不是标准化的,并且可能会在将来的版本中更改。 为了了解最适合您的环境的设置,可能需要使用不同的值进行试验。

若要确定计算机上 MFT 的当前Windows,请键入 dir /a $mft NTFS 卷上的命令。

若要确定当前计算机上 MFT Windows,请使用磁盘碎片整理程序分析 NTFS 驱动器,然后单击"查看 报告"。 这将显示驱动器统计信息,包括当前的 MFT 大小和片段数。

对于所谓的系统文件和 NTFS格式化卷,磁盘碎片整理程序显示绿色,这只是 MFT、pagefile.sys ((如果此卷) 上存在)和称为"MFT 区域"或 MFT 扩展的保留空间的组合。 碎片整理报告仅显示有关 pagefile 和 MFT 的信息;它未提及 MFT 区域,因为它对磁盘使用率或容量没有任何影响。

MFT 区域不从用户数据文件 (可用空间) ,而只是最后使用的空间。 例如,当 MFT 需要增加大小时(例如,您创建了新的文件和目录)时,会首先从 MFT 区域进行创建,从而减少 MFT 碎片并优化 MFT 性能。

默认 MFT 区域在装入卷时由 Ntfs.sys进行计算和保留,并且基于卷大小。 您可以通过下面介绍的注册表项来增加 MFT 区域,但不能使默认 MFT 区域小于由 Ntfs.sys。 增加 MFT 区域不会以任何方式减少用户可以用于数据文件的磁盘空间。

备注

dir 命令返回的结果可能不是最新的。 dir 命令报告的大小可能会反映缓存数据,这些数据反映系统在有序关闭后启动时 MFT 的大小。

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 若要详细了解如何备份和还原注册表,请参阅如何在 Windows 中备份和还原注册表

若要添加此值,请执行以下步骤:

  1. 运行注册表编辑器 (Regedt32.exe) ,然后转到以下子项:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem

  2. 从"编辑 "菜单中,单击"添加值"。

  3. 在对话框中键入以下信息:

    • 值名称 :NtfsMftZoneReservation
    • 数据类型:REG_DWORD
    • 数据: (有效范围是 1-4)
  4. 退出注册表编辑器并重新启动计算机。

备注

这是运行时参数,不会影响卷的实际格式。 相反,它会影响 NTFS 在给定系统上的所有卷上分配空间的方式。 因此,若要完全有效,参数必须在卷格式化后以及卷的整个生命周期内生效。 如果向下调整或删除注册表参数,MFT 区域将相应地减少,但这不会影响已分配和使用的 MFT 空间。