¿Cómo se "programa" CHKDSK / F en el volumen bloqueado al reiniciar?

14

He corrido chkdsk /Fmuchas veces a lo largo de los años ... y hoy tuve que ejecutarlo en uno de mis servidores R2 de 2008 y recibí el mensaje normal:

Chkdsk no se puede ejecutar porque el volumen está en uso por otro proceso. ¿Desea programar la comprobación de este volumen la próxima vez que se reinicie el sistema? (S / N) y

Este volumen se verificará la próxima vez que se reinicie el sistema.

He visto el documento de Technet aquí: http://technet.microsoft.com/en-us/library/cc730714.aspx , así como la búsqueda y búsqueda en Google normal en Technet y el sitio: microsoft.com en google, pero puede no encuentro lo que estoy buscando ...

La pregunta:

¿CÓMO / dónde programa Windows esto al reiniciar? No está en el Programador de tareas o RunOnce o similar, lo que tiene sentido si necesita ejecutarse antes de que Windows bloquee el volumen ... entonces, ¿dónde establece Windows exactamente esta "tarea programada" para que el servidor lo sepa, incluso un semana después durante un reinicio de la ventana de mantenimiento?

El limpiador
fuente

Respuestas:

19

Gran pregunta la respuesta es que el VolumeDirtybit se establece en el volumen, que (debo suponer) se verifica durante el arranque. Probablemente similar a la forma en que se verifica cuando se inserta una unidad flash y se obtiene la ventana emergente que dice Escanear o Continuar sin escanear .

Una vez intenté encontrar una manera de programar un chkdsk para un servidor automatizado que tenía un mantenimiento casi nulo, configurando el volumedirtybit a través del script powershell ( dirtybitset = $true), pero no funcionó. Puedo volver a visitar eso, tal como aparece en mi enlace, hay un ScheduleAutoChk que hace exactamente eso y funciona junto con el bit sucio.

La investigación adicional aquí declara:

Cada vez que Windows se reinicia, el Kernel llama a Autochk.exe para escanear todos los volúmenes y verificar si el bit de volumen sucio está configurado. Si se establece el bit sucio.

autochk.exePuede encontrar más información sobre aquí para ayudar a explicar lo que está sucediendo en el sitio de Microsoft Technet y Wikipedia , donde Wikipedia dice:

Una vez que se han cargado todos los controladores de arranque y del sistema, el núcleo (subproceso del sistema) inicia el subsistema Session Manager (smss.exe).

Antes de abrir los archivos, smss.exe inicia Autochk. Autochk monta todas las unidades y las comprueba de una en una para ver si se desmontaron limpiamente o no. Si autochk determina que uno o más volúmenes están sucios, ejecutará automáticamente chkdsk

Específicamente, aparece si busca en el registro en:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

Hay un valor de BootExecuteque se cambia de autocheck autochk *algo comoautocheck autochk /p \\??\C: autocheck autochk *

MDMoore313
fuente
1
aha ... OK, genial. Encontré detalles adicionales que agregaré a su respuesta ... ¡gracias señor!
TheCleaner
1
Como referencia: parece que puede usar chkntfs /c %SystemDrive%para programar el volumen de arranque para verificar el reinicio sin perder el tiempo directamente con el registro. (Por supuesto, debes tener derechos de administrador para hacerlo.)
cHao
@cHao: no tiene que interferir directamente con el registro independientemente. `chkdsk / f% SystemDrive% hace lo mismo. Tal vez no estoy siguiendo tu comentario.
TheCleaner
@TheCleaner: Sin chkntfs /cembargo, no obtienes el "¿Te gustaría programar ...?" rápido. Esa puede ser una diferencia importante si desea ensuciar la unidad como parte de una tarea programada, por ejemplo.
cHao
2
@ MDMoore313: /ces la opción para programar la verificación. Sin él, chkntfssolo le dirá si se ha programado un cheque.
cHao