查找并更正 NTFS 卷上的磁盘空间问题

本文讨论如何检查 NTFS 文件系统的磁盘空间分配,以发现有问题的文件和文件夹,或查找基于 Microsoft Windows Server 2003 的计算机的卷损坏。

适用于: Windows Server 2003
原始 KB 编号: 814594

摘要

NTFS 支持许多卷和文件级功能,这些功能可能会导致可用磁盘空间丢失或报告错误。 例如,NTFS 卷可能突然无缘无故地变满,并且管理员无法找到原因或找不到违规的文件夹和文件。 如果发生对 NTFS 卷的恶意或未经授权的访问,其中发生了秘密复制大型文件或大量小文件的情况,则可能会出现这种情况。 然后,这些文件将删除或限制其 NTFS 权限。 在计算机故障或电源中断导致卷损坏后,也可能发生此行为。

由于以下任一原因,NTFS 卷的磁盘空间分配似乎被错误报告:

  • NTFS 卷的群集大小对于存储在那里的平均大小文件来说太大。
  • 文件属性或 NTFS 权限阻止 Windows 资源管理器或 Windows 命令提示符显示或访问文件或文件夹。
  • 文件夹路径超过 255 个字符。
  • 文件夹或文件包含无效或保留的文件名。
  • NTFS 图元文件 ((如主文件表) )已增长,无法取消分配它们。
  • 文件或文件夹包含备用数据流。
  • NTFS 损坏导致可用空间报告为正在使用中。
  • 其他 NTFS 功能可能会导致文件分配混乱。

以下信息可帮助你优化、修复或更好地了解 NTFS 卷如何使用磁盘空间。

群集大小过大

只有包含内部 NTFS 图元文件(如主文件表 (MFT) 、文件夹索引等)的文件和文件夹才能占用磁盘空间。 这些文件和文件夹使用群集的倍数来使用所有文件空间分配。 群集是连续扇区集合。 群集大小由格式化卷时的分区大小决定。

创建文件时,它至少会占用单个群集的磁盘空间,具体取决于初始文件大小。 稍后将数据添加到文件时,NTFS 会以群集大小的倍数增加文件的分配。

