システム修復ディスク役立たず
0.改訂履歴
- 1998.04.30 初版
- 2000.09.17 会社名の削除
1.はじめに
このドキュメントでは,1998年4月28日にNT15で起こった障害に関する報告を行なう.
2.障害発生と状態の把握
16時30頃,XXセンターに設置してあるNT15を使っているユーザから連絡があった.
「Windows95がハングアップして,再起動したんですが,Rドライブに繋がらないんです」
Rドライブが何だか不明(NT15の共有資源にをドライブRにマウントしている)だが,NTの共有資源に接続する事が出来ない事に違いない.
この場合,2つの事が考えられる.
- Windows95がおかしくなった
- WindowsNTがおかしくなった
まず,自分のマシンからイベントビューアで接続を試みたが応答がないので,サーバマネージャで接続を試みたが同じ. 今回はNTサーバが落ちているようである.
現地にいるユーザに,NTマシンのコンソールはどうなっているか尋ねると,NTが起動中にエラーとなっているという. 24時間稼動マシンで,メンテ報告を受けていないので,再起動中というのはおかしい.
NTの起動中のエラーだが,良く聞くと「C:\winnt351\system32\config\system.」が壊れているとメッセージが出ているようだ.
%systemroot%system32\configには,NTが稼動するためのデータベースが格納されているディレクトリである. この中のシステム設定を行っているファイルが壊れたらしい. その時点で,“NTが再起動中にハングアップしている”という状態の意味がわかった.
OSに必須のファイルが壊れたことによって,OSが稼動できなくなり,コンパネのシステムで「自動再起動」がチェック(設定)されていたことで,NTが自動的に再起動を行ったのであった. しかし,システムファイルが壊れているので,再起動が失敗している状態である.
3.レジストリの復旧を試みる
configの下のファイルは,簡単に言えばデータベース,レジストリファイルなので,これを復旧すれば再起動するはずである.
この日,たまたまゴールデンウィーク対応ということで,午前中にレジストリのバックアップ(システム修復ディスクの作成)を行っていたので,system32\repairの中身が更新されている. よって,「前回正常起動時〜」で再起動してみることにした.
しかし,これを行っても正常に起動しなかった. repairディレクトリ内が壊れていたのだろうか? よって,システム修復ディスクを持って,工場内に出かけた.
まず,repairディレクトリ内のデータが壊れているかとおもい,DOSで起動してシステム修復ディスクからその内容を複写した.(システムドライブはFATでフォーマットしてあるためにこれが可能になる)
そして,再起動(ハードブート)を行い,「前回正常起動時〜」を行うが,これも失敗した.
よって,修復セットアップを行うことにした.
4.修復セットアップは,使えない場合が多い?
修復セットアップとは,次のような作業を行うことである.
- 用いるものは,次の3つである.
- システム修復ディスク
- NTのセットアップディスク(今回はNT3.51なので4枚)
- NTのセットアップCD-ROM(FD版ならそれでもよい)
- まず,普通のNTサーバの新規セットアップのように,セットアップディスクを順番に入れ換える.
- 途中で,インストール形態を選ぶ画面が表示されるので,「修復セットアップ」を選択する.
- システム修復ディスクからレジストリの復旧を行い,NTの状態を復元する.
これが主な流れである.
この,“修復セットアップ”を選択した場合,そのプロセスでは次のような内部作業を行う.
- レジストリの復元
- システム構成情報や,アカウントデータベースなどのレジストリ復旧
- OSファイルの整合性
- NTインストール時の状態
レジストリは画面上にいくつか表示され,復旧させるものを選択することが出来るが,この場合すべてを選択すればよい. しかし,その次の“OSファイルの整合性”をチェックする部分で,数多くのエラーがでた. それは次のようなものである.
\winnt351\system32\ntdll.dllはセットアップされたものと異なります,修復しますか? |
この時,重要なのは,このメッセージが示す真意である.
「ntdll.dllというファイルが,セットアップディスク(CD-ROM)の中のファイルの情報と一致していない」ということである. 書き込みされるファイルでありえないDLLファイルが一致していない(変更されている)ということは,どういうことだろうか.
まず,NT3.51は,Service Pack3というパッチが適用された状態で稼動しているということであり,この該当のサーバはNT3.51 ServicePack5が適用されている.
ちなみに,数多くのNT3.51用サーバアプリケーションは,多くのバグが修正されたServicePack5を適用していることを前提としているものがおおい. そして,NT3.51のServicePack5が適用されたNTサーバのCD-ROMは存在していない.
「異なります」と言われたファイルを順番に見ていったが,全て静的なファイル(書き込みされない,DLLやEXE)であったため,それらを全て修復せず,レジストリの復旧だけを行い,再起動した.
すると,なぜかService Pack4としてOSが起動した.
5.おかしい
ServicePack5としてセットアップしていたマシンが,ServicePack4で起動したというのはおかしいが,とりあえず使えるようになったかにみえた...
- FPNWサービスが起動に失敗した.
- プログラムマネージャに登録してあるアイコンで,違うものが起動する.
- 最初に連絡があった,そのハングアップしたWindows95マシンから,共有資源(ファイル,プリンタ)の利用は出来た.
起動した直後に,「1つ以上のサービスが起動に失敗した」のようなダイアログが出たので,イベントログを参照した. FPNWサービスが起動無くなっているようだった. たしか? FPNWはServicePack5が必要だったように思うので,これは仕方ないかもしれない?
NWLinkやIPX/SPX互換トランスポートの,FPNWが使っているプロトコルスタックの設定を確かめるために,構成を開こうとするとエラーがでるので,一旦削除して再インストールしようとすると,削除が出来ない. システムが壊れている.
FTPにて,ServicePack5を適用してみたりするが,それでも同じ. まず,ここでおかしいのは次の通り.
- TCP/IPは稼動している.(FTPが成功したため)
- NWLinkは壊れている
一緒に居た管理者が,マシンにログインして再起動しようとすると,“プログラムマネージャ”の[シャットダウン]メニューが選択できるのに,「権限がないのでシャットダウンできない」となった. 新内のアカウントでログインすると,正常にシャットダウン&再起動が出来た.
まず,ここでおかしいのは,次の通りである.
- administrators権限保持ユーザアカウントで,シャットダウンが出来ない.
- “権限が無い”場合,メニューさえも選べないのに,選べてしまう.
ユーザ権限がおかしいのか? と思い,“ドメインユーザマネージャ”を起動しようとすると,“コマンドプロンプト”が起動する. それも16bitモードで. “プログラムマネージャ”のアイコンの登録情報をみると,正しい. 同じく“サーバマネージャ”を起動しようとすると,変なダイアログが表示されるが,それを無視すれば,とりあえず起動する状態である.
サーバ一覧が取り出せないので,lmhostsを参照しようと,“メモ帳”でlmhostsを開くと,それはバイナリファイルになっていた.(lmhostsはテキストファイル)
結局,このサーバに何が発生したのかと,イベントビューアにてイベントログを参照すると,約1年前のイベントログの直後に今回の再起動時のログが追加されていた. ちなみに,1997年12月25日に,一旦ログを全て消している.
6.問題と対処方法
まず,これらの現象から,何らかの問題により,ファイルシステムが壊れたことがわかる.
- config\systemファイルが壊れ,マシンが再起動した.
- ServicePack4に戻った
- ServicePack5を示すファイルが復旧できなかった?
- プログラムマネージャに登録されたアイコンで,違うものを起動することがある.
- lmhostsがバイナリファイルになっていた.
- イベントログの内容に,消したはずのものが追加されていた
ファイルシステムが壊れていることが明確になったので,chkdskを行ったが異常はなかった.
この時点では,このサーバの目的,ファイル&プリントサーバとしては機能しているので,かろうじて稼動はしているが,OSの再インストールが必要となる.
この場合,ファイルシステムが壊れており,どのような影響があるかわからないので,該当ドライブのフォーマットから行う必要がある.
7.この障害の対策
今回のサーバは,ファイル&プリントサーバとして稼動していたため,なんらかの業務アプリケーションが悪さをしたわけではない. いうなれば,NTのOS自身が悪さをしたことになる. よって,予防対策は無い.
このようなファイルシステムの破壊の場合の復旧方法は,2つある.
- 1から再インストール
- バックアップからのリストア
OSを導入しただけの状態で使っていたのであれば,1からインストールも時間が許せば可能かもしれないが,SEとしてはやはり,最短時間で行える“バックアップからのリストア”を実現できるようにしておかなければならない.
これはドキュメント「システムドライブのバックアップ」が参考になる.