Как CHKDSK / F на заблокированном томе становится «запланированным» при перезагрузке?


14

Я работал chkdsk /Fмного раз за эти годы ... и сегодня мне пришлось запустить его на одном из моих серверов 2008 R2, и я получаю нормальное сообщение:

Chkdsk не может работать, потому что том используется другим процессом. Хотите ли вы запланировать проверку этого тома при следующем перезапуске системы? (Да / Нет) у

Этот объем будет проверен при следующем перезапуске системы.

Я посмотрел документ Technet здесь: http://technet.microsoft.com/en-us/library/cc730714.aspx, а также обычный поиск в Google и поиск по Technet и сайту: microsoft.com в Google, но могу не могу найти то, что я ищу ...

Вопрос:

КАК / где Windows планирует это при перезагрузке? Это не в Task Scheduler или RunOnce или аналогичных, что имеет смысл, если он должен быть запущен до того, как Windows заблокирует том ... так, где именно Windows устанавливает эту «запланированную задачу», чтобы сервер знал об этом даже неделю спустя во время перезагрузки окна обслуживания?

Ответы:


19

Отличный вопрос Ответ заключается в том, что VolumeDirtyбит установлен на громкость, которая (я должен предположить) проверяется во время загрузки. Вероятно, аналогично тому, как это проверяется, когда вставлена ​​флешка и появляется всплывающее окно «Сканировать или продолжить без сканирования» .

Однажды я попытался придумать способ планирования chkdsk для автоматизированного сервера, который практически не требует обслуживания, установив volumedirtyбит с помощью сценария powershell ( dirtybitset = $true), но это не сработало. Я могу вернуться к тому, что, как видно из моей ссылки, есть ScheduleAutoChk, который делает именно это и работает в сочетании с dirtybit.

Дальнейшие исследования здесь гласят:

Каждый раз, когда Windows перезагружается, ядро ​​вызывает Autochk.exe для сканирования всех томов, чтобы проверить, установлен ли бит грязных томов. Если грязный бит установлен.

Дополнительную информацию autochk.exeможно найти здесь, чтобы помочь объяснить, что происходит на сайте Microsoft Technet и в Википедии , где Википедия утверждает:

После загрузки всех загрузочных и системных драйверов ядро ​​(системный поток) запускает подсистему диспетчера сеансов (smss.exe).

Перед открытием любых файлов Autochk запускается программой smss.exe. Autochk монтирует все диски и проверяет их по одному, чтобы увидеть, были ли они демонтированы. Если autochk определит, что один или несколько томов загрязнены, он автоматически запустит chkdsk

В частности, это появляется, если вы посмотрите в реестре под:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

Есть значение, BootExecuteкоторое изменяется от autocheck autochk *чего-то вродеautocheck autochk /p \\??\C: autocheck autochk *


1
ага ... окей круто я нашел дополнительные подробности добавлю к вашему ответу ... спасибо сэр!
TheCleaner

1
Для справки: похоже, вы можете использовать chkntfs /c %SystemDrive%для планирования загрузочного тома проверку перезагрузки без перебора реестра. (Конечно, для этого у вас должны быть права администратора.)
cHao

@cHao - вам не нужно напрямую портить реестр. `chkdsk / f% SystemDrive% делает то же самое. Возможно я не слежу за вашим комментарием.
TheCleaner

@TheCleaner: С chkntfs /c, тем не менее, вы не получаете "Вы хотели бы запланировать ...?" незамедлительный. Это может быть важным отличием, например, если вы хотите очистить диск как часть запланированной задачи.
cHao

2
@ MDMoore313: /cэто опция для планирования проверки. Без него chkntfsпросто скажу, запланирована ли проверка.
Чао
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.