若要确定当前群集大小和卷统计信息,请从命令提示符运行只读 chkdsk 命令。 为此,请执行以下步骤:

  1. 单击 “开始”,单击“ 运行”,键入 cmd,然后单击“ 确定”。

  2. 在命令提示符下,键入命令: chkdsk d:

    其中 d:是要检查驱动器的字母。

  3. 单击“确定”

  4. 查看生成的输出。 例如:

    4096543 KB 的总磁盘空间。 <---格式化磁盘容量总计。
    19901 文件中2906360 KB。 <---用户文件数据使用的空间。
    1301 个索引中的 6344 KB。 <--- NTFS 索引使用的空间。
    坏扇区中为 0 KB。 <---太空输给了坏行业。
    系统正在使用的 49379 KB。 <---包括 MFT 和其他 NTFS 图元文件。
    日志文件占用 22544 KB。 <--- NTFS 日志文件 - 可以使用 chkdsk /L:size) 调整 (
    磁盘上可用的1134460 KB。 <---可用磁盘空间

    每个分配单元中为 4096 字节。 <---群集大小。 (4K)
    1024135磁盘上的分配单位总数。 <---磁盘上的群集总数。
    283615磁盘上可用的分配单位。 <---可用群集。

注意

将输出报告的每个值乘以 KB (KB) 1024,以确定准确的字节计数。 例如:2906360 x 1024 = 2,976,112,640 字节。 可以使用此信息来确定磁盘空间的使用方式和默认群集大小。

若要确定这是否是最佳群集大小,必须确定磁盘上浪费的空间。 为此,请执行以下步骤:

  1. 单击“ 开始”,单击“ 我的电脑”,然后双击驱动器号 (例如,D) 有问题的卷打开该卷并显示根目录包含的文件夹和文件。

  2. 单击任何文件或文件夹,然后单击“编辑”菜单上的“全选”。

  3. 选中所有文件和文件夹后,右键单击任何文件或文件夹,单击 “属性”,然后单击“ 常规 ”选项卡。

    常规 ”选项卡显示整个卷上的文件和文件夹总数,并提供两个文件大小统计信息: SIZESIZE ON DISK

如果未对卷中包含的任何文件或文件夹使用 NTFS 压缩,则 SIZE 和 SIZE ON DISK 之间的差异可能表示一些浪费的空间,因为群集大小大于所需的大小。 你可能希望使用较小的群集大小,以便 SIZE ON DISK 值尽可能接近 SIZE 值。 SIZE ON DISK 和 SIZE 值之间的较大差异表示默认群集大小对于存储在卷上的平均文件大小来说太大。

只能通过重新设置卷格式来更改使用的群集大小。 为此,请备份卷,然后使用 format 命令和 /a 开关来设置卷的格式,以指定相应的分配。 例如: format D: /a:2048 (此示例使用 2 KB 群集大小) 。

注意

或者,可以启用 NTFS 压缩来重新获得由于群集大小不正确而丢失的空间。 但是,这可能会导致性能下降。

文件属性或 NTFS 权限

Windows 资源管理器和目录列表命令 dir /a /s 仅显示你有权访问的文件和文件夹的总文件和文件夹统计信息。 默认情况下,将排除文件隐藏文件和受保护的操作系统文件。 此行为可能导致 Windows 资源管理器或 dir 命令显示不准确的文件和文件夹总计以及大小统计信息。

若要在总体统计信息中包含这些类型的文件,请更改 文件夹选项。 为此,请执行以下步骤:

  1. 单击 “开始”,单击“ 我的电脑”,然后双击驱动器号 (例如:卷的 D) 。 这会打开卷并显示根目录包含的文件夹和文件。
  2. “工具 ”菜单上,单击“ 文件夹选项”,然后单击“ 视图 ”选项卡。
  3. 选中“显示隐藏的文件和文件夹检查”框,然后单击以清除“检查隐藏受保护的操作系统文件”框。
  4. 收到警告消息时,单击“ ”,然后单击“ 应用 ”按钮。 此更改允许 Windows 资源管理器和 dir /a /s 命令对卷中包含的用户有权访问的所有文件和文件夹进行汇总。

若要确定无法访问的文件夹和文件,请执行以下步骤:

  1. 在命令提示符下,根据命令的 dir /a /s 输出创建文本文件。

    例如:在命令提示符处,键入以下命令: dir d: /a /s >c:\d-dir.txt

  2. 启动备份或还原向导。

    1. 单击 “开始”,单击“ 运行”,键入 ntbackup,然后单击“ 确定”。
    2. 单击“ 高级模式”。
  3. 单击“工具”菜单上的“选项”,单击“备份日志”选项卡,单击“详细”,然后单击“确定”。

  4. 在“备份实用工具”中,单击“备份”选项卡,然后选择受影响的整个卷检查框, (例如:D:) ,然后单击“开始备份”。

  5. 备份完成后,打开备份报告,将 NTBackup 日志输出与步骤 1 中保存的 d-dir.txt 输出的文件夹进行比较。

由于备份可以访问所有文件,因此其报表可能包含 Windows 资源管理器和 dir 命令未显示的文件夹和文件。 当你想要搜索无法使用 Windows 资源管理器访问的大型文件或文件夹时,你可能会发现使用 NTBackup 界面查找卷更容易,而无需备份卷。

找到你无权访问的文件后,可以在 Windows 资源管理器中查看文件或文件夹的属性时使用“ 安全 ”选项卡添加或更改权限。 默认情况下,无法访问“系统卷信息”文件夹。 必须添加正确的权限才能在 命令中包含 dir /a /s 文件夹。

你可能会注意到没有 “安全 ”选项卡的文件夹或文件。或者,你可能无法重新分配对受影响的文件夹和文件的权限。 尝试访问它们时,可能会收到以下错误消息:

D:\folder_name\ 不可访问

访问被拒绝

如果你有任何此类文件夹,请联系 Microsoft 产品支持服务 以获取其他帮助。

文件名无效

也可以从文件和文件夹统计信息中排除包含无效或保留文件名的文件夹或文件。 包含前导或尾随空格的文件夹或文件在 NTFS 中有效,但从 Win32 子系统的角度来看,它们无效。 因此,Windows 资源管理器和命令提示符都无法可靠地使用它们。

你可能无法重命名或删除这些文件或文件夹。 尝试执行此操作时,可能会收到以下错误消息之一:

重命名文件或文件夹时出错

无法重命名文件:无法从源文件或磁盘读取数据。

删除文件或文件夹时出错

无法删除文件:无法从源文件或磁盘读取。

如果你有无法删除或重命名的文件夹或文件,请联系 Microsoft 产品支持服务。

NTFS 主文件表 (MFT) 扩展

创建 NTFS 卷并设置格式后,将创建 NTFS 图元文件。 其中一个图元文件名为主文件表 (MFT) 。 创建 (大约 16 KB) 时,它很小,但随着卷上的文件和文件夹的创建,它会增长。 创建文件时,该文件将作为文件记录段 (FRS) 在 MFT 中输入。 FRS 始终为 1024 字节 (1 KB) 。 将文件添加到卷时,MFT 会增大。 但是,删除文件时,关联的 FRS 标记为“可用”以供重复使用,但 FRS 和关联的 MFT 分配总数仍保留。 这就是为什么在删除大量文件后,不会重新获得 MFT 使用的空间。

若要准确了解 MFT 的大小,可以使用内置的碎片整理程序来分析卷。 生成的报告提供有关 MFT 中片段的大小和数量的详细信息。

例如:

主文件表 (MFT) 碎片
总 MFT 大小 = 26,203 KB
MFT 记录计数 = 21,444
使用中的 MFT 百分比 = 81 %
总 MFT 片段数 = 4

但是,若要更全面地了解整个 NTFS 使用的空间 (开销) ,请运行 chkdsk.exe 命令,然后查看以下行的输出:

按系统使用。

目前,只有第三方碎片整理程序合并未使用的 MFT FRS 记录并回收未使用的 MFT 分配空间。

备用数据流

NTFS 允许文件和文件夹包含备用数据流。 使用此功能,可以将多个数据分配与单个文件或文件夹相关联。 对文件和文件夹使用备用数据流具有以下限制:

  • Windows 资源管理器和 dir 命令不会将备用数据流中的数据报告为文件大小或卷统计信息的一部分。 相反,它们仅显示主数据流的总字节数。
  • chkdsk 的输出准确报告用户数据文件使用的空间,包括备用数据流。
  • 磁盘配额准确跟踪和报告属于用户数据文件的所有数据流分配。
  • NTBackup 记录备份日志报告中备份的字节数。 但是,它不会显示哪些文件包含备用数据流。 对于在备用流中包含数据的文件,它也不会显示准确的文件大小。

NTFS 文件系统损坏

在极少数情况下,NTFS 元文件$MFT或$BITMAP可能会损坏并导致磁盘空间丢失。 可以通过对卷运行 chkdsk /f 命令来识别并解决此问题。 在 chkdsk 结束时,如果必须调整$BITMAP:更正主文件表 (MFT) BITMAP 属性中的错误,则会收到以下消息。 CHKDSK 发现在卷位图中标记为已分配的可用空间。 Windows 已对文件系统进行了更正。

可能导致文件分配混乱的其他 NTFS 功能

NTFS 还支持硬链接和重新分析点,这些点允许你创建卷装入点和目录交接点。 当你尝试确定物理卷占用的空间量时,这些额外的 NTFS 功能可能会导致混淆。

硬链接是文件的目录条目,无论文件数据在该卷上位于何处。 每个文件至少有一个硬链接。 在 NTFS 卷上,每个文件可以有多个硬链接,因此单个文件可以出现在多个文件夹中 (甚至同一文件夹中,) 不同名称。 由于所有链接都引用同一文件,因此程序可以打开任何链接并修改该文件。 只有在删除指向该文件的所有链接后,才会从文件系统中删除该文件。 创建硬链接后,程序可以像使用任何其他文件名一样使用它。

注意

Windows 资源管理器和命令提示符显示所有链接文件的大小相同,即使它们共享相同的数据,并且实际上并不使用该数量的磁盘空间。

卷装入点和目录接合点允许 NTFS 卷上的空文件夹指向另一个卷上的根文件夹或子文件夹。 Windows 资源管理器和 dir /s 命令遵循重新分析点,对目标卷上的所有文件和文件夹进行计数,然后将其包含在主机卷的统计信息中。 这可能会误导你认为主机卷上使用的空间比实际使用的空间要多。

总之,可以使用 chkdsk 输出、NTBackup GUI 或备份日志,以及查看磁盘配额来确定如何在卷上使用磁盘空间。 但是,Windows 资源管理器和 dir 命令在用于此目的时存在一些限制和缺点。