現象
Windows Server 2012 R2 の Active Directory 環境において、
片方のドメイン コントローラーでグループ ポリシーを設定しても、もう片方に反映されない事象が発生しました。
ファイル レプリケーションの問題であることは一目瞭然であったため、repadmin や dcdiag で確認したが異常は検出されず。
イベント ログに以下の記録があった。
ログの名前
|
DFS Replication
|
ソース
|
DFSR
|
イベント ID
|
4614
|
レベル
|
警告
|
説明
|
DFS レプリケーション サービスは、ローカル パス C:\Windows\SYSVOL\domain で SYSVOL を初期化し、初期レプリケーションの実行を待機しています。
レプリケート フォルダーは、パートナー でレプリケートするまで初期同期状態を維持します。サーバーがドメイン
コントローラーに昇格している場合は、この問題が解決されるまでドメイン コントローラーはアドバタイズしません。
これは、指定されたパートナー自体が初期同期状態にあるか、共有違反がサーバー上が同期パートナー上で発生した場合に発生します。
このイベントがファイルレプリケーションサービス (FRS) から DFS レプリケーションへの SYSVOL 移行により発生した場合は、
この問題が解決されるまで変更はレプリケートされません。
これは、サーバー上の SYSVOL フォルダーが他のドメイン コントローラーと同期できなくなる原因となります。
|
また、"DFS の管理" の診断レポートでは以下の警告がすべてのドメイン コントローラーにあった。
このメンバーは、レプリケート フォルダー SYSVOL Share の最初のレプリケーションを待機しています。
|
影響を受けたレプリケート フォルダー
|
SYSVOL Share
|
説明
|
このメンバーは、レプリケート フォルダー SYSVOL Share の最初のレプリケーションを待機しており、
現在はレプリケーションに参加していません。
この遅延は、DFS レプリケーション サービスによる Active Directory ドメイン
サービスからのレプリケーション設定の取得をこのメンバーが待っているために発生します。
このメンバーがレプリケーション グループに属していることをメンバー自身が検出すると、最初のレプリケーションが始まります。
|
この表示の下に、推奨されるアクションのリンクが提示されていたが、リンク切れだった。
また、DFSRAdmin では、SYSVOL に対するデータベースの初期化はできなかった。
原因
原因不明。
初回レプリケーション待機中で、レプリケーションがそもそも開始されていない。この挙動そのものは OS としては異常と認識できない。
今となっては推測しかできないが、過去のドメイン コントローラー移行時に、
レプリケーションが完了しないまま旧ドメイン コントローラーを強制的に降格させたと思われる。
ユーザー アカウントが同期できていることをもって、レプリケーションが完了したと誤認したのではないかと思われる。
ただし、データベースおよびファイルのレプリケーションが完了しない状態では、通常の降格操作ができなくなるため、
普通は気づくはずである。旧環境の時点で問題があってやむなく実施した可能性もある。
なお、Windows Server 2012 R2 からはレプリケーションの問題が起きにくくなっているため同様の環境は再現不能であった。
いずれにせよ有効な対処方法も公開されていないレアケース。
対策
以下の手順で回復した。
なお、今回は DFSR の場合の回復方法のみを記載しており、FRS の場合は記述していない。
ファイル レプリケーションに FRS を使用しているか、DFSR を使用しているか判断するには、イベントログを確認し新しいログが記録されている方がそれだとわかる。
キモは手順 9 の DFSR データベースの初期化。
ただし、他の DFSR メンバーが生き残っているとすぐに現在の状態に戻ってしまうため、他のメンバーをすべて削除する必要がある。
- FSMO の確認
C:\>netdom query fsmo
スキーマ マスター dc1.test.lan
ドメイン名前付けマスター dc1.test.lan
PDC dc1.test.lan
RID プール マネージャー dc1.test.lan
インフラストラクチャ マスター dc1.test.lan
コマンドは正しく完了しました。
- repadmin を確認する
C:\>repadmin /showrepl /all
最終レプリケーション成功時刻が当日直近になっていれば、問題なし。
DC=test,DC=lan については、15分以内程度。
Schema は頻繁にレプリケーションされていないことがある。
ここで問題が見つかった場合は、他の問題がある可能性があるため、以降の操作は中止し再度状況確認する。
- FSMO 以外 のすべてのドメイン コントローラーを降格させる
以降、降格させたドメイン コントローラーはドメイン メンバーから外し、再接続しない。
再接続する際は OS 再インストールする。
もし、再インストールせずにドメイン コントローラーに再昇格すると、ファイル レプリケーション データベースが汚染されるため、やり直しになる。
- "Active Directory サイトとサービス" から、FSMO 以外 の痕跡を削除
- DNS サービスから、FSMO 以外 のドメイン コントローラーの痕跡をすべて削除
repadmin の結果に異常が無ければ、通常は残らない。
- FSMO のリゾルバーから、FSMO 以外 を削除
TCP/IP のプロパティからDNSの設定をFSMOのみにする。
- ファイル レプリケーション メンバーのごみを掃除する
コマンド プロンプトを "管理者として実行" し、
C:\>ldp
接続 - バインド
表示 - ツリー ※ベースDNは指定不要
CN=System,DC=test,DC=lan
CN=DFSR-GlobalSettings, ...
CN=Domain System Volume, ...
CN=Topology, ...
配下の FSMO 以外 を削除
- Windows Update
- DFSR データベースを初期化
以下の方法は Windows Server 2012 R2 でデータベースの修復機能があるため採用した。
乱暴なやり方なのでそれより前のバージョンで正常に戻るか不明。
PsExec を使用すると簡単に作業できる。
※初回はライセンスの確認がある。
C:\PsToos>PsExec64.exe -?
C:\PsToos>PsExec64.exe -s cmd
もし、運用ポリシーなどで許可されない場合は、タスク スケジューラにコマンドを登録して実行する。
実行アカウントは SYSTEM、"最上位の特権で実行する" オンで同様の操作が可能。
- DFS Replication サービスを停止
- C:\System Volume Information\DFSR を別名に変更する。
- DFS Replication サービスを起動
- C:\System Volume Information\DFSR が新たに作成されていることを確認する。
- "DFS の管理" で診断レポートを作成し、
エラー: DFS レプリケーション サービスのコンピューター構成ファイルは、既定の設定で作成されました。
が表示されれば初期化成功。
- 新規OSインストールしたサーバーをドメイン コントローラーとして追加する
Windows Update 済の状態で参加する。
- NETLOGON と Sysvol の共有フォルダーが作成され、netlogon 内に適当にファイルを作成し数十秒以内に伝搬したらOK
C:\>net share
- 正常動作を確認したらリゾルバーの修正やウイルス対策ソフトのインストールを実施する