8,如何估计 CHKDSK 的时间要求呢?
第一节对 CHKDSK 的各个运行阶段的说明只是粗略概述了 CHKDSK 为验证 NTFS 卷的完整性而执行的最重要任务。CHKDSK 还在各个阶段中执行许多额外的特定检查,并在各个阶段之间执行几种快速检查。但是,即使是这样的粗略概述也能够提供一些基础知识,以便我们开始讨论影响 CHKDSK 运行所需时间的可变因素。(关于chkdsk 命令的使用,请参阅:Chkdsk—磁盘查错修复命令http://blog.sina.com.cn/s/blog_51a4af870100agcl.html)
可变因素 1:“索引”阶段
不过,这一百分比/时间关系却未必适用于第二阶段,也就是 CHKDSK 检查索引(NTFS 目录)的那个阶段。处理目录所需的时间与该目录中包含的文件和子目录的数量密切相关,但是在该阶段中,“已完成百分比”仅与 CHKDSK 必须检查的目录数量有关。并没有针对某些特定操作(例如,处理包含数量巨大的文件和子目录的目录)所需的时间进行调整。除非卷上的目录都包含大致相同数量的文件,否则该阶段中显示的“已完成百分比”将不会可靠地反映第二阶段所需的实际时间。
更坏的情况是您可能陷入意外的 CHKDSK 过程,这时 CHKDSK 的第二阶段通常是需时最长的阶段。
可变因素 2:卷的情况
许多与卷的状态有关的因素都会影响 CHKDSK 运行所需的时间。用于预测在给定卷上运行 CHKDSK 所需时间的公式必须考虑文件和目录的数目、卷的总体碎片化程度(特别是 MTF 的碎片化程度)、文件名的格式(长名称、8.3 格式名称或混合型名称)以及 CHKDSK 必须修复的实际损坏量等可变因素。
可变因素 3:硬件问题
硬件问题也会影响 CHKDSK 运行所需的时间。可变因素包括可用内存的数量、CPU 速度、磁盘速度等。
可变因素 4:CHKDSK 设置
如果不使用 /R 开关,则给定硬件平台上与时间最密切的因素是该卷上的文件和目录的数量,而不是卷的绝对大小。
例如,如果不使用 /R 开关,则对于仅包含一个或两个大型数据库文件的 50 GB 卷,CHKDSK 的运行可能只需要几秒钟。如果使用 /R 开关,CHKDSK 将必须读取并验证卷上的每个扇区,对于大型卷而言,这会显著增加运行所需的时间。另一方面,如果一个相对较小的卷包含几十万甚至几百万个小文件,则运行 CHKDSK 可能需要数小时,无论您是否指定 /R 开关。
预测 CHKDSK 的时间要求
但是,出于以下原因,必须谨慎使用此方法:
|
在只读模式下,如果在较早阶段中遇到错误,CHKDSK 会在完成所有三个阶段之前退出,并很可能误报错误。例如,如果 NTFS 恰好在 CHKDSK 检查磁盘时修改了磁盘上的区域,则 CHKDSK 可能会报告磁盘损坏。要正确地进行验证,卷必须处于静止状态,而保证卷处于静止状态的唯一方法就是锁定卷。CHKDSK 仅当您指定了 /F 开关(或 /R 开关,它会隐含指定 /F)时才会锁定卷。在只读模式下,要使 CHKDSK 完成所有运行阶段,可能需要多次运行 CHKDSK。 |
|
CHKDSK 对 CPU 和磁盘的占用率都很高。运行 CHKDSK 所需的时间要受到系统负载的大小的影响,还要受到 CHKDSK 是联机运行还是在 Windows XP 启动序列内运行的影响。哪个因素成为瓶颈要视硬件配置而定,但是如果在只读模式下运行 CHKDSK 时 CPU 利用率或磁盘 I/O 量很高,则 CHKDSK 的运行时间将变长。此外,Autochk.exe 的运行环境与 Chkdsk.exe 不同。通过 Autochk.exe 运行 CHKDSK 使 CHKDSK 能够独占 CPU 和 I/O 资源,但同时还会使 CHKDSK 无法使用虚拟内存。虽然 Autochk.exe 一般比 Chkdsk.exe 运行速度更快,但如果计算机的可用 RAM 相对较少,Autochk.exe 可能实际上需要更长时间。 |
|
修复损坏会增加所需的时间。在只读模式下,仅当 CHKDSK 没有发现任何重大损坏时,才能完整运行。如果磁盘仅有少量损坏,那么修复这些问题不会显著增加仅仅运行 CHKDSK 所需的时间。但如果 CHKDSK 发现了重大损坏,例如发生了严重的硬件故障,则运行 CHKDSK 所需的时间将随 CHKDSK 必须修复的损坏文件的数量而成比例地增加。在极端情况下,这可能会成倍地增加 CHKDSK 运行所需的时间。 | |
9,如何禁止对某分区的查错修复呢?
在第5个问答中,我们讨论了取消对某分区的开机查错修复,那么如何禁止对些分区的查错修复呢?
警告:注册表编辑器使用不当可能导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。按照下列步骤操作,然后退出注册表编辑器:
1. |
单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。 |
2. |
在注册表中找到并单击以下注册表项:
HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute |
3. |
在“编辑”菜单上,单击“修改”。 |
4. |
将默认的 autocheck autochk * 改为 autocheck autochk /k:E * (计算机启动时不检查 E 盘,即使该卷标记为需要 chkdsk )。同理,也可以改为 autocheck autochk /k:E /k:F * (计算机启动时不检查 E 、 F 盘,即使这些卷标记为需要 chkdsk )。 |
10,可以不通过注册表,而使用其他命令行工具来完成对 BootExecute 的查看与修改吗?
Chkntfs
显示或指定在启动计算机时计划的自动系统检查是否在 FAT、FAT32 或者 NTFS 卷上运行。
语法
chkntfs volume: [...]
chkntfs [/d]
chkntfs [/t[:time]]
chkntfs [/x volume: [...]]
chkntfs [/c volume: [...]]
参数
- volume: [...]
- 必需指定驱动器号(冒号分隔)、装入点或卷名。显示识别指定卷的文件系统的信息。如果已计划运行自动文件检查,则该参数会显示表明卷是否已遭损坏的消息(要求运行 chkdsk)。
- /d
- 还原所有 chkntfs 默认设置,除了自动文件检查的倒计时之外。计算机启动时,默认操作是检查所有卷。
- t [[:]timefield]
- 将 Autochk.exe 开始的倒计时时间更改为通过输入而指定的时间值(单位为秒)。如果未指定 :time,/t 将显示当前的倒计时时间。
- /x volume:
- 计算机启动时不检查指定卷,即使该卷标记为需要 chkdsk。
- /c volume:
- 计划当计算机启动时对指定卷的检查时间。
- /?
- 在命令提示符显示帮助。
注释
- 要运行 chkntfs,您必须是 Administrators 组的成员。
- 虽然可已将 Autochk.exe 开始的倒计时时间设为零,但这样做将无法取消潜在时间消耗的自动文件检查。
范例
要显示 Autochk.exe 开始的倒计时时间,请键入:
chkntfs /t
要更改 Autochk.exe 开始的倒计时时间,请以秒为单位键入时间。例如,要将倒计时时间更改为 30 秒,请键入:
chkntfs /t:30
/x 命令行选项不能累积使用。如果多次键入该选项,则其最近键入的项将替代此前键入的项。要排除多个卷,请在一个命令中将所有卷列出。例如,要排除 E:和 F:卷,请键入:
chkntfs /x e: f:
要仅排除 F:卷,请键入:
chkntfs /x e:
chkntfs /x f:
/c 命令行选项可以累积使用。如果只需要检查指定的卷,请首先重设默认值以清除任何以前的命令,然后将所有的卷排除检查,最后在所需卷上计划自动文件检查。
例如,要在 D: 卷上计划自动文件检查,请键入:
chkntfs /d
chkntfs /x c: d: e:
chkntfs /c d: |
在系统中,我们可以使用 chkntfs 来完成此操作。在实际操作中,微软的帮助说明中存在一个问题,即:使用 chkntfs 来同时操作多个驱动器号时,必须将驱动器号使用空格分隔!例如,要禁止检查E、F卷,微软帮助中给出的原始示例是:“chkntfs /x e:f:”,运行后会提示“ e:f: 不是一个合法的驱动器规格”,必须写成“chkntfs /x e: f: ”。如下图:
|