如何在 Windows XP 中查找和纠正 NTFS 卷上的磁盘空间问题

文章翻译 文章翻译
文章编号: 315688 - 查看本文应用于的产品
有关本文的 Microsoft Windows 2000 版本,请参阅 303079
展开全部 | 关闭全部

本文内容

概要

NTFS 文件系统支持许多卷和文件级功能,这些功能可能会导致可用磁盘空间量被误报或报告为已丢失。如果 NTFS 卷突然变满,并且您无法找到原因,也找不到使 NTFS 卷变满的文件夹和文件,您就会注意到此行为。如果一个用户不怀好意或者未经授权访问到一个 NTFS 卷,而此卷上秘密复制了非常大的文件或大量的小文件,然后此用户删除或限制了这些文件上的 NTFS 权限,就可能会出现此行为。在出现系统故障或者因停电而造成卷损坏后,也会出现此行为。

本文将介绍如何检查 NTFS 磁盘空间分配,以便发现有问题的文件和文件夹,或者找到卷损坏。本文主要面向支持高级存储功能和疑难排查方法的 Windows XP 操作系统的用户。

更多信息

NTFS 卷的磁盘空间分配可能会因以下任何一种原因被误报:
  • NTFS 卷的簇大小相对于所存储文件的平均大小来说太大。
  • 当您使用 Microsoft Windows 资源管理器或 Windows 命令提示符时,文件属性或 NTFS 权限会使文件或文件夹不能被显示或访问。
  • 文件夹路径超过 255 个字符。
  • 文件夹或文件包含无效文件名或保留的文件名。
  • NTFS 图元文件(如主文件表 [MFT])已经增长,无法取消分配。
  • 文件或文件夹包含替换数据流。
  • NTFS 损坏导致 Windows 将可用空间报告为正在使用中。
  • 其他 NTFS 功能导致文件分配混淆。

簇大小太大

磁盘空间只可以由包含内部 NTFS 图元文件(例如 MFT、文件夹索引等)的文件和文件夹使用。大量这样的簇将占用所有的文件空间分配。一个簇就是一些相邻扇区的集合。簇大小是在格式化卷时确定的,并由分区大小进一步确定。

有关簇的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
140365 Default Cluster Size for FAT and NTFS
在创建一个文件后,它至少要占用一个簇的磁盘空间,具体取决于初文件大小。在将数据添加到文件后,NTFS 将以簇大小的倍数增加文件的空间分配。

如想确定当前簇大小和卷统计数字,请在命令提示符下运行以下命令:
chkdsk d:
以下文本是运行此命令时显示的输出内容示例:
4096543 KB total disk space.
(此值是总的格式化的磁盘容量。)

2906360 KB in 19901 files.
(此值是用户文件数据占用的空间量。)

6344 KB in 1301 indexes.
(此值是 NTFS 索引使用的空间量。)

0 KB in bad sectors.
(此值表示坏扇区占多少空间。)

49379 KB in use by the system.
(此值包括 MFT 和其他 NTFS 图元文件使用的空间。)

22544 KB occupied by the log file.
(此值是 NTFS 日志文件;您可以使用 chkdsk /l:size 来调整此值。)

1134460 KB available on disk.
(此值是可用的“空闲”磁盘空间。)

4096 bytes in each allocation unit.
(此值是簇大小 [4K])

1024135 total allocation units on disk.
(此值是磁盘上的总簇数。)

283615 allocation units available on disk.(此值是可用的空闲簇数。)
注意:将以 KB 为单位报告的每一个值乘以 1024,即可确定以字节为单位的准确大小(例如,2,906,360 x 1024 = 2,976,112,640 字节)。

检查此输出即可确定默认簇大小和磁盘空间的使用情况。如想查看簇是否在使用最佳簇大小,请确定浪费的空间总量:
  1. 双击我的电脑,然后双击您要查看的卷的驱动器符号(例如 D)。
  2. 单击任何文件或文件夹,然后单击编辑菜单上的全选
  3. 右键单击任何文件或文件夹,然后单击属性
  4. 单击常规选项卡,然后查看“大小”和“占用空间”这两个文件大小值,这些值可以计算出整个卷上文件和文件夹的总数。
