Windows

鎖定卷上的 CHKDSK /F 如何在重新啟動時“預定”?

  • November 26, 2019

這些年來我已經執行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

我曾經嘗試想出一種方法,通過volumedirtypowershell 腳本(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 *

引用自:https://serverfault.com/questions/575368