稼働中のWindows 2000のシステムに障害が発生した。「ドライバの更新をしようとしたら、OSが再起動しない」「設定を変更したら、うまく動作しなくなった」など、障害の原因はいろいろ考えられる。連載の最終回である今回は、こういったシステム障害時の対処方法について解説していこう。
マイクロソフトの調査によると、ブルースクリーンの原因の大半が「適切でないデバイスドライバ」であるという。そこでWindows 2000では、不用意にドライバの置き換えが起こらないように工夫をしているのだ。
システムファイル保護機能は、Windows 2000のシステムファイルが不用意に変更されてしまうことを禁止する。「〜.sys」「〜.dll」「〜.ocx」「〜.ttf」「〜.fon」「〜.exe」といった拡張子がつくシステムファイルが上書きされたり、削除されてしまった場合には、自動的に元の状態に復元する。試しに、「\winnt」フォルダ(Windows 2000がインストールされているフォルダ)にある「notepad.exe」(メモ帳)を消してみると、数秒後には自動的に生成されることが分かる*1。
*1もしもこの操作を試すときは、本番環境ではなく当りさわりのないテスト用マシンを使ってほしい。また、「〜.bmp」や「〜.txt」はシステムファイル保護機能の対象外なので復元されない
システムファイル保護機能は、Windows上で動作するプログラムが、保護されたシステムファイルを置換したり移動したりするのを検出する。さらに、新しいファイルのデジタル署名を確認し、マイクロソフト社によって提供されている正しいバージョンのファイルであるかどうかを判別する機能を持つ。バージョンの正しくないファイルは、「%systemroot%\system32\dllcache」フォルダに格納されているバックアップファイルか、Windows 2000のCD-ROMの中から正しいバージョンのものに自動的に戻される。%systemroot%は通常は「c:\winnt」を指す。「c:\」はインストールするときに選んだドライブである。
保護されたファイルを入れ替えることができるのは、以下の正規の手順だけである。
上記のように、Windows 2000では耐障害性を高めるための工夫がなされているのだが、それでも障害が起こってしまった場合には、次の方法で障害回復を行うことになる。
障害を復旧する場合には、次の順で実行してみることが推奨される。
Windows 2000 拡張オプション メニュー オプションを選択してください: セーフモード セーフモードとネットワーク セーフモードとコマンドプロンプト ブートのログ作成を有効にする VGAモードを有効にする 前回正常起動時の構成 ディレクトリサービス復元モード(Windows 2000 DCのみ) デバッグモード 通常起動する ↓キーと↑キーを使って起動するオペレーティングシステムを選択し、 Enterキーを押してください。
Windows 2000では、Windows NT時代から引き続き採用されている「前回正常起動時の構成」での起動に加え、Windows 9xでおなじみの「セーフモード」も用意されている。セーフモードは、基本的なファイルとドライバを使う「セーフモード」と、ネットワークが使用可能な「セーフモードとネットワーク」、GUIを使わない「セーフモードとコマンドプロンプト」のいずれかが選択できる。
基本的なファイルとドライバのみを使って、GUIモードでWindows 2000の起動を試みる。基本的なファイルとドライバとは、マウス(シリアルポートを使用するタイプを除く)/キーボード/モニタ/大容量ディスクである。セーフモードは最小限の構成で起動するため、新しくインストールしたドライバが原因で起動できないときなど、問題となっているドライバを読み込まないため、正常に起動できる可能性が高い。
また、セーフモードでもService Packの適用やWindows 2000システムファイルの入れ替えはできる。ただし、セーフモードは高速性を犠牲にして最小限の構成で起動しているため、通常に比べ起動や動作が多少遅くなってしまう。
セーフモードの基本的な構成に加え、ネットワーク接続ができるようになる。「セーフモードとネットワークで起動できなければ、ネットワークドライバかネットワーク系のサービスでトラブルを起こしている可能性が高い。
用途としては、ネットワーク経由でファイルを退避させたいときや、正常なドライバをネットワーク経由で転送したいときなどに使う。
構成自体はセーフモードと同様だが、こちらはGUIではなく「コマンドプロンプト」を起動した状態で実行される。GUIの管理ツールではなく、直接コマンド入力するほうに慣れている管理者向けの仕様である。
セーフモードを起動した状態で「ファイル名を指定して実行」から「cmd」と入力するか、「スタート」→「プログラム」→「アクセサリ」→「コマンドプロンプト」を選択した場合と同様だ。
システムによって読み込まれた(または読み込みに失敗した)すべてのドライバとサービスをログファイル内に記録する。ログファイルは「ntbtlog.txt」として、「%systemroot%」に保存される。ブートログを読むことで、システム起動における問題点を分析する。
リフレッシュレートを高くするとちらつきが押さえられ、画面表示が見やすくなる。ところがリフレッシュレートを高くしすぎると、画面に何も表示されなくなってしまう。通常のテスト実行なら、15秒程度待てば元のリフレッシュレートに戻るのだが、テストを省略してOKを押してしまうと問題が発生する。また、設定時に間違ったビデオカードを選択した場合、画面に何も表示されなかったり、ちらついて何が表示されているのか判別できないことがある。こんなとき、上級管理者には“心眼”で操作したりする者もいるが、なかなかそうはいかない。シャットダウンのためには何のキーを何回押したらいいのかは覚えておくべきだが、再起動後はVGAモードを有効にしておけばいいだろう。
通常のビデオカードはVGAモードを持っている。Windows 2000は800×600ドット以上の解像度がないと操作はつらいが、画面が見えないよりははるかにましだ。ビデオ周りのトラブルのほとんどは、VGAモードかセーフモードの組み合わせで修復が可能だ。
ドライバの入れ替えはしていないが、間違った機器設定をしたと思われる場合は、再起動時に「前回正常起動時の構成」を選ぶ。「前回正常起動時の構成」では、レジストリの内容を最後にログオンしたときの状態に戻す。Windows 2000では、ログオンしたときに現在の構成情報をレジストリに記録する。「前回正常起動時」とは、このときの情報を元に前回ログオンした状態で起動することである。つまり、システムの設定変更後に一度もログオンしていない状態であれば、システムが正常に戻るとは限らない。
構成を誤って再起動した場合は、ログオンせずにすぐにシャットダウンし「前回正常起動時の構成」を起動すれば、前回ログオンしたときのレジストリに戻すことができる。
ただし、「前回正常起動時の構成」では、破損または消失したドライバやファイルがトラブルの原因の場合には、問題を解決できない。
ハードウェアプロファイル/構成の回復メニュー このメニューを使って、Windows 2000の起動時に使われるハードウェアプロファイルを選択できます。 システムが正常に起動しない場合は、以前のシステム構成に切り替えることができます。これにより、起動の問題が解決する可能性があります。 重要:前回正常起動時より以降に行われたシステム構成の変更は廃棄されます。 Profile 1 Profile 2 ↓キーと↑キーを使って項目を選択し、Enterキーを押してください。 前回正常起動時の構成に切り替えるには、'L' キーを押してください。 このメニューを終了してコンピュータを再起動するには、F3キーを押してください。
設定にもよるのだが、ACPI対応のマシンであれば、電源ボタンを押せば「シャットダウン」になる。電源ボタンによるシャットダウンは、正常な処理の一部が省略されているので、止むを得ないときに限るべきだろう。
ちなみに「緊急シャットダウン」は、ログオンしている状態の場合は「CTRL」+「SHIFT」+「DEL」を押してセキュリティダイアログボックスを表示させた後、「CTRL」を押しながらマウスカーソルでシャットダウンをクリックする。この場合の「緊急シャットダウン」は、最後の手段として使用する趣旨のメッセージが表示され、「はい」を押すことで再起動がかかる。
いずれの場合も、マシンがハッキングを受けている最中とか、プロセスが特定のデバイスをつかんだまま離さなくなったとか、まさに緊急事態の対処として考えてほしい。
Windows 2000のドメインコントローラだけが対象である。「ディレクトリサービス復元モード」は、ドメインコントローラの「SYSVOL」フォルダとActive Directoryを復元する。Active Directoryには、連載の第1回目で説明したように各種のオブジェクトが保存されている。また、「SYSVOL」フォルダの中にはドメイン内のすべてのドメインコントローラで複製される情報が保存されている。
システム起動の情報をシリアルケーブル経由で別のコンピュータに送信しながら、Windows 2000を起動する。遠隔地でトラブル情報を確認したいときなどに使用する、特殊なオプションである。
セーフモードでシステムの修復ができなかった場合は、回復コンソールを使用してみる。
起動時にブルースクリーンになってしまった場合、HDDをNTFSで初期化してしまうと、DOSを起動した状態での修正ができない。そこで、Windows NT時代からの管理者の中には、システムパーティションやブートパーティションはDOSで初期化するほうがよいと思っている人もいる。これは、DOSのシステムを使って起動するとNTFSのパーティションにアクセスすることができないため、トラブル発生時にトラブルシューティングが容易にできなかったためだ。「回復コンソール」を使用すれば、NTFSで初期化したHDDにもアクセスができるため、デュアルブート以外の環境でFAT/FAT32を使う積極的な理由はなくなった。
回復コンソールでは、コマンドを使って特定の問題を修復するためのコマンドライン・インターフェイスを提供する。
コマンド | 機能 |
---|---|
Attrib | ファイルやフォルダの属性を変更する |
Chkdsk | ディスク検査 |
Delete(Del) | ファイル消去 |
Dir | ファイルの一覧表 |
Disable | デバイスドライバを無効にする |
Enable | デバイスドライバを有効にする |
Exit | 回復コンソールを終了しPCを再起動する |
Expand | CD-ROMの圧縮ファイルを展開 |
Fixmbr | マスターブートレコードの修復 |
Format | ディスクのフォーマット |
Help | ヘルプの表示 |
Logon | どのWindows 2000を修復するかを選択(Administratorのパスワードが必要) |
Type | テキストファイルの表示 |
表1 回復コンソールで使用可能な(主な)コマンド |
回復コンソールでは、サービスの有効/無効、LinuxなどのほかのOSをインストールして変更されたマスター・ブート・レコードを元に戻すことや、システムファイルのFD/HDDからのコピーができる。
Windows NT系OSには、起動用のシステムを格納している「システムパーティション」とOSそのものが格納されている「ブートパーティション」がある。これらのパーティションも含め、サーバ系のファイルシステムはシステムファイル復旧機能とアクセス制御ができるNTFSにしたほうが絶対によい。
回復コンソールの起動方法は、Windows 2000のCDをセットしてブートする方法と、起動オプションとして登録する方法とがある。起動オプションに登録するには、Windows 2000のCDをセットして、コマンドプロンプトから次のように入力すればいい。
これで、次回起動時にOS選択画面で回復コンソールが選択できるようになる。
Windows NT/2000では、起動に必要なのが「システムパーティション」で、OSを読み込むのが「ブートパーティション」である。よく、逆ではないかと問い合わせがあるのだが、次のように考えるよとよい。
通常、システムパーティションはCドライブ、ブートパーティションはwinntフォルダがあるパーティションである。ブートパーティションの位置はboot.iniファイルに記述されている。boot.iniは隠し属性になっているので、次の手順で見ることができる。Cドライブを開き、「ツール」→「フォルダオプション」→「表示」タブを選択する。そこで、「保護されたオペレーティングシステムを表示しない(推奨)」のチェックを外す。
[boot loader] timeout=10 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect C:\CMDCONS\BOOTSECT.DAT="Microsoft Windows 2000 回復コンソール" /cmdcons
セーフモード、回復コンソールでの起動に失敗した場合は、システム修復ディスクによる復旧を試みることになる。
システムの修復に絶対になくてはならないのが「システム修復ディスク」である。ブルースクリーンになりシステムが起動できないときなど、システム修復ディスクがあると修復できる可能性が高くなる。
マシンの構成情報を変更したときに、こまめにシステム修復情報を保存しておけば、いざというときの修復時間が短くなる。
Windows NT 4.0では、コマンドプロンプトから「Rdisk」を実行することで作成できた。システム修復ディスクには、レジストリ情報の一部とSAMに登録されているアカウント情報の一部が保存される。
ユーザーの追加や新たなアプリケーションをインストールしたなど、システムの構成を変更したときは、「Rdisk /s」と「/s」オプションを追加しておく。ただし、「/s」オプションを使うとSAMや構成情報の大きさによっては、FDの容量では収まりきらなくなる。また、「/s」オプションを使用したときでも、すべてのシステム構成情報を保存できるわけではないので、システムのバックアップは大切である。通常、最悪のトラブルは、修復ディスクの更新とバックアップを怠ったときを狙ってやってくるものなのだ。
Windows 2000では、システム修復ディスクの作成はバックアップメニューからおこなうようになった。Windows 2000のシステム修復ディスクはWindows NTのときと異なり、レジストリファイルのバックアップは含まない。レジストリファイルは「%systemroot%\repair\RegBack」フォルダに保存されている。
Windows 2000のシステム修復はユーザーの操作を必要としない「高速修復」オプションか、慣れた管理者が行う「手動修復」オプションのいずれかが使用できる。高速修復オプションは、レジストリ/システムファイル/ブート・ボリュームのパーティション/ブート・セクタ/スタートアップ環境 (デュアルブート・システムまたはマルチブート・システムを使っている場合)を修復する。「手動修復」オプションでは、高速修復でのオプションを選択して修復が行える。
システム修復ディスクによる修復方法の詳細については、Windows 2000 Insiderフォーラムの「修復セットアップ完全マスター」でも解説されている。さらに詳しい情報を入手したい方は、こちらの記事を参照してみるといいだろう。
起動途中でよくわからないエラーが発生しても、リブートしてしまうと治ることも多いのだが、それは根本的な解決にはならない。いずれにせよ、システムの復旧には深い知識が必要である。トラブルの分析は重要だが、緊急のシステム復元においてバックアップに勝るものはない。
Windows 2000ではブルースクリーンにならないための工夫をしている。「システムファイル保護」機能は、システムファイルを元の状態に復元する。もし、障害が起こってしまった場合は、次の回復手段がある。
何よりも、つね日ごろのバックアップが重要だ。システムがクラッシュした際に思い知らされることになる。
Copyright © ITmedia, Inc. All Rights Reserved.