锁定卷上的CHKDSK / F如何在重新启动时“计划”?


14

这些年来,我已经运行了chkdsk /F很多次……今天,我不得不在我的一台2008 R2服务器上运行它,并且得到了正常的消息:

由于该卷正在被另一个进程使用,因此Chkdsk无法运行。您是否要计划在下次系统重新启动时检查此卷?(是/否)

下次系统重新启动时,将检查该卷。

我在这里查看了Technet文档:http : //technet.microsoft.com/zh-cn/library/cc730714.aspx以及普通的google搜索以及在Technet和site:microsoft.com上进行的Google搜索,但是可以找不到我要找的东西...

问题:

Windows如何/在何处计划重新启动?它不在Task Scheduler或RunOnce或类似程序中,这是否有意义,如果它需要在Windows锁定卷之前运行...因此Windows确切地将发生此“计划任务”的位置设置为发生,以便服务器甚至知道一个星期后,在维护窗口重启期间?

Answers:


19

好问题。答案是VolumeDirty在卷上设置了该位,在启动过程中会检查该位(我必须假设)。可能类似于插入闪存驱动器并弹出“扫描或继续而不扫描”的检查方式

我曾经试图volumedirty通过powershell脚本(dirtybitset = $true)设置位来为维护几乎为零的自动化服务器安排chkdsk的方法,但是这种方法不起作用。我可能会重新访问,就像从链接中看到的那样,有一个ScheduleAutoChk可以做到这一点,并且可以与dirtybit一起使用。

这里的进一步研究指出:

每次Windows重新启动时,内核都会调用Autochk.exe来扫描所有卷以检查是否设置了卷脏位。如果脏位被设置。

autochk.exe可以在此处找到有关的更多信息,以帮助解释Microsoft Technet网站Wikipedia的情况,Wikipedia指出:

加载所有引导和系统驱动程序后,内核(系统线程)将启动会话管理器子系统(smss.exe)。

在打开任何文件之前,Autochk由smss.exe启动。Autochk会安装所有驱动器,并一次检查一个驱动器,以查看它们是否已完全卸下。如果autochk确定一个或多个卷是脏的,它将自动运行chkdsk

具体来说,如果您在注册表中查看以下内容,它将显示:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

它的价值BootExecuteautocheck autochk *变为autocheck autochk /p \\??\C: autocheck autochk *


1
啊...好酷,我发现了更多详细信息,我会在您的回答中添加...谢谢您,先生!
TheCleaner 2014年

1
供参考:看来您可以chkntfs /c %SystemDrive%用来计划引导卷以在重新引导时进行检查,而无需直接修改注册表。(当然,您必须具有管理员权限才能执行此操作。)
cHao 2014年

@cHao-您不必直接与注册表混为一谈。`chkdsk / f%SystemDrive%执行相同的操作。也许我没有关注您的评论。
TheCleaner 2014年

@TheCleaner:chkntfs /c但是,有了,您不会得到“您要安排...吗?” 提示。例如,如果要在计划任务中弄脏驱动器,那可能是一个重要的区别。
cHao 2014年

2
@ MDMoore313:/c是安排检查的选项。没有它,chkntfs只会告诉您是否已安排检查。
cHao 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.