Active DirectoryサーバのP2V移行で地獄感のあるトラブルをやらかした話
こんにちはシゲルです。だいぶ前にあるお客さん先のActive DirectoryサーバーをP2Vで移行する案件で盛大にトラブる出来事がありまして、割りとヘコんだ事がありました。
この時、エンドユーザの環境にもバッチリ影響が出まして、変な汗出まくり、キモ冷やしまくりです。原因としては同じネットワークセグメントに同じ様な(複製した)プライマリーADサーバーがありコンフリクトしてアウト、といった感じです。復旧作業しようにもドメインコントローラが壊れてるおかげで認証関係が死んでおりサーバにログインすらも出来きないといった具合です。
とゆう訳で今回のエントリーではADサーバーのP2移行で派手にトラブった件を順を追って話ていきます。
これを聞いた瞬間 身の毛のよだつような恐怖の疼き(クレーム的な意味で)を味あわせることでしょう(ギャー)。あんまりトラブルの内容に関係ないですが仮想化環境はHyperVでした。
障害の有った案件の概要
ざっくりいうと物理で2台のADサーバがあって、その内の1台はファイルサーバを兼用していて、この1台のサーバをP2Vで仮想化環境(HyperV)に持っていくといった内容です。
Day00 移行の準備あれこれ
移行作業に割ける時間は週末の二日間(できれば土曜日のみの方が望ましい)だったのでファイルサーバで使用しているデータの容量が多かったので事前にファイルサーバで使っているデータドライブだけ先に移行するような処置をとりました。
実際のデータ移行、データ同期はRobocopyコマンドで実施していましたが「ViceVersa」というツールが有ったので途中からこちらを使っています。
自分「P2V移行したタイミングでADのプライマリーが2つになっちゃいますが、、、不味くないですか??」
上司「コピーした方のIPを変えとけば大丈夫っしょ?」
自分「ああ、そうっすか、、、なら大丈夫っすね!」
これが後にあんな事になるんて、、、、全然大丈夫じゃなかった。
Day01 ADサーバー P2V移行作業 当日の様子
当日、P2V移行作業はDisk2vhdを使っておこないました。前日までの作業でデータ用のドライブのディスクは前もって大部分を移行させておいたので データドライブについては停止点を作って最後のデータ同期を行い、システムドライブについてはDisk2vhdを使ってvhdファイルに変換しています。
実はここの仮想OSに変換したあとの起動の所でハマりました。移行したADサーバのOSはWindows2008だったのですが、通常通り仮想OSを作るとデフォルトで UEFIになってしまい、元の物理サーバがBIOSなので起動できなくなりました。ですので仮想OSはBIOSにしてつくりましょう。
Day02 不穏なネクストビジネスデー データ移行できてない??
まあ、そんなこんなで週末の移行作業を終えての月曜日、ネクストビジネスデーをむかえました。しかし、朝からお客様の所でスタンバイしていると
お客「何か、〇〇のフォルダのファイル足りないみたいなんだけど??データの移行ちゃんと出来てるんですかっ???」
自分「マジか、やばい、、、、、」
原因をしらべてみましたが、データ移行で最初に使った「robocopy」が不味かったようです。しかもこの不具合は仕様なんですと、、爆発してしまえ!!
参考:robocopy後のコピー先フォルダが隠しフォルダになってしまう
お客様と協議の末、とりあえず古い元のサーバのデータから戻せばOKということになりました。お腹の下の方に冷たいものを感じなから、旧サーバを立ち上げ新しいサーバへデータをコピーします。
めでたし、めでたし、、、、、の筈だった。
Day03 そして崩壊へ ADの認証関係が3割コケる
データのリカバリーを実施した翌日、そこにさらなる障害が起こりました。ドメイン環境のPCのログインとか、ファイルサーバへのアクセスとかADの認証の機能を使うものが全体の3割位が失敗するのです。エラーメッセージはこんな感じ。セキュアチャネルの破損というやつですね。
エラーメッセージ: The security database on the server does not have a computer account for this workstation trust relationsship
原因をしらべようと新しいサーバへ入ろうとしますが、上のエラーメッセージが出てデータADの認証が死んでいるのでサーバにログインしたくても出来ない。
Windows系OSでおなじみのこちらの裏技もつかって見ましたがコマンドプロンプトを立ち上げることはできますがAdministratorのパスワードが変更できませんでした。
Windowsでログインパスワードを忘れたときに無理やり書き換える方法
Day04 地獄感のあるのリカバリー
サーバにログインすることすら絶望的な状況でしたが色々、調べてみると、以下のような状況に有ることがわかりました。図にするとこんな感じ。
P2Vして仮想環境に移したサーバ:自分自身をプライマリーサーバとして認識しているが認証関係が壊れてる、AD環境のPCとかは基本的にこのサーバを参照している。元の物理サーバ、プライマリー、セカンダリー:こちらのサーバ同士でドメイン・サーバのメンバーになっている。
はい、完全にこれはP2Vしてプライマリーサーバが2個にしてしまったのが原因ですね。データの移行ミスのリカバリー対応でサーバを古い物理サーバを立ち上げた所、同じセグメントにプライマリーのADサーバが2個ある状態にしてしまっていたのです。
最終的にWindows系OSでおなじみの裏技を使ってログイン無しにコマンドプロンプトから強制的にプライマリーのドメインサーバを降格させ(6回警告がでる例のアレです)、セカンダリサーバをプライマリーに無理やり昇格させ、もうサーバを一度ドメインサーバとして昇格させる手順で復旧する事ができました。
まとめ
以前にActive DirectoryのP2V移行やらかしたトラブルについて、書いてみました。 随分と時間が経ちましたが今でも思い返すとお腹の下の方に冷たいものを感じます。
- 上司のいうことはアテに出来ません、とまでは言いませんが最終的にツケは自分で払うことになります。
- 同じセグメントにプライマリーADサーバ2つはトラブルの元です、移行が終わったらとっとと降格させてましょう。
- できるならプライマリーADを別のサーバへ移転させてから、P2V移行しましょう。