Como o CHKDSK / F no volume bloqueado é “programado” na reinicialização?

14

Eu corri chkdsk /F muitas vezes ao longo dos anos ... e hoje tive que executá-lo em um dos meus servidores 2008 R2 e recebi a mensagem normal:

Chkdsk cannot run because the volume is in use by another process. Would you like to schedule this volume to be checked the next time the system restarts? (Y/N) y

This volume will be checked the next time the system restarts.

Eu consultei o documento da Technet aqui: link , além da pesquisa normal no google e pesquisando no Technet e no site: microsoft.com no google, mas não consigo encontrar o que estou procurando ...

A pergunta:

COMO / onde o Windows agenda isso ao reiniciar? Não está no Agendador de Tarefas, RunOnce ou similar, o que faz sentido se ele precisa ser executado antes do Windows travar o volume ... então onde exatamente o Windows configura essa "tarefa agendada" para que o servidor saiba sobre ela mesmo semana depois, durante uma reinicialização da janela de manutenção?

    
por TheCleaner 13.02.2014 / 16:25

1 resposta

19

Grande pergunta. A resposta é que o VolumeDirty bit está definido no volume, que (eu tenho que assumir) é verificado durante a inicialização. Provavelmente semelhante à maneira como é verificado quando uma unidade flash é inserida e o pop-up que diz Digitalizar ou Continuar sem Digitalizar .

Uma vez eu tentei criar uma maneira de programar um chkdsk para um servidor automatizado que tinha quase zero de manutenção, definindo o volumedirty bit via script powershell ( dirtybitset = $true ), mas não funcionaria. Eu posso revisitar que, como aparece no meu link, há um ScheduleAutoChk que faz exatamente isso e trabalha em conjunto com o dirtybit.

Outras pesquisas aqui afirmam:

Every time Windows restarts, Autochk.exe is called by the Kernel to scan all volumes to check if the volume dirty bit is set. If the dirty bit is set.

Mais informações sobre autochk.exe podem ser encontradas aqui para ajudar a explicar o que está acontecendo no site do Microsoft Technet e Wikipedia , onde a Wikipedia declara:

Once all the Boot and System drivers have been loaded, the kernel (system thread) starts the Session Manager Subsystem (smss.exe).

Before any files are opened, Autochk is started by smss.exe. Autochk mounts all drives and checks them one at a time to see whether or not they were cleanly unmounted. If autochk determines one or more volumes are dirty, it will automatically run chkdsk

Especificamente, aparece se você procurar no registro em:

HKLM\System\CurrentControlSet\Control\Session Manager

Existe um valor de BootExecute que é alterado de autocheck autochk * para algo como autocheck autochk /p \??\C: autocheck autochk *

    
por 13.02.2014 / 16:32