我多年来一直运行chkdsk /F
多次…今天我必须在我的一台2008 R2服务器上运行它,并得到正常的消息:
Chkdsk无法运行,因为该卷正在被另一个进程使用。 您是否希望在下次系统重新启动时检查此卷? (Y / N)y
系统下次重新启动时将检查该卷。
我已经看了在这里的Technet文档: http : //technet.microsoft.com/en-us/library/cc730714.aspx以及谷歌search和searchTechnet和网站:microsoft.com谷歌,但可以找不到我要找的东西
问题:
Windows如何在重新启动时安排这个工作? 它不是在任务计划程序或RunOnce或类似的,这是有道理的,如果它需要在Windowslocking卷之前运行…所以Windows设置这个“计划的任务”发生,以便服务器知道甚至一个一周后在维护时段重新启动?
很好的问题。 答案是VolumeDirty
位设置在卷上,我(不得不假设)在启动时检查。 可能与插入闪存驱动器时所检查的方式类似,并且可以使用“扫描”或“不扫描”继续 。
我曾试图想出一种方法来安排一个自动服务器chkdsk几乎没有维护,通过设置volumedirty
位通过powershell脚本( dirtybitset = $true
),但它不会工作。 我可能会重新看到,从我的链接看来,有一个ScheduleAutoChk可以做到这一点,并与dirtybit结合使用。
进一步的研究表明:
每次Windows重新启动时,内核会调用Autochk.exe来扫描所有卷以检查卷dirty位是否已设置。 如果脏位被设置。
更多关于autochk.exe
信息可以在这里find,以帮助解释在微软Technet网站和维基百科中发生了什么 ,维基百科说:
一旦加载了所有Boot和System驱动程序,内核(系统线程)就启动会话pipe理器子系统(smss.exe)。
在打开任何文件之前,Autochk由smss.exe启动。 Autochk安装所有驱动器,并一次检查一个驱动器,查看它们是否完全卸下。 如果autochk确定一个或多个卷是脏的,它将自动运行chkdsk
具体来说,如果你看下面的registry:
HKLM \ System \ CurrentControlSet \ Control \ Session Manager
有一个BootExecute
的值从autocheck autochk *
更改为autocheck autochk /p \\??\C: autocheck autochk *