web-dev-qa-db-ja.com

ロックされたボリュームのCHKDSK / Fは、再起動時にどのように「スケジュール」されますか?

私は何年にもわたってchkdsk /Fを何度も実行しています...そして今日、2008 R2サーバーの1つで実行する必要があり、通常のメッセージが表示されます。

ボリュームが別のプロセスで使用されているため、Chkdskを実行できません。次回システムを再起動したときに、このボリュームをチェックするようにスケジュールしますか? (はい/いいえ)y

このボリュームは、次にシステムが再起動したときにチェックされます。

Technetのドキュメントをここで見ました: http://technet.Microsoft.com/en-us/library/cc730714.aspx だけでなく、通常のgoogle検索とTechnetとサイトでの検索:Microsoft google上の.comですが、探しているものが見つかりません...

質問:

再起動時にWindowsはこれをどのようにスケジュールしますか?タスクスケジューラやRunOnceなどにはありません。これは、Windowsがボリュームをロックする前に実行する必要がある場合に意味があります...そのため、Windowsがこの「スケジュールされたタスク」を実行するように設定して、サーバーがそれを認識できるようにします。 1週間後のメンテナンス期間中に再起動しますか?

14
TheCleaner

すばらしい質問です。答えは、ボリュームにVolumeDirtyビットが設定されていることです。これは(想定しなければなりません)ブート時にチェックされます。おそらく、フラッシュドライブが挿入されたときにチェックされる方法と似ています スキャンするかスキャンせずに続行するかを示すポップアップが表示されます

Powershellスクリプト(dirtybitset = $true)を介してvolumedirtyビットを設定することにより、メンテナンスがほぼゼロの自動サーバーにchkdskをスケジュールする方法を考え出そうとしましたが、機能しませんでした。私のリンクから表示されるので、それを実行し、dirtybitと連携して動作するScheduleAutoChkがあることを再確認します。

さらに ここで調査 状態:

Windowsが再起動するたびに、Autochk.exeがカーネルによって呼び出され、すべてのボリュームをスキャンして、ボリュームのダーティビットが設定されているかどうかを確認します。ダーティビットが設定されている場合。

autochk.exeの詳細については、ここ Microsoft Technetサイト および Wikipedia で何が行われているのかを説明するのに役立ちます。Wikipediaには次のように記載されています。

すべてのブートドライバーとシステムドライバーが読み込まれると、カーネル(システムスレッド)がセッションマネージャーサブシステム(smss.exe)を起動します。

ファイルが開かれる前に、Autochkはsmss.exeによって起動されます。 Autochkはすべてのドライブをマウントし、一度に1つずつチェックして、ドライブが完全にマウント解除されたかどうかを確認します。 autochkは、1つ以上のボリュームがダーティであると判断した場合、自動的にchkdskを実行します

具体的には、以下のレジストリを確認すると表示されます。

HKLM\System\CurrentControlSet\Control\Session Manager

BootExecuteの値はautocheck autochk *からautocheck autochk /p \\??\C: autocheck autochk *のような値に変更されます

19
MDMoore313