如果您对卷上的任何文件或文件夹都未使用 NTFS 压缩,则在“大小”值与“占用空间”值之间的差就是浪费的空间量,造成此浪费是因为簇大小大于必要的量。请选择最佳簇大小,以让“占用空间”值尽可能接近“大小”值。如果“大小”与“占用空间”这两个值之间的差别过大,则表示默认簇大小相对于您在卷上存储的平均文件大小来说太大。在此情形中,建议您缩小簇大小。为此,请备份该卷,然后使用 format 命令并使用 /a 开关来指定适当的分配大小,以重新格式化该卷。例如,对于 2-KB 簇大小请运行以下命令:
format D:/a:2048
或者,您也可以启用 NTFS 压缩来重新找回因不适当的簇大小而丢失的空间;不过,如果您这样做,性能可能会稍有降低。

文件属性或 NTFS 权限

您可以使用 Windows 资源管理器或 dir /a /s 文件夹列表命令,以仅报告您有权访问的文件和文件夹的统计数字。默认情况下,隐藏文件和受保护的操作系统文件总排除在此报告之外。因为有些文件夹不包括在内,通过 Windows 资源管理器或 dir 命令输出显示的文件和文件夹总数及大小统计数字可能是不准确的。如要在总的统计数字中包括这些文件类型,请更改“文件夹选项”:
  1. 双击我的电脑,然后双击您要查看的卷的驱动器号。
  2. 单击工具菜单上的文件夹选项,然后单击查看选项卡。
  3. 单击“显示隐藏文件或文件夹”复选框,然后单击以清除“隐藏受保护的操作系统文件”复选框。
  4. 收到警告信息后,单击应用
在您将文件和文件夹取消隐藏后,可以使用 Windows 资源管理器或 dir /a /s 命令来生成包含在用户拥有权限的卷上的所有文件和文件夹的总数。

若要确定无法访问到的文件夹和文件,请执行以下操作:
  1. 在命令提示下,将 dir /a /s 输出发送到一个文本文件。

    例如,运行以下命令:
    dir d:/a /s >c:\d-dir.txt
  2. 启动 Ntbackup.exe,单击工具菜单上的选项,单击备份日志选项卡,然后单击详细信息
  3. 单击备份选项卡,备份受影响的整个卷(在本例中是驱动器 D),然后启动备份过程。
  4. 在完成备份过程后,查看备份报告,然后将 Ntbackup 日志输出中的文件夹与您在步骤 1 中以文本文件形式保存的输出中的文件夹进行比较。
此备份过程会访问所有的文件;因此,其报告可能会包括您使用 Windows 资源管理器或 dir 命令时看不到或未计入的文件夹和文件。如果您正在查找无法使用 Windows 资源管理器访问的大型文件或文件夹,您会发现使用 Ntbackup 图形用户界面 (GUI) 导航该卷可能较为容易。使用 Ntbackup GUI 可以查看卷而不实际备份该卷。

在您查找到您无权访问的文件后,可在 Windows 资源管理器中打开这些文件或文件夹的属性,单击安全性选项卡,然后添加或更改权限,以使此文件夹包含在 dir /a /s 命令输出中。默认情况下,您无权访问 System Volume Information 文件夹。

注意:您可能会发现,某些文件夹或文件属性不包含安全性选项卡,或者您可能会发现无法向受影响的文件夹和文件重新指派权限。在您尝试访问这些文件时,可能会看到以下错误信息:
D:\folder_name\ is not accessible

Access is denied
如果您发现了此类文件夹,请与 Microsoft 产品支持服务联系,以获取更多帮助。要与 Microsoft 产品支持服务部门联系,请访问下面的 Microsoft Web 站点:
http://support.microsoft.com/directory/question.asp

无效的文件名

包含无效或保留文件名的文件夹或文件也可能会被排除在文件和文件夹统计数字以外。包含前导或尾随空格的文件夹或文件在 NTFS 中是可以接受的;但是,在 Win32 子系统中不接受这些文件。因此,使用 Windows 资源管理器和使用命令行都不能可靠地处理具有前导或尾随空格的文件。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
120716 How to Remove Files with Reserved Names in Windows NT
一般情况下,重命名或删除具有先导或尾随空格的文件或文件夹是不可能的。如果您尝试重命名或删除这些文件的文件夹,可能会看到以下错误信息之一:
Error renaming file or folder

Cannot rename file:Cannot read from the source file or disk.
- 或者 -
Error deleting file or folder

Cannot delete file:Cannot read from the source file or disk.
如果您有无法删除或重命名的文件夹或文件,请与以下 Microsoft Web 站点上的“产品支持服务”联系:
http://support.microsoft.com/directory/question.asp

NTFS MFT 扩展

