連載
» 2003年10月25日 05時00分 UPDATE

Tech TIPS:Windowsでシステム起動時の自動chkdskをスキップする

Windows OSでは、必要ならば、システムの起動時に自動的なchkdskを行うようになっている。これをスキップするには、chkntfsコマンドを利用する。

[打越浩幸,デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象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



「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2016 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

素材感が溢れるツートンカラーの「VAIO C15」、プレゼント!

この記事に関連するホワイトペーパー

編集部からのお知らせ

@IT編集部では、編集記者を募集しています。ご興味のある方は奮ってご応募ください。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。