NTBACKUP を用いてシステムを別 PC へ移動してみる
SERVER
NTBACKUP によるシステム復元
Windows 2000 Server には NTBACKUP.EXE というバックアップツールが備わっています。
このツールを使うことで、レジストリなどのシステムの状態や、ファイルをアクセス権限情報 (ACL) を含めてバックアップすることが出来ます。また、スケジューリングも行えるので、定期的にバックアップを取ることも出来て便利です。
今回は、PC を VMware Workstation 4.0 から インストールし直すにあたって、NTBACKUP を用いてとったバックアップから復元するという形をとってみることにします。ハードウェア構成が若干変わってきますので、そのあたりも影響するかどうかがひとつの焦点となる予定です。
システム状態の復元実験
復元元の環境をバックアップする
現在 VMware Workstation 4.0 にて稼動中の Windows 2000 Server から NTBACKUP.EXE を起動して、バックアップを行いました。
バックアップでは、ウィザードを用いてコンピュータ上の全てのファイルを保存することにしました。これによってシステム状態の他にも、ローカルハードディスクの内容が全てバックアップされるので、復元作業がとても簡単になるはずです。
ただ、ハードウェア構成が変わるところが少し心配なところでもありますけど、その実験もかねて、今回は完全なバックアップを用いての移行をしてみることにします。
なお、今回は復元元と先とではハードウェア環境が少し異なりますので、そのあたりを少しだけ挙げておきます。
CD-ROM ドライブ NECVMwar VMware IDE CDR10 IDE コントローラ Intel 82371 AB/EB PCI Bus Master IDE Controller SCSI コントローラ BusLogic MultiMaster PCI SCSI Host Adapter コンピュータ 標準 PC ディスプレイアダプタ VMware SVGA II ネットワークアダプタ AMD PCNET Family PCI Ethernet Adapter
復元先の環境を用意する
復元をしてみるにあたって、Microsoft Virtual Server 2005 へ新規に Windows 2000 Server をインストールしてみました。
インストールの際のこだわりとしては、とりあえずハードディスク構成を以前と似たようになるように調整することと、ネットワークアダプタを 2 枚挿入していたので今回もそうしておくくらいにしておきました。
それ以外については、インストールも何もかも、ほぼディフォルト状態で進めてみます。インストールするオプションも基本状態のままで、ネットワーク設定も DHCP のまま、ディフォルトのワークグループへ所属させることとしました。コンピュータ名についても、はじめから設定されていたコンピュータ名を一時的に使用してみることにします。
復元先のハードウェア環境も、少しだけ挙げておきます。
CD-ROM ドライブ MS C/DVD-ROM IDE コントローラ Intel 82371 AB/EB PCI Bus Master IDE Controller SCSI コントローラ Microsoft Virtual Machine PCI SCSI Controller コンピュータ ACPI (Advanced Configuration and Power Interface) PC ディスプレイアダプタ VM Additions S3 Trio32/64 ネットワークアダプタ Intel 21140 Based PCI Fast Ethernet Adapter OS のインストールが終わったら、今回は複数のハードディスクを搭載した構成なので、ドライブレターやマウントポイントなどを、移行前の状態と同じように構成しておきました。
NTBACKUP を用いてシステムを復元する(失敗編)
復元先のコンピュータへバックアップファイルをコピーしたら、セーフモードで Windows を起動します。セーフモードで起動するには、Windows 2000 起動のロゴ画面がでるより前あたりに [F8] キーを押すことで、起動モードを選択することが出来ます。
そして、セーフモードで起動したら NTBACKUP.EXE を実行し、 ”復元ウィザード” ボタンを押して復元ウィザードを起動したら、「ファイルのインポート」 ボタンを押してバックアップしてあった BKF ファイルを指定します。
するとそのファイルに格納されているバックアップの一覧が表示されるので、復元したいものを選択して次へ進みます。
フォルダ階層を展開するときにときどきバックアップファイルの読み込みを要求されますけど、それはその都度読み込んでいって、バックアップに含まれている内容を確認しつつ、必要に応じて復元したいものを選びます。今回はシステム状態を含む全てのデータを復元してもらうことにしました。
そして次へ進むと復元作業の完了ウィンドウが表示されますけど、今回はここで 「詳細ボタン」 を押して、少し調整してみることにしました。
ファイルの復元先では 「元の場所」 を選択して、バックアップに記録されたのと同じ場所へ復元してもらうことにします。そしてもうひとつ、復元する方法については 「常にディスク上のファイルを置き換える」 を選択して、ごっそりと書き換えてしまうことにしました。
そのほかの、セキュリティ情報の復元や、接続点を復元するといった設定は、ディフォルト通りにチェックが入った状態で進めます。
あとは NTBACKUP が自動的にバックアップの内容をシステムに復元してくれました。
復元後の様子を確認してみる
再起動後、復元した方の Windows へログオンして状況を確認してみました。
ログオンすると、まずは Windows によって自動的にイーサネットコントローラが発見されて、それに関するドライバ "Intel 21140 Based PCI Fast Ether Adapter" がインストールされました。続いてビデオコントローラ "S3 Trio32/64"、SCSI アダプタ "Adaptec AIC-" など以前とは構成の違う部分を自動的に検出して差し替えてくれました。
他にも、以前のものと同じと思われる PCI to ISA Brige や IDE コントローラ、パラレルポート、などなど多くのシステム関連のドライバもごっそりとインストールされていました。
気になったのが PC の種類として "標準 PC" がインストールされたことでしょうか。復元作業を行う前のクリーンインストールでは ACPI PC が選択されていましたので、出来ればそれに差し替えておきたいところです。
そんな感じだったので、必ずしも完全に最適なドライバが選択されているのか心配な点もありますけど、ネットワークアダプタや SCSI コントローラなど、特に注目していた部分については最適なものが選択されましたので、とりあえずは大丈夫なのかなとも思いつつ…。
ドライバが一通り検出された後で再起動を要求されたので、Windows を再起動しました。
コンピュータの不調を探る
再起動後、サービスやドライバにエラーが発生したとの通知ダイアログが表示されてしまいました。
そしてログオンの最中に何故だか所在地情報を求められたりして、入力したりしてみたり。するとどうやら、ネットワーク周りの設定が曖昧なままドメインにログオンしようとしたために、ダイアルアップの設定が必要と判断されたようでした。
ローカルコンピュータの管理権限を用いてログオンして、ネットワーク関連の状況を調べてみました。すると DHCP による設定の自動取得は出来ているようでしたけど、設定を変更してみても、変更後すぐに元に戻ってしまいました。
イベントログを眺めてみると、IIS やら DHCP やら、いろいろなものがエラーを示していました。
その中のひとつに、IIS が ISAPI フィルタを見つけられないというものがありました。それは NTFS フォルダへマウントしたパーティションに配置していたものだったので、もしかするとそのあたりが上手くいっていないような感じです。
NTFS フォルダへのマウント周り
マイコンピュータを開いて調べてみると、特定のフォルダへマウントしたはずのパーティションがドライブレターを持って存在していることがわかりました。マウントされていたはずのフォルダを調べてみると、それ自体は存在しているのですけど、アクセスしようとしてみると、"移動または削除されました" というエラーメッセージが表示されてしまいます。
デバイスマネージャからディスクの管理を開いてみると、登録されているはずのラベル名が表示されていなかったり、マウントではなくドライブレターとして登録されていました。
もう一度、マウントしようとしてみると、フォルダが空ではないとのことでマウントすることは出来ませんでした。なのでいったんフォルダを削除して同名のフォルダを作成しなおし、そこへマウントさせてみようとしたのですけど、次のようなエラーが発生してしまいました。
パスをドライブ パスの作成のために使用できません。原因として、ディレクトリが存在しないか、またはディレクトリが既にほかのボリュームへのドライブ パスであることが考えられます。
念のため Windows を再起動して、もういちど試してみましたけど、やっぱり同じエラーとなってしまいました。
情報が残ってしまったのかと思ってレジストリの値を調べてみると、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints に、文字列型としてマウントポイントに使用しているフォルダのフルパスが登録されていました。値にはその情報が書かれているだろうサブキーの番号が登録されているようでした。
とりあえず単純に、該当する文字列を削除して、該当するサブキーを削除してみました。"_Next" という値にはどうやらマウントポイントの通し番号が振られているようでしたので、改めてそこも 1 に設定しつつ…。そして Windows を再起動してみましたけど、やっぱりそれでも同じエラーが発生してしまって再登録することは出来ませんでした。
念のためマウントポイントに使用するディレクトリを削除した上でセーフモードで起動してみます。
まずはマウントポイントとなるフォルダを再作成してみようとしたところ、マウントに使用していたパーティションがマイコンピュータから消えていました。ディスクの管理にて状況を確認してみると、パーティションにドライブレターそのものが割り当てられていないようです。フォルダやレジストリを削除したからかどうなのか、マウントポイントも登録されてはいませんでした。
そして一番気になったのが、パーティション情報のところにラベル名がしっかり表示されていたということでした。復元作業後から今までは、プロパティを見れば確認できていたのですけど、ラベル名がここには表示されていなかったのです。
もしかすると、復帰後に一度はセーフモードで起動しておいたほうが良いのかもしれないですね。
とりあえず、マウントポイントとなるフォルダを作成して、そこへパーティションをマウントさせてみたところ、今度はエラーが表示されることもなく、正常にパーティションをマウントすることが出来ました。
改めて Windows を通常起動して確認してみましたけど、今度はしっかりとマウントポイントを維持していました。
ネットワークの問題と、Windows カーネルの不整合
残すところのエラーと言うと、ネットワークの設定で固定 IP を振ろうとすると、何回設定しても自動取得になってしまう点でしょうか…。
設定自体は有効になっているようで、コマンドプロンプトから ipconfig コマンドを実行してみると、問題なく IP アドレスが設定されているのがわかります。けれど、ネットワークのプロパティから見てみるといつも、自動取得にチェックが入ってしまっているのでした。
もう一度、コンピュータを再起動するついでというか、とりあえず 「コンピュータ」 のデバイスドライバを 「標準 PC」 から 「ACPI (Advanced Configuration and Power Interface) PC」 に変更しておくことにします。デバイスマネージャを起動して 「コンピュータ」 の欄を確認してみると、なぜか 「標準 PC」 と 「ACPI (Advanced Configuration and Power Interface) PC」 の両方が登録されていましたので、ACPI の方をいったん削除して、標準 PC の方のドライバを ACPI に変更しました。
そして再起動してみると、新しいデバイスがインストールされたとのことで、再び再起動を要求されてしまいました。
起動後にデバイスマネージャを調べてみると、今度は ACPI PC が 2 つ登録されていました。さらに何故か、ネットワークアダプタのドライバにびっくりマークがついてしまって、正常に動作しなくなってしまいました。
とりあえず余分な ACPI PC をひとつ削除して再起動してみましたけど、ACPI ドライバこそ 1 つだけになったものの、ネットワークアダプタは相変わらず無効のままでした。 そこで 「標準 PC」 に戻そうかと ACPI ドライバの更新をしてみたところ、新しい ACPI PC のドライバが見つかったので、とりあえずそれをインストールしてみることにしました。
けれどネットワークアダプタ周りには特に影響はありませんでしたので、もう一度 「標準 PC」 をインストールしなおしてみました。するとまたログオンしたときに、新しいデバイスがインストールされたとのことで再起動です。
そしてまた状況を確認してみると、今度は正常にネットワークアダプタが認識されました。コンピュータのデバイスは、今度は何故か 「標準 PC」 が二つになってしまいましたけど、今回はこれ以上は触らないでおくことにします。
なお、ネットワークのプロパティについては相変わらずですけど、それでも再起動しても設定した IP アドレス自体は有効になっているようなので、とりあえずはこのままにしておくことにします。
IIS の問題
そしてもうひとつの問題なのですけど、IIS 上のサイトを参照しようとすると、次のようなエラーとなってしまいました。
Server Application Error
The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.
イベントビュアを調べてみると、なにやら DCOM にてアカウント認証に失敗したようなメッセージが表示されていました。
心当たりがあるといえば、そういえば復旧後に一度もドメインにログオンしていなかったので、もしかするとそのせいかもしれないです。復元前の PC と同一名というのもあれなので、変更しつつ改めて Windows ドメインに参加させてみることにしました。
それでドメインへは問題なく参加できましたけど、それでは特に改善には至りませんでした。
イベントビュアを眺めてみると、どうやらコンピュータ名が変わったことが影響を及ぼしているような感じがします。
今回の意図的な名前の変更によって、イベントログに COM+ の CRM というものがコンピュータ名が変更されたことが通知されていました。System Application が通知しているもののようで、CRM ログファイルが最初違う名前を持ったコンピュータのために作成されたとの記録がのこっていました。
それ以前のエラーでも、IIS の実行プロセスを意味する "IWAM_コンピュータ名" という名前のアカウントが問題になっていて、DCOM がこのアカウントでログオンしようとしてエラーとなっているようでした。
さらに詳しく調べてみると、MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 からのログオンに失敗しているのが一番の原因のようでした。このときのアカウントとして示されていたのが、IWAM_コンピュータ名 となっていました。
もうひとつ気になるところといえば、Tcpip からの通知で TCPIP\Parameters\Adapters\NDISWANIP のレジストリキーを開けなかったというエラーもありました。それ以外はとりあえず DCOM のエラーが続く感じです。
詳しく調べてみると、Microsoft 社のサイトにて [PRB] IWAM アカウントの構成済みの ID が正しくない という情報が見つかりました。
原因はどうやら、PC の復元処理によって IIS が使用する起動プロセス (IWAM_コンピュータ名) と匿名アカウント (IUSR_コンピュータ名) が以前のものに差し替えられてしまうために起こったもののようです。
これらの情報は IIS メタベース、Windows アカウント、コンポーネントサービスの 3 華胥にて取り扱われていて、それらの同期が崩れてしまうと、上記で挙げたエラーが発生してしまうということでした。
それではさっそく問題を解消してみます。
まずは Windows アカウントの該当する IWAM_ アカウントと IUSR_ アカウントに新たにパスワードを設定します。
そして adsutil.vbs (C:\Inetpub\AdminScripts) を用いて IIS のメタベースを調整します。コマンドプロンプトを立ち上げたらそのフォルダまで移動して、次のような感じで IUSR アカウントおよび IWAM アカウントのパスワードを変更します。
cscript.exe adsutil.vbs set w3svc/anonymoususerpass "password"
cscript.exe adsutil.vbs set w3svc/wamuserpass "password"
これで問題が解消する可能性があるということでしたので、接続できるか試してみましたけど、やはりエラーとなってしまいました。
念のため IIS を再起動してみても相変わらずだったので、改めて今度はコンポーネントサービスの方を調整してみることにします。IIS の再起動時にも "そのサービスを開始できませんでした" というメッセージが出てしまいましたので、もうちょっと深いエラーの様な感じもしますけど。
ともあれコンポーネントサービスの調整は、Windows 2000 の場合、先ほどのスクリプトと同じ場所 (C::\Inetpub\AdminScripts) に synciwam.vbs というスクリプトがあるそうですので、これを次のようにして実行することで簡単に同期させることが出来るそうです。
cscript.exe synciwam.vbs -v
こちらは IIS の再起動が必要とのことなので、このあと IIS を再起動してから確認してみましたけど、やはりそのサービスは開始できませんとの通知を得てしまいました。念のため表示できるかどうか確認してみましたけど、やはりエラーとなってしまうようです。
なのでとりあえず Windows 自体を再起動してみましたけど、やっぱり同様のエラーのままでした。
イベントビュアを眺めてみると、エラーはやっぱり同じ感じで、以前の IWAM アカウントが混ざってしまっていました。原因はもしかすると、同期とかの問題ではなく、そもそも異なってしまっているのが問題なのかもしれないですね。
再びクリーンインストールから復旧してみる
復元によってコンピュータ名が急に変わったことが大きく影響していそうな気がしたので、改めて今度はクリーンインストール時から同じ名前を設定してインストール作業を行ってみることにします。
念のため、Windows ドメインへも酸化させて起きましたけど、それ以外についてはディフォルトのままで進めてみました。
インストールを終えたらまた、先ほどの手順でマウントポイントを準備します。それからセーフモードで起動して、NTBACKUP を用いて完全に復元した後、いちど通常起動してドライバを自動的にインストールします。
そしてまたセーフモードで起動して、マウントポイント周りを再調整すれば 良いという感じのつもりだったのですけど、今回は何故だかマウントポイント周りにぜんぜん問題がみられませんでした。これは、コンピュータ名が一緒だったからなのでしょうか…。ともあれ特に修復作業を行う必要はなく、そのまま復元作業は完了となりました。
今回はそのあと Virtual Server 2005 の Virtual Machine Additions をインストールして、これで完成です。もし Windows ドメインに参加させている場合には、改めて参加させなおす必要もあります。
復旧成功
こうしてみると、あれだけいろいろと面倒が出てきた IIS も問題なく動作するようになりました。
気になった点とすれば、ハードウェア構成の違いでしょうか。調べてみると、やっぱりコンピュータのドライバが 「標準 PC」 と 「ACPI PC」 の二つが登録されていました。これはそのまま置いておいても特に問題は無いみたいですけど、少し気を遣う必要があるのがネットワークアダプタでした。
ネットワークアダプタが別のハードウェアになった場合、ネットワーク設定がディフォルトの DHCP による自動取得として設定されてしまいます。なので復元処理を行った後に、あらためて IP アドレス等を設定しなおす必要も出てくるかも知れません。