在您创建和格式化 NTFS 卷后,就创建出了 NTFS 图元文件。其中的一个图元文件叫做“主文件表”(MFT)。创建时此文件非常小(大约 16 KB),但是随着文件和文件夹在卷上的创建,它会随之增长。创建一个文件时,它将作为一个文件记录段输入到 MFT 中,此文件记录段的大小总是 1024 字节 (1 KB)。随着文件添加到卷中,MFT 将根据需要增长。不过,在您删除这些文件后,关联的文件记录段将被标记为空闲和可以重新利用,但是总的文件记录段和关联的 MFT 分配仍保持不变。此行为解释了在您删除大量文件后仍不能重新获得由 MFT 使用的空间的原因。

若要确定 MFT 的准确大小,请使用内置的磁盘碎片整理程序工具来分析卷。请查看磁盘碎片整理程序报告,以获取有关 MFT 中碎片大小和数量的详细信息。

以下文本是磁盘碎片整理程序报告的一个示例:
Master File Table (MFT) fragmentation
	Total MFT size =        26,203 KB
	MFT record count =      21,444
	Percent MFT in use =    81 %
	Total MFT fragments =   4
					
如想更完整地了解有多少空间(开销)正由整个 NTFS 文件系统使用,请运行 chkdsk 命令,然后查看命令输出中的下面这一行:
In use by system.
当前,只有第三方磁盘碎片整理程序工具可以整合未使用的 MFT 文件记录段记录并收回未使用的 MFT 分配空间。

替换数据流

NTFS 允许文件和文件夹包含替换数据流。此功能允许多个数据分配与单个文件或文件夹关联。当您在文件和文件夹上使用替换数据流时,一定要了解以下限制:
  • Windows 资源管理器和 dir 命令不会将替换数据流中的数据作为文件大小或卷统计数字的一部分报告出来。相反,它们仅显示主数据流的总字节数。
  • chkdsk 命令的输出会精确地报告用户的数据文件所占用的空间,其中包括替换数据流。
  • 磁盘配额会精确地跟踪和报告作为用户的数据文件一部分的全部数据流分配。
  • Ntbackup 将记录在备份日志报告中备份的字节数。不过,它既不会显示哪些文件包含替换数据流,也不会显示包含替换数据流中的数据的文件的精确大小。

NTFS 文件系统损坏

在极为少见的情况下,NTFS $MFT 或 $BITMAP 图元文件会遭到破坏并导致丢失磁盘空间。如想确定并修复此问题,请对有问题的卷运行 chkdsk /F 命令。在 chkdsk 过程快要结束时,如果 $BITMAP 图元文件需要调整,您会看到以下信息:
Correcting errors in the master file table's (MFT) BITMAP attribute.CHKDSK discovered free space marked as allocated in the volume bitmap.Windows has made corrections to the file system.

其他可能会引起文件分配混淆的 NTFS 功能

NTFS 还支持硬链接和重分析点,它们允许创建卷装入点和文件夹联接。当您尝试确定在一个物理卷上有多少空间被占用时,这些附加的 NTFS 功能可能会引起混淆。

硬链接是文件的一个文件夹条目,它与实际文件数据在卷上的位置无关。每个文件都被视为至少有一个硬链接。在 NTFS 卷上,每个文件可以有多个硬链接;因此,一个文件可以在许多文件夹中显示(甚至在同一个文件夹中以不同的名称显示)。因为所有的链接都引用同一个文件,所以程序可以打开任何一个链接并修改该文件。只有在删除一个文件的所有链接后,才可以从文件系统中删除此文件。在创建硬链接后,程序就可以像使用其他任何文件名一样使用该链接。注意,使用 Windows 资源管理器和运行命令将显示所有链接的文件都有相同的大小,尽管它们在共享相同的数据而且实际上并未占用这么多的磁盘空间。

卷装入点和文件夹联接允许 NTFS 卷上的空文件夹指向另一个卷上的根文件夹或子文件夹。Windows 资源管理器和 dir /s 命令循着重分析点计算目标卷上的任何文件和文件夹,然后将它们包括在宿主卷的统计数字中。此行为会让您认为宿主卷上已使用的空间比实际使用的空间多。 有关联接点的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
205524 How to Create and Manipulate NTFS Junction Points
总之,可以使用下列方法来正确判定卷上磁盘空间的使用情况:
  • 查看 chkdsk 命令的输出。
  • 使用 Ntbackup GUI 或查看备份日志。
  • 查看磁盘配额。
而在另一方面,当您使用 Windows 资源管理器和 dir 命令来确定磁盘空间使用情况时,要知道它们有一些局限性缺陷。

属性

文章编号: 315688 - 最后修改: 2007年1月4日 - 修订: 4.0
这篇文章中的信息适用于:
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
关键字:?
kberrmsg kbinfo KB315688
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com