Windows OSでは、必要ならば、システムの起動時に自動的なchkdskを行うようになっている。これをスキップするには、chkntfsコマンドを利用する。
対象OS:Windows 2000 Professional / Windows XP Professional / Windows XP Home Edition / Windows 2000 Server / Windows 2000 Advanced Server / Windows Server 2003
Windows NT以降で採用されているNTFSファイルシステムは、突然の電源断などによるシステム障害においても、ファイルシステムが破綻しにくくなるように設計されている。そのため、DOSやWindows 9Xのころに比べると、ファイルシステムに対してchkdskコマンドを実行して、ファイルシステムの一貫性を調べたり、破損した部分を修復したりする必要性は少なくなっている。だがそれでも、NTFSといえども完全に耐障害性が確保されているわけでないので(あくまでも、FATなどよりははるかに障害に強い、という程度である)、時々はchkdskなどを適用して、ファイルシステムが壊れていないかなどを調査する必要がある。
といっても、システム起動時や一定期間ごとに毎回chkdskを実行するとなると、非常に時間がかかるし、システムに対する負荷も問題になるだろう。そこでWindows NT以降のOSでは、「必要のある場合にのみ、システム起動時にchkdskを実行する」というふうになっている。具体的にいうと、「ファイルシステムのダーティビット」がセットされていると、「システム起動時にそのボリュームに対してchkdskを実行する」のである。「ダーティビット」とは、ボリュームごとに備えられている特別なステータスビットであり、OSの起動時(正確には、ボリュームのマウント時)にセットされ、OSの終了時にクリアされる。もしシステムが突然の障害や電源断、リセットなどにより、稼働途中で強制的に終了、再起動したりすると、ダーティビットはセットされたままになる。
この状態でシステムを起動すると、ダーティビットがセットされたままなので、システムに異常が発生したことが分かる(正常終了していれば必ずクリアされているはずだから)。するとOSはchkdskを実行し、ファイルシステムの整合性、一貫性を検査する。
だがこの自動的なファイルシステムの検査は、場合によってはスキップさせたいことがある。エラーが発生しているのでディスクを取り換えるつもりだとか(壊れかけたディスクを無理に修復すると、ダメージが大きくなる可能性がある)、巨大なディスクなのでchkdskにかかる時間をスキップしたい、バグなどにより毎回chkdskが起動されるのでスキップしたい、などである。
自動的なチェックをスキップするには、chkntfs.exeというコマンドが利用できる。
chkntfs.exeコマンドは、コマンドプロンプト上で利用するプログラムである。使い方を表示させるには、「chkntfs /?」を実行すればよい。
C:\>chkntfs /?
CHKNTFS ボリューム [...]
CHKNTFS /D
CHKNTFS /T[:時間]
CHKNTFS /X ボリューム [...]
CHKNTFS /C ボリューム [...]
ボリューム ドライブ文字 (文字の後にはコロンを付ける)、マウント
ポイント、ボリューム名を指定します。
/D コンピュータを既定の動作に戻します。
起動時にすべてのドライブを検査し、エラーがあったドライブに
対して CHKDSK を実行します。
/T:時間 指定された時間を秒に変換して、AUTOCHK を開始するカウント
ダウン時間へ設定します。
時間が指定されていなければ、現在の設定を表示します。
/X ドライブを既定の起動時の検査から除外します。
除外するドライブは、このコマンドを実行するたびに指定する
必要があります。
/C ブート時にドライブを検査するようにスケジュールします。
ドライブにエラーがある場合、chkdsk が起動されます。
スイッチが指定されていない場合、指定されたドライブにエラーがあるかどうか、
次回の再起動で確認を行うようスケジュールされているかどうかを表示します。
指定されたドライブがダーティな状態かどうか(ダーティビットがセットされているかどうか)をチェックするには、単にドライブ名だけを指定する。
C:\>chkntfs c: d:
ファイル システムの種類は NTFS です。
C: が正しくありません。/C オプションで次回起動時に
このドライブに対して CHKDSK を起動するようにスケジュールできます。
ファイル システムの種類は FAT32 です。
D: は正常です。
Windows XP/Windows Server 2003ならば、これは以下のコマンド(fsutil dirty query)に相当する。
C:\>fsutil dirty query c:
ボリューム - c: は Dirty です
C:\>fsutil dirty query d:
ボリューム - d: は Dirty ではありません
指定されたドライブの自動的なchkdskをスキップするには、/Xオプションにドライブ名を指定する。例えばC:とD:のチェックをスキップするには次のように入力する。
chkntfs /x c: d:
これにより、C:とD:が自動検査の対象から除外される。なお複数のドライブを指定する場合は、1回のコマンドで入力しなければならない。複数回指定すると、最後のものだけが有効になる(例:「chkntfs /x c:」と「chkntfs /x d:」なら、D:だけが除外の対象となる)。
このコマンドを使うにあたって、1つ大事な注意点がある。このコマンドは、自動的なchkdsk作業をスキップさせるだけであり、ダーティビットをクリアするわけでもないし、ファイルシステムの整合性をチェック、修復してくれるわけでもない。必要ならば次の有効化のコマンドを使って自動chkdskを実行させなければならない。
指定されたドライブで自動的なchkdskを行わせるには(デフォルトの状態)、/Cオプションにドライブ名を指定する。例えばC:とD:のチェックを行わせるには次のように入力する。
chkntfs /c c: d:
ただしこのコマンドは、「強制的にchkdskを実行させる」ためのものではない。起動時に自動的なchkdskを行うかどうかをダーティビットを見て判断させるだけであり、ボリュームがダーティでなければ自動chkdskは行われない。強制的にchkdskしたければ、「chkdsk /f c:」などとして、/Fオプション付きでchkdskを実行する必要がある。。
/Dオプションを指定することにより、全ての/Xや/Cの指定を解除して、元の状態(全てのドライブに対して自動的なchkdskを行う状態)に戻す。
chkntfs /d
■関連リンク
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.