dirty flag
ちょっと込み入ったことをやっていたら、久しぶりの blue screen …… Windows NT 系の OS は kernel が死んでしまうと青一色の画面が現れるのだが、それをこう言う……に出くわした。勿論 BIOS レベルまで落ちてしまい、再起動がかかるのだが…… boot 時に chkdsk を促すメッセージが出る。やばいなぁ。どうもファイルシステムに支障を来したらしい。
この boot 時に chkdsk を促す、というのは、autochk というユーティリティがディスクチェックを行った結果である。で、このようなメッセージは、基本的には chkdsk をかけてやらない限りは際限なく出続ける。これは、ファイルシステムに「このシステムはイカれてまっせ」ということを示す部位があって、その部位に「イカれた」チェックが入ったためである。これを dirty flag というのだが、この flag が立つと厄介なことになる。
Microsoft Windows で用いられている NTFS をチェックするためには、Windows に付属している chkdsk を使うしかない。これが FAT の場合だと GNU のツールで直せるのだけど、NTFS の場合は、現時点では ntfsck というツールが開発中の状態で、まだ chkdsk 以外に選択肢がない。この chkdsk は通常ディスクを3つの段階に分けてチェック・修復するのだけど、今回のような dirty flag が立った場合、Windows のシステムが入ったパーティションの中身を改変することになるので、一度再起動し、最小限のシステムを RAM 上に展開したところでそのパーティションをマウントし直し、chkdsk を行った後、改めて再起動してパーティションをマウントしなおしてやらなければならない。
ところが、僕の使っているシステムでは、この再起動後の chkdsk がうまくかからない。どうしても cancelled というメッセージが出て、chkdsk が停止して立ち上がってしまうのだ。こういうときは、他のメディアから別のシステムを立ち上げて chkdsk をかける必要がある……で、久々に Windows Vista Home Basic 64 bit Edition の DVD を出してきて、そこから立ち上げてやる……と、これはうまくいった。さて。chkdsk をかけてやると……一見、あまり問題もなくチェックが終了したように見えたが、これではまずいんだな…… dirty flag が立ったときには、ディスクチェックを厳密に行うため、chkdsk が5段階のチェックを行う必要があるのだが、今回は3段階のチェックしかかからなかった。ということは……あー、これを明示的に入力するのは厭なんだけどなぁ、と思いつつ、
この5段階チェックは、運が悪いと丸一日位かかってしまう……恐る恐る見守っていると……はぁ、これならそう時間はかからなさそうだ。放置して他のことをやっていると……二時間かからずにチェックは終了した。DVD を抜いて再起動して、ディスクの掃除をして……復旧完了。NTFS は Linux で用いられているファイルシステムなどと比較しても、そう悪い出来ではない、といわれているのだけど、このディスクチェックで猛烈に時間を食ってしまうのは、なんとかならないのだろうか。本当に、これがあるから Windows 上で仕事をするのは厭なんだよなぁ……