主文件表 (本地文件系统)

NTFS 文件系统包含名为 主文件表或 MFT 的文件。 对于 NTFS 文件系统卷上的每个文件,MFT 中至少有一个条目,包括 MFT 本身。 有关文件的所有信息(包括其大小、时间和日期戳、权限和数据内容)存储在 MFT 条目中,或存储在 MFT 条目描述的 MFT 外部的空间中。

当文件添加到 NTFS 文件系统卷时,MFT 中会添加更多条目,MFT 的大小也会增加。 从 NTFS 文件系统卷中删除文件时,其 MFT 条目将标记为可用,可以重复使用。 但是,已为这些条目分配的磁盘空间不会重新分配,并且 MFT 的大小不会减小。

NTFS 文件系统为 MFT 保留空间,以在 MFT 增长时尽可能保持连续。 NTFS 文件系统为每个卷中的 MFT 保留的空间称为 MFT 区域。 文件和目录的空间也是从此空间分配的,但前提是已分配 MFT 区域之外的所有卷空间。

根据平均文件大小和其他变量,在磁盘填充容量时,可以先分配保留的 MFT 区域或磁盘上的未保留空间。 具有少量相对较大的文件的卷将首先分配未保留的空间,而具有大量相对较小的文件的卷将首先分配 MFT 区域。 在任一情况下,当一个区域或另一个区域完全分配时,MFT 的碎片就会开始发生。 如果完全分配了未保留的空间,则将从 MFT 区域分配用户文件和目录的空间。 如果 MFT 区域已完全分配,则新 MFT 条目的空间将从未保留的空间中分配。

MFT 本身可以进行碎片整理。 若要降低在碎片整理过程完成之前完全分配 MFT 区域的可能性,请在对卷进行碎片整理之前,在 MFT 区域的开头留出尽可能多的空间。 如果在碎片整理完成之前已完全分配 MFT 区域,则必须在 MFT 区域外部有未分配的空间。

默认 MFT 区域由系统在装载卷时计算和保留,并且基于卷大小。 可以通过 Microsoft 知识库文章174619中详述的注册表项来增加 MFT 区域,但不能使默认 MFT 区域小于计算的值。 增加 MFT 区域不会减少用户可用于数据文件的磁盘空间。

若要确定 MFT 的当前大小,请使用磁盘碎片整理程序分析 NTFS 文件系统驱动器,然后单击“ 查看报告 ”按钮。 将显示驱动器统计信息,包括当前 MFT 大小和片段数。 还可以使用 FSCTL_GET_NTFS_VOLUME_DATA 控件代码获取 MFT 的大小。