Windows Server

ADサーバのマイグレーションの検証をやったときのメモ

2017/01/31

なんとなくメモ的に、Active Directory のマイグレーションをする場合のメモです。

今回の環境は、以下のように OS のバージョン違いのパターン。

そこに、1台新しいOSのドメインコントローラを追加して、FSMOを移行します。

 

その後、クライアントPC達の設定変更を避けるために、1台目DCで使っているIPを3台目が襲名して、最終形態はこんな感じになる。

こんなことを想定してみました。

今回の内容は、あくまでも1例であってキレイな環境で試した場合です。
もし、同じパターンだったとして、本番でのマイグレーションの際には、事前の現状把握、手順やマイグレーション後の動作確認を、十分に行ってください。

 

マイグレーション手順

1.1台目のDC(Windows Server 2008 R2) で、Windows Server 2012 R2 のインストールメディアよりadprepを実行します。

ひとまず、以下4つ全部やりました。

  • adprep /forestprep
  • adprep /domainprep
  • adprep /rodcprep
  • adprep /domainprep /gpprep

ログはこんな感じ。スキーマバージョンは、69となるみたいです。


C:\Users\Administrator>cd /d D:\support\adprep

D:\support\adprep>adprep /forestprep

ADPREP の警告:

Adprep を実行するには、フォレスト内のすべての Windows Active Directory ドメイン
コントローラーで Windows Server 2003 以降が実行されている必要があります。

'testdom01.local' という名前の Active Directory フォレストのスキーマを、Active D
irectory ドメイン コントローラー (スキーマ マスター) 'dc01.testdom01.local' を使
用してアップグレードしようとしています。
この操作は、完了後に元に戻すことはできません。

[ユーザーによる操作]
フォレスト内のすべてのドメイン コントローラーで Windows Server 2003 以降が実行さ
れていて、スキーマをアップグレードする場合は、C キーを押して操作を確認してから E
nter キーを押して続行してください。それ以外の場合は、その他のキーを押してから En
ter キーを押して終了してください。


c

現在のスキーマのバージョン 56


スキーマをバージョン 69 にアップグレードしています


ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch57.ldf" からディレクトリをインポートしています
エントリを読み込んでいます.................
16 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch58.ldf" からディレクトリをインポートしています
エントリを読み込んでいます....
19 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch59.ldf" からディレクトリをインポートしています
エントリを読み込んでいます............................
46 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch60.ldf" からディレクトリをインポートしています
エントリを読み込んでいます............
57 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch61.ldf" からディレクトリをインポートしています
エントリを読み込んでいます......
62 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch62.ldf" からディレクトリをインポートしています
エントリを読み込んでいます......
67 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch63.ldf" からディレクトリをインポートしています
エントリを読み込んでいます......
72 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch64.ldf" からディレクトリをインポートしています
エントリを読み込んでいます.......
78 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch65.ldf" からディレクトリをインポートしています
エントリを読み込んでいます.......................
100 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch66.ldf" からディレクトリをインポートしています
エントリを読み込んでいます......
105 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch67.ldf" からディレクトリをインポートしています
エントリを読み込んでいます......
110 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch68.ldf" からディレクトリをインポートしています
エントリを読み込んでいます...............................
140 個のエントリを正しく修正しました。

コマンドが正しく完了しました
ファイルの署名を検証しています
"dc01.testdom01.local" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "D:\support\adprep\sch69.ldf" からディレクトリをインポートしています
エントリを読み込んでいます.....
144 個のエントリを正しく修正しました。

コマンドが正しく完了しました
Adprep はフォレスト全体の情報を正しく更新しました。

D:\support\adprep>adprep /domainprep
Adprep はドメイン全体の情報を正しく更新しました。
D:\support\adprep>adprep /domainprep /gpprep
ドメイン全体の情報は既に更新されています。
[状態/結果]
Adprep はこの操作を再実行しようとはしませんでした。


更新が必要なグループ ポリシー オブジェクト (GPO) はありません。または、GPO 情報
は既に更新されています。
[状態/結果]
Adprep はこの操作を再試行しませんでした。

D:\support\adprep>adprep /rodcprep
rodcprep は既に正常に完了しています。
[状態/結果]
Adprep はこの操作の再実行を試行しませんでした。

もう一台の DC で、PowerShell を実行するとこちらのスキーマバージョンも上がっていることがわかります。

PS C:\Windows\system32> Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" | select "Schema Version"

 Schema Version
 --------------
 69

 

2.3台目のDCの追加

3台目(Windows Server 2012 R2) をドメインコントローラーに昇格します。
ADDSをインストールするだけなので、手順は割愛します。

「dcdiag」で診断したり、「repadmin」でレプリケートの動作を確認しましょう。

 

