鎖定卷上的 CHKDSK /F 如何在重新啟動時“預定”?
這些年來我已經執行
chkdsk /F
了很多次……今天我不得不在我的 2008 R2 伺服器之一上執行它,我得到了正常的消息:Chkdsk 無法執行,因為該卷正被另一個程序使用。您想安排在下次系統重新啟動時檢查此卷嗎?(是/否)是
下次系統重新啟動時將檢查此卷。
我在這裡查看了 Technet 文件:http ://technet.microsoft.com/en-us/library/cc730714.aspx以及正常的Google搜尋和在Google上的 Technet 和 site:microsoft.com 上的搜尋,但可以找不到我要找的東西…
問題:
Windows 如何/在哪里安排重新啟動?它不在 Task Scheduler 或 RunOnce 或類似程序中,如果它需要在 Windows 鎖定卷之前執行,這是有道理的……所以 Windows 究竟在哪裡設置了這個“計劃任務”,以便伺服器知道它甚至一周後在維護視窗重新啟動期間?
好問題。答案是
VolumeDirty
在卷上設置了該位,(我必須假設)在啟動期間進行檢查。可能類似於插入快閃記憶體驅動器時的檢查方式,並且會彈出 Scan or Continue without Scanning。我曾經嘗試想出一種方法,通過
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 *