主文件表(本地文件系统)
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 区域由系统在装载卷时计算和保留,并基于卷大小。 可以通过 NTFS 如何为其主文件表 (MFT) 预留空间中详细介绍的注册表项,来增加 MFT 区域,但是不能使默认的 MFT 区域小于计算的空间。 增加 MFT 区域不会减少用户可用于数据文件的磁盘空间。
若要确定 MFT 的当前大小,请使用磁盘碎片整理程序分析 NTFS 文件系统驱动器,然后单击查看报告按钮。 将显示驱动器统计信息,包括当前 MFT 大小和碎片数量。 还可以使用 FSCTL_GET_NTFS_VOLUME_DATA 控件代码获取 MFT 的大小。