2013年12月24日火曜日

グループポリシーの適用エラーがよく起こるのはアーキテクチャが悪い。

何か腹立ってきたので愚痴っておく。
グループポリシーの同期は遅い
Active Directory 環境でグループポリシーオブジェクト(GPO)の作成・変更はPDCエミュレータ上で行うわけだが、設定内容は Active Directory データベース(ntds.dit) に書き込まれるとともに、SYSVOL 内のファイル \\domainname\sysvol\domainname\Policies\{GUID}\gpt.ini に反映される。
ドメインコントローラ間の ntds.dit のレプリケーションは RPC で行われるが、SYSVOL の同期は FRS または DFSR で行われる。で、 ntds.dit の同期処理が動くタイミングと SYSVOL の同期処理が動くタイミングは特に連動していない。
そのため、「ntds.dit のレプリケーションだけが先に完了し、SYSVOL の同期が未完了」という状況はよく起こる。この状況でクライアントがドメインにログオンすると、グループポリシーを処理しようとした時に gpt.ini を読み取れずエラーになる。
この状況で、クライアントで gpresult /r を実行すると、
ユーザー<ユーザー名>はRSOPデータを持っていません。
とだけ表示され、グループポリシーが現在どのような状況なのか全く掴めなくなってしまう。
んで、gpupdate /force を実行すると、
グループ ポリシーの処理に失敗しました。ドメイン コントローラーからファイル \\domainname\SysVol\domainname\Policies\{GUID}\gpt.ini を読み取ろうとして失敗しました。このイベントが解決するまで、グループ ポリシー設定は適用されません。この問題は一時的なものである可能性があり、次のうちのいくつかが原因と考えられます:
a) 名前解決または現在のドメイン コントローラーへのネットワーク接続。
b) ファイル レプリケーション サービスの潜在期間 (別のドメイン コントローラーに作成されたファイルが現在のドメイン コントローラーにレプリケートされていない)。
c) 分散ファイル システム (DFS) のクライアントが無効になっている。
というエラーメッセージが表示され、ようやく何が起きているのか理解できる。

このエントリで何を言いたいかというと、『ntds.dit のレプリケーションと SYSVOL のレプリケーションが非同期なせいでトラブルがよく起きるから何とかしてくれよマイクロソフト』『gpresult /r の結果も、もう少し何とかならないのか』という、ホントにただの愚痴。
ntds.dit のレプリケーションは、repadmin コマンドで状況を確認したり強制レプリケーションをかけたりしてトラブルシュートできるが、SYSVOL のレプリケーションはあまりトラブルシュートの手段がないのも不満。せいぜいイベントログ確認と、サービス(ntfrs または dfsr)の再起動ぐらい。後は SYSVOL のレプリケーションが終わるまで、暴れたい気持ちを抑えて腕組みしてジッと待ち続けるしかない。

このような状況は、ドメインコントローラの台数が増えれば増えるほど発生しやすい (SYSVOLの同期が追いつかなくなる。特にFRSの場合。DFSR は差分のみ転送するので FRS より速い)。
Windows Server 2008 以降はデフォルトで SYSVOL 同期に DFSR が使われるようになったが、現場の声として言わせてもらうと、NT,2000,2003 から先祖代々移行してきたドメインでは未だに FRS が使われていることが多い。DFSR に移行すれば改善される (see also: 【Windows Server 2008】 Sysvol 複製を FRS から DFSR に移行するには Dfsrmig.exe コマンドを使用する - フィールドSEあがりの安納です - Site Home - TechNet Blogs) と思うが、既存環境をいじるのは中々ハードルが高い。

0 コメント:

コメントを投稿