锁定卷上的 CHKDSK /F 如何在重启时被“安排”?

锁定卷上的 CHKDSK /F 如何在重启时被“安排”?

这些年来我已经运行过chkdsk /F很多次了......今天我必须在我的其中一台 2008 R2 服务器上运行它,并且收到了正常消息:

Chkdsk 无法运行,因为该卷正在被另一个进程使用。是否要安排在下次系统重新启动时检查此卷?(Y/N) y

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

我在这里查看了 Technet 文档:http://technet.microsoft.com/en-us/library/cc730714.aspx以及正常的谷歌搜索和在谷歌上的 Technet 和 site:microsoft.com 上搜索,但找不到我想要的东西......

问题:

Windows 如何在/在哪里安排重启时执行此操作?它不在任务计划程序或 RunOnce 或类似程序中,如果它需要在 Windows 锁定卷之前运行,那么这是有道理的……那么 Windows 究竟在哪里设置此“计划任务”的发生,以便服务器即使在一周后的维护窗口重启期间也知道它?

答案1

好问题。答案是,该VolumeDirty位是在卷上设置的,(我不得不假设)在启动时会进行检查。可能类似于插入闪存驱动器时检查的方式,弹出窗口显示“扫描”或“继续但不扫描”

我曾经尝试过一种方法来为几乎无需维护的自动化服务器安排 chkdsk,即volumedirty通过 powershell 脚本 ( dirtybitset = $true) 设置位,但这种方法行不通。我可能会重新考虑这种方法,因为从我的链接中可以看到,有一个 ScheduleAutoChk 可以做到这一点,并且可以与 dirtybit 配合使用。

更远在这里研究状态:

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

您可以在此处找到有关更多信息autochk.exe,以帮助解释正在发生的事情Microsoft Technet 网站维基百科维基百科指出:

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

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

具体来说,如果你查看注册表,就会发现:

HKLM\System\CurrentControlSet\Control\会话管理器

有一个值BootExecute从变为autocheck autochk *类似autocheck autochk /p \\??\C: autocheck autochk *

相关内容