[asynchronous loving] 关于文件系统大小 硬盘空间与实际不符 的问题

106 views
Skip to first unread message

Jin King

unread,
May 29, 2007, 5:50:41 AM5/29/07
to asynl...@googlegroups.com
刚在百度知道上看到有人问这个问题,Googlebaidu一下类似的问题还不少。

很多回答都是清理垃圾文件、关闭系统还原、关闭休眠等等,如果这样还不能解决问题,就要注意了:

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

自己做系统有一个习惯:为新系统重命名管理员、然后修改各分区重要文件夹权限,将权限分给新管理员、并禁止其他用户访问。可是问题就出来了:当系统突然崩溃必须重新作系统时或正常的重装系统前没有修改文件夹权限时,在新系统中会无法访问此类文件夹,查看属性时占用空间为0,而实际是有文件的,如果是限制的是分区还会出现未知文件系统格式。亲身经历。

废话不多说了,将文件系统大小(硬盘空间)与实际不符的可能原因简单总结如下:
文件属性或 NTFS 权限

使用 Windows 资源管理器或 dir /a /s 文件夹列表命令,只能显示有权访问的文件和文件夹的统计数字。
默认情况下,隐藏文件和受保护的操作系统文件总排除在外。如何显示隐藏文件和受保护的操作系统文件就不说了,网上资料很多。
确定无权访问的文件夹和文件
1. 在命令提示行下,将 dir /a /s 输出发送到一个文本文件。
例:dir d:/a /s >c:\list.txt
2. "开始"、"运行"、输入"ntbackup",启动 ntbackup.exe,单击工具菜单上的选项,单击备份日志选项卡,然后单击详细信息。
3. 单击备份选项卡,备份受影响的整个卷,启动备份过程。
4. 完成备份过程后,查看备份报告,然后将 Ntbackup 日志输出中的文件夹与您在步骤 1 中以文本文件形式保存的输出中的文件夹进行比较。
此备份过程会访问所有文件;因此,报告会包括Windows 资源管理器或 dir 命令看不到或未计入的文件夹和文件。使用 Ntbackup GUI 导航该卷较为容易查找无法使用 Windows 资源管理器访问的大型文件或文件夹。使用 Ntbackup GUI 可以查看卷而不实际备份该卷。

找到无权访问的文件后,打开这些文件或文件夹的属性,单击安全选项卡,然后更改权限,使此文件夹包含在 dir /a /s 命令输出和资源管理器中,然后再进行统计。

注意:某些文件夹或文件属性不包含安全性选项卡,或者无法向受影响的文件夹和文件重新指派权限。错误信息:
D:\folder_name\ is not accessible
Access is denied
解决方法:用系统管理员身份登录,改变目录所有者,然后照上面该权限。
簇大小太大

磁盘空间只由包含内部 NTFS 图元文件(例如 MFT、文件夹索引等)的文件和文件夹使用。大量这样的簇将占用所有的文件空间分配。一个簇就是一些相邻扇区的集合。簇大小是在格式化卷时确定的,并由分区大小进一步确定。
在命令提示符下运行命令chkdsk d:(盘符)确定当前簇大小和卷统计数字。
查看簇是否在使用最佳簇大小,请确定浪费的空间总量:
1. 双击我的电脑,然后双击您要查看的卷的驱动器符号(例如 D)。
2. 单击任何文件或文件夹,然后单击编辑菜单上的全选。
3. 右键单击任何文件或文件夹,然后单击属性。
4. 单击常规选项卡,然后查看“大小”和“占用空间”这两个文件大小值,这些值可以计算出整个卷上文件和文件夹的总数。
此问题不太明显,且多出现于频繁增删文件的卷。
无效的文件名

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

在创建和格式化 NTFS 卷后,就创建出了 NTFS 图元文件。其中的一个图元文件叫做“主文件表”(MFT)。创建时此文件非常小(大约 16 KB),但是随着文件和文件夹在卷上的创建,它会随之增长。创建一个文件时,它将作为一个文件记录段输入到 MFT 中,此文件记录段的大小总是 1024 字节 (1 KB)。随着文件添加到卷中,MFT 将根据需要增长。不过,在删除这些文件后,关联的文件记录段将被标记为空闲和可以重新利用,但是总的文件记录段和关联的 MFT 分配仍保持不变。此行为解释了在删除大量文件后仍不能重新获得由 MFT 使用的空间的原因。
要确定 MFT 的准确大小,可以使用内置的磁盘碎片整理程序工具来分析卷。
当前,只有第三方磁盘碎片整理程序工具可以整合未使用的 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 功能

硬链接、重分析点、卷装入点和文件夹联……

总之,可以使用下列方法来正确判定卷上磁盘空间的使用情况:
• 查看 chkdsk 命令的输出。
• 使用 Ntbackup GUI 或查看备份日志。
• 查看磁盘配额。
而在另一方面,使用 Windows 资源管理器和 dir 命令来确定磁盘空间使用情况时,要知道它们有一些局限性缺陷。


--
由 Jin King 于 5/28/2007 01:29:00 上午 在 asynchronous loving 上发表
Reply all
Reply to author
Forward
0 new messages