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

Я бегал 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 устанавливает эту "запланированную задачу", чтобы сервер знал об этом даже неделю спустя во время перезагрузки окна обслуживания?

1 ответ

Решение

Отличный вопрос. Ответ в том, что 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 *

Другие вопросы по тегам