MFTが壊れた

ここには壊れたMFTの修復方法は書いていない。今回は軽微だったので、すぐにファイルをバックアップして実質的に被害はなかった。
なお、MFTがフラグメントしない方法については「MFTの最適化」に書いておいた。

バックアップツールによるデフラグで殆どを綺麗にしてから、細かいフラグメントをXPにバンドルされているデフラグツールを使い、連続して何回かデフラグしてたらMFT Zoneが消えてしまった。暫く使っていたが、何気に chkdsk をかけてみた。すると、「CHKDSK はマスタ ファイル テーブル (MFT) ビットマップに割り当て済みとしてマークされている空き領域を検出しました。」というメッセージがでる。MFTが壊れている可能性があるので慌てて"/F"オプションをつけて修復を試みる。再起動後、イベントビューワーでログを見てみると

Checking file system on C:
The type of the file system is NTFS.
Volume label is XXXXXXX.

A disk check has been scheduled.
Windows will now check the disk.                         
Cleaning up minor inconsistencies on the drive.
Cleaning up 217 unused index entries from index $SII of file 0x9.
Cleaning up 217 unused index entries from index $SDH of file 0x9.
Cleaning up 217 unused security descriptors.

  78148160 KB total disk space.
  52394392 KB in 98620 files.
     35132 KB in 12031 indexes.
         0 KB in bad sectors.
    265088 KB in use by the system.
     65536 KB occupied by the log file.
  25453548 KB available on disk.

      4096 bytes in each allocation unit.
  19537040 total allocation units on disk.
   6363387 allocation units available on disk.

Windows has finished checking your disk.
Please wait while your computer restarts.

という恐ろしいことになっていた。217エントリもが不整合を起こしていた。マイクロソフトのページによると「これは、再使用を目的にキャッシュされたセキュリティ記述子を検出したもので、このログは安全に無視することができます」とあるが、217エントリもある。気分悪い。しかもまだ続きがあった。システムは取りあえず正常に動いているようなので一安心したが、それだけでは終わらなかった。なんと、chkdskをかけるとまた「CHKDSK はマスタ ファイル テーブル …」と同じメッセージ出る。"/F"オプションで修正、再立上げするが、何度やってもメッセージが出る。その度毎に(217もではないが)2〜3のエントリで不整合を起こしている。止まらない。どうも、動的に不整合を起こしているようだ。

今回はXPにバンドルされている標準のデフラグツールを使っているだけなのに。ひどい。そう言えば、以前も連続してデフラグをかけたらブートしなくなったことがあった(Dynabookにトラブル)。しかし、デフラグの画面を見ていると「圧縮」時のアルゴリズムがあまり賢くなさそうで、数回デフラグを実行しないと、ちゃんと圧縮してくれないのだが。振り返って考えると、どうもデフラグツールを連続して使うと余り良くない結果が多いようだ(単なる感)。デフラグを続けて実行する場合は、一旦、デフラグツールを終了して再度起動した方がよさそうだ。

と、いうことで、再度StandbyDiskでHDDコピーをして、ファイルシステムを綺麗な状態にした。幾つかファイルを失っている可能性は否定できないものの、今のところ開放しなければいけないディスクエリアを使用中とマークしているだけとのことなので、今の内に復旧する(やり直す)方が良いだろう。

なお、今回も途中からフラグメントが発生している。よく考えるとStandbyDiskは単にWindowsAPIを使っているだけだろうから、フラグメントが起きるのはStandbyDiskと言うよりはWindowsNTFSドライバに原因があるようだ。前回、StandbyCopyでコピーした直後:

今回、StandbyCopyでコピーした直後:

似たような部分がフラグメントを起こしている。全体から見ればそれ程ではないが、このフラグメントした部分をデフラグしておくかどうか。一応、デフラグツールを毎回"終了・起動"しなから数回デフラグしておいた。

予約された(未使用の)MFT Zoneは健在のままだ(左側の白い部分)。この状態で暫くつかってみよう。

原因は?

どうも連続してデフラグした後にトラブルが起きるので、デフラグツールが怪しい、と思ったが、デフラグはHDDにかなりの負担を掛けるので、温度上昇などによるHDDのWrite errorも考えられる。可能性としていはこちら方が濃厚だろう。前回のデフラグによるトラブルも7月9日と夏場に発生している。念のためHD Tuneをインストールして調べてみたが、現在はHDDの各パラメータにエラーは出ていない。次回デフラグする時にS.M.A.R.T.の情報を見ながらやってみよう。

ファイルシステムを何とかして欲しい

それにしても....
FATの改良版としてNTFSが作られた10年以上前から比べてCPUの速度も飛躍的に上がっているし、ディスクIOの速度も大幅に上がっている。パソコンのOSでも、そろそろUNIXのように物理的な配置を意識しないバランスのとれたファイルシステムにしてもらいものだ。最近のストレージサーバでは「チャンクレット(Chunklet)」という手法で並列性と均質なアクセスを実現しているそうだが、こういった概念をPC向けに実現してもらえないものだろうか。