In che modo CHKDSK / F sul volume bloccato viene "programmato" al riavvio?


14

Ho corso chkdsk /Fmolte volte nel corso degli anni ... e oggi ho dovuto eseguirlo su uno dei miei server 2008 R2 e ho ricevuto il messaggio normale:

Chkdsk non può essere eseguito perché il volume è utilizzato da un altro processo. Desideri pianificare la verifica di questo volume al prossimo riavvio del sistema? (S / N) y

Questo volume verrà verificato al successivo riavvio del sistema.

Ho esaminato il documento Technet qui: http://technet.microsoft.com/en-us/library/cc730714.aspx e la normale ricerca e ricerca su Google su Technet e sito: microsoft.com su google, ma posso trova quello che sto cercando ...

La domanda:

COME / dove Windows lo pianifica al riavvio? Non è in Utilità di pianificazione o RunOnce o simile, il che ha senso se deve essere eseguito prima che Windows blocchi il volume ... quindi dove Windows imposta esattamente questa "attività pianificata" in modo che il server lo sappia anche un settimana dopo durante il riavvio della finestra di manutenzione?

Risposte:


19

Ottima domanda la risposta è che il VolumeDirtybit è impostato sul volume, che (devo presumere) viene verificato durante l'avvio. Probabilmente simile al modo in cui viene controllato quando viene inserita un'unità flash e si ottiene il popup che dice Scansione o Continua senza scansione .

Una volta ho provato a trovare un modo per pianificare un chkdsk per un server automatizzato con manutenzione pressoché nulla, impostando il volumedirtybit tramite lo script PowerShell ( dirtybitset = $true), ma non avrebbe funzionato. Potrei rivisitare che come appare dal mio link c'è un ScheduleAutoChk che fa proprio questo e funziona in congiunzione con il dirtybit.

Ulteriori ricerche qui afferma:

Ogni volta che Windows si riavvia, Autochk.exe viene chiamato dal kernel per eseguire la scansione di tutti i volumi per verificare se è impostato il bit di sporco del volume. Se il bit sporco è impostato.

Maggiori informazioni su autochk.exepossono essere trovate qui per aiutare a spiegare cosa sta succedendo nel sito Microsoft Technet e Wikipedia , dove Wikipedia afferma:

Una volta caricati tutti i driver di avvio e di sistema, il kernel (thread di sistema) avvia il sottosistema Session Manager (smss.exe).

Prima di aprire qualsiasi file, Autochk viene avviato da smss.exe. Autochk monta tutte le unità e le controlla una alla volta per vedere se sono state smontate in modo pulito. Se autochk determina che uno o più volumi sono sporchi, eseguirà automaticamente chkdsk

In particolare appare se si guarda nel registro sotto:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

C'è un valore BootExecuteche viene cambiato autocheck autochk *in qualcosa del genereautocheck autochk /p \\??\C: autocheck autochk *


1
aha ... OK bello ho trovato ulteriori dettagli che aggiungerò alla tua risposta ... grazie signore!
TheCleaner,

1
Per riferimento: sembra che sia possibile utilizzare chkntfs /c %SystemDrive%per pianificare il volume di avvio per il controllo al riavvio senza spostarsi direttamente con il registro. (Certo, devi avere i diritti di amministratore per farlo.)
cHao,

@cHao - non devi confondere direttamente con il registro a prescindere. `chkdsk / f% SystemDrive% fa la stessa cosa. Forse non sto seguendo il tuo commento.
TheCleaner,

@TheCleaner: Con chkntfs /c, però, non ottieni il messaggio "Ti piacerebbe programmare ...?" richiesta. Questa può essere una differenza importante se, ad esempio, si desidera indirizzare l'unità come parte di un'attività pianificata.
cHao,

2
@ MDMoore313: /cè l'opzione per pianificare il controllo. Senza di essa, chkntfsti dirà semplicemente se è stato programmato un controllo.
cao
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.