3.FSMOの移動

Windows Server 2012 R2 のドメインコントローラーから、以下のようにFSMOを移動しました。

[Active Directory ユーザとコンピュータ]を使って、「RID」「PDC」「インフラストラクチャ」を移動します。

 

 

次に、[Active Directory ドメインと信頼関係]を使って、「ドメイン名前付け操作マスタ」を移動します。

 

最後に、[Active Directory スキーマ]のスナップインをMMCに追加し、「スキーママスタ」の移動をします。

MMCのスナップインに「Active Directory スキーマ」が表示されない場合は、以下を実行してください。


regsvr32 schmmgmt.dll

 

操作するドメインコントローラーを転送先のドメインコントローラーに変更します。

 

その後に、メニューから「操作マスタ」を選びます。

 

で、変更

 

FSMOがちゃんと移動できたことは、「ntdsutil」もしくは、Powershell で確認できます。

今回は、powershell


PS C:\Windows\system32> Get-ADForest -Identity testdom01.local | Select DomainNa
mingMaster,SchemaMaster

DomainNamingMaster SchemaMaster
------------------ ------------
dc03.testdom01.local dc03.testdom01.local
PS C:\Windows\system32> Get-ADDomain -Identity testdom01.local | select PDCEmula
tor, RIDMaster, InfrastructureMaster

PDCEmulator RIDMaster InfrastructureMaster
----------- --------- --------------------
dc03.testdom01.local dc03.testdom01.local dc03.testdom01.local

 

4.NTP 設定

こんな感じですな。


C:\Windows\system32>w32tm /config /syncfromflags:manual /manualpeerlist:ntp.jst.mfeed.ad.jp /update
コマンドは正しく完了しました。

C:\Windows\system32>w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。

C:\Windows\system32>w32tm /query /status
閏インジケーター: 0 (警告なし)
階層: 3 (二次参照 - (S)NTP で同期)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0790710s
ルート分散: 0.0672197s
参照 ID: 0xD2ADA039 (ソース IP: 210.173.160.57)
最終正常同期時刻: 2017/01/31 0:15:16
ソース: ntp.jst.mfeed.ad.jp
ポーリング間隔: 10 (1024s)

C:\Windows\system32>

※ w32tm /query /status のログは、間違ったログを貼っていたので、後から取り直したログに差し替えています。

 

5.その他

今回は、DNS は設定を行っていない環境ですので何もしませんでしたが、フォワーダーの設定などを行っている場合は、移行先のサーバでも同様の設定が必要になります。

グローバルカタログのサーバの確認は、DNS マネージャーで確認してもいいかも。

あと、Windows Server 2012 R2 では、ADのレプリケーションの仕組みがFRSは推奨されなくなり、DFSRとなりました。

以下、引用文
Active Directory ドメイン サービスの役割に含まれるファイル レプリケーション サービス (FRS) は推奨されなくなりました。 FRS ベースの SYSVOL は分散ファイル システム レプリケーションを使用するように移行してください。
https://msdn.microsoft.com/ja-jp/library/dn303411(v=ws.11).aspx

今回の環境では、最初にWindows 2008 R2のドメインを作成していますので、既定でDFSRになっててるので割愛します。


C:\Windows\system32>dfsrmig /GetGlobalState

DFSR の現在のグローバル状態: '削除済み'
成功しました。

C:\Windows\system32>

6.移行元のDCの降格

今回のDCはWindows Server 2008 R2 なので、「dcpromo」を使っていきます。

この後に再起動を行うと、ADDSが起動していない状態になります。

 

7.IPアドレスの入れ替え

Windows Server 2008 R2 は、不要になったのでシャットダウンしてしまいましょう。
でも、今回は作ってないですが、クライアントPCのDNSの設定が、ADサーバを向いている場合もあるので、
今回追加したドメインコントローラーのIPアドレスを撤去するドメインコントローラーと一緒にしちゃいましょう。

普通に、ネットワーク接続からIPを変更して、再起動かけてみました。
すると、こんな感じ。
若干、ゴミが残っちゃいました。
やっぱり、これじゃ乱暴すぎかなって感じですね。。。この辺は、もうちょっと検証してみよっと。

 

余談

ちなみに、今回のケースが発生する場合は、2台構成のドメインコントローラの導入時期が違う場合だと思います。
例えば、ドメインコントローラーを1台で運用していて、障害などで困ったので後から冗長化したとか。
しがらみが出来ちゃったとか。

一度この状態になってしまうと、いつバージョンをそろえるかという計画を立てるまではこの状態が続いてしまいます。

ですので、対応できるようなときに同じバージョンにそろえていっちゃいましょー。

 

 

-Windows Server
-,