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

The*_*ner 14 windows chkdsk windows-server-2008-r2

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

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

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

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

问题:

Windows 在重启时如何/在哪里安排这个?它不在任务计划程序或 RunOnce 或类似程序中,如果它需要在 Windows 锁定卷之前运行,这是有道理的......一周后在维护窗口重启期间?

MDM*_*313 19

很好的问题。答案是该VolumeDirty位设置在卷上,(我必须假设)在启动期间检查。可能类似于插入闪存驱动器时检查的方式,并且会弹出显示 Scan 或 Continue without Scanning 的弹出窗口

我曾经试图想出一种方法来为几乎为零维护的自动化服务器安排 chkdsk,方法是volumedirty通过 powershell 脚本 ( dirtybitset = $true)设置位,但它不起作用。我可能会重新审视它,因为从我的链接中可以看出,有一个 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

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

  • @MDMoore313:`/c` 是安排检查的选项。没有它,`chkntfs` 只会告诉你是否已经安排了检查。 (2认同)