Comment CHKDSK / F sur un volume verrouillé est-il «planifié» au redémarrage?

14

J'ai exécuté chkdsk /Fplusieurs fois au fil des ans ... et aujourd'hui, je devais l'exécuter sur l'un de mes serveurs 2008 R2 et je reçois le message normal:

Chkdsk ne peut pas s'exécuter car le volume est utilisé par un autre processus. Souhaitez-vous planifier la vérification de ce volume au prochain redémarrage du système? (O / N) y

Ce volume sera vérifié lors du prochain redémarrage du système.

J'ai regardé le doc Technet ici: http://technet.microsoft.com/en-us/library/cc730714.aspx ainsi que la recherche google normale et la recherche sur Technet et le site: microsoft.com sur google, mais je peux ne trouve pas ce que je cherche ...

La question:

COMMENT / où Windows planifie-t-il cela au redémarrage? Ce n'est pas dans le Planificateur de tâches ou RunOnce ou similaire, ce qui a du sens s'il doit s'exécuter avant que Windows ne verrouille le volume ... alors où Windows définit-il exactement cette "tâche planifiée" pour qu'elle se produise afin que le serveur le sache même un une semaine plus tard lors d'un redémarrage de la fenêtre de maintenance?

Le nettoyeur
la source

Réponses:

19

Grande question. la réponse est que le VolumeDirtybit est défini sur le volume, qui (je dois supposer) est vérifié lors du démarrage. Probablement similaire à la façon dont il est vérifié lorsqu'un lecteur flash est inséré et que l' on obtient la fenêtre contextuelle qui dit Scan ou Continue Without Scanning .

J'ai essayé une fois de trouver un moyen de planifier un chkdsk pour un serveur automatisé avec une maintenance presque nulle, en définissant le volumedirtybit via le script powershell ( dirtybitset = $true), mais cela ne fonctionnerait pas. Je peux revoir cela, comme il apparaît sur mon lien, il y a un ScheduleAutoChk qui fait exactement cela et fonctionne en conjonction avec le dirtybit.

D'autres recherches ici indiquent:

Chaque fois que Windows redémarre, Autochk.exe est appelé par le noyau pour analyser tous les volumes pour vérifier si le bit sale de volume est défini. Si le bit sale est activé.

Plus d'informations sur autochk.exepeuvent être trouvées ici pour aider à expliquer ce qui se passe sur le site Microsoft Technet et Wikipedia , où Wikipedia déclare:

Une fois que tous les pilotes de démarrage et système ont été chargés, le noyau (thread système) démarre le sous-système Session Manager (smss.exe).

Avant l'ouverture des fichiers, Autochk est démarré par smss.exe. Autochk monte tous les disques et les vérifie un à la fois pour voir s'ils ont été démontés proprement. Si autochk détermine qu'un ou plusieurs volumes sont sales, il exécutera automatiquement chkdsk

Plus précisément, il apparaît si vous regardez dans le registre sous:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

Il y a une valeur BootExecutequi passe de autocheck autochk *quelque chose commeautocheck autochk /p \\??\C: autocheck autochk *

MDMoore313
la source
1
aha ... OK cool j'ai trouvé des détails supplémentaires que j'ajouterai à votre réponse ... merci monsieur!
TheCleaner
1
Pour référence: il semble que vous pouvez utiliser chkntfs /c %SystemDrive%pour planifier le volume de démarrage pour vérifier le redémarrage sans contourner directement le registre. (Bien sûr, vous devez avoir des droits d'administrateur pour le faire.)
cHao
@cHao - vous n'avez pas à vous soucier directement du registre. `chkdsk / f% SystemDrive% fait la même chose. Je ne suis peut-être pas en train de suivre votre commentaire.
TheCleaner
@TheCleaner: Avec chkntfs /c, cependant, vous n'obtenez pas le "Souhaitez-vous planifier ...?" rapide. Cela peut être une différence importante si vous souhaitez salifier le lecteur dans le cadre d'une tâche planifiée, par exemple.
cHao
2
@ MDMoore313: /cest l'option pour planifier la vérification. Sans cela, chkntfsvous dira simplement si un contrôle a été planifié.
cHao