Wie wird CHKDSK / F auf gesperrtem Volume beim Neustart "geplant"?

14

Ich habe chkdsk /Fim Laufe der Jahre viele Male ausgeführt ... und heute musste ich es auf einem meiner 2008 R2-Server ausführen und ich erhalte die normale Meldung:

Chkdsk kann nicht ausgeführt werden, da das Volume von einem anderen Prozess verwendet wird. Möchten Sie planen, dass dieses Volume beim nächsten Neustart des Systems überprüft wird? (J / N) j

Diese Lautstärke wird beim nächsten Neustart des Systems überprüft.

Ich habe mir das Technet-Dokument hier angesehen: http://technet.microsoft.com/en-us/library/cc730714.aspx sowie die normale Google-Suche und die Suche auf Technet und der Website: microsoft.com auf Google, kann es aber finde nicht was ich suche ...

Die Frage:

WIE / Wo plant Windows dies beim Neustart? Es ist nicht in Task Scheduler oder RunOnce oder ähnlichem enthalten, was sinnvoll ist, wenn es ausgeführt werden muss, bevor Windows das Volume sperrt. Wo genau stellt Windows diese "geplante Aufgabe" ein, damit der Server davon erfährt? Woche später während eines Wartungsfensters Neustart?

Der Reiniger
quelle

Antworten:

19

Gute Frage. Die Antwort ist, dass das VolumeDirtyBit auf dem Volume gesetzt ist, was (ich muss davon ausgehen) beim Booten überprüft wird. Wahrscheinlich ähnlich wie bei der Überprüfung, wenn ein Flash-Laufwerk eingelegt ist und ein Popup mit der Aufschrift Scannen oder Ohne Scannen fortfahren angezeigt wird .

Ich habe einmal versucht, einen Weg zu finden, um eine chkdsk für einen automatisierten Server zu planen, der nahezu wartungsfrei war, indem volumedirtyich das Bit über ein Powershell-Skript ( dirtybitset = $true) gesetzt habe, aber es würde nicht funktionieren. Wie aus meinem Link hervorgeht, gibt es einen ScheduleAutoChk, der genau das tut und in Verbindung mit dem Dirtybit arbeitet.

Weitere Forschung hier heißt es:

Bei jedem Neustart von Windows wird Autochk.exe vom Kernel aufgerufen, um alle Volumes zu scannen und zu überprüfen, ob das Volume-Dirty-Bit gesetzt ist. Wenn das Dirty-Bit gesetzt ist.

Mehr Informationen zu autochk.exefinden Sie hier , um Hilfe zu finden erklären , was los ist in Microsoft Technet - Website und Wikipedia , wo Wikipedia heißt es :

Nachdem alle Boot- und Systemtreiber geladen wurden, startet der Kernel (System-Thread) das Session Manager-Subsystem (smss.exe).

Bevor Dateien geöffnet werden, wird Autochk von smss.exe gestartet. Autochk aktiviert alle Laufwerke und überprüft sie einzeln, um festzustellen, ob sie ordnungsgemäß deaktiviert wurden. Wenn autochk feststellt, dass ein oder mehrere Volumes verschmutzt sind, wird chkdsk automatisch ausgeführt

Insbesondere erscheint es, wenn Sie in der Registrierung unter suchen:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

Es gibt einen Wert, der BootExecutevon autocheck autochk *in etwas geändert wirdautocheck autochk /p \\??\C: autocheck autochk *

MDMoore313
quelle
1
aha ... OK cool, ich habe zusätzliche Details gefunden, die ich Ihrer Antwort hinzufügen werde ... danke, Sir!
TheCleaner
1
Als Referenz: Es scheint, dass Sie das Startvolume chkntfs /c %SystemDrive%so planen können, dass es beim Neustart überprüft wird, ohne direkt mit der Registrierung herumzuspielen. (Natürlich müssen Sie Administratorrechte haben, um dies zu tun.)
cHao
@cHao - Sie müssen sich nicht direkt mit der Registrierung herumschlagen, unabhängig davon. `chkdsk / f% SystemDrive% macht dasselbe. Vielleicht folge ich Ihrem Kommentar nicht.
TheCleaner
@TheCleaner: Mit chkntfs /cbekommen Sie allerdings nicht die "Möchten Sie einen Zeitplan erstellen ...?" Prompt. Dies kann ein wichtiger Unterschied sein, wenn Sie das Laufwerk beispielsweise im Rahmen einer geplanten Aufgabe verschmutzen möchten.
CHAO
2
@ MDMoore313: Mit /cdieser Option können Sie die Überprüfung planen. Wenn nicht, chkntfswerden Sie nur darüber informiert, ob eine Überprüfung geplant wurde.
CHAO