【Windows Server 2008】 Sysvol 複製を FRS から DFSR に移行するには Dfsrmig.exe コマンドを使用する

おそらく、今現在、この話題に興味のある方は少ないと思います。が、1年後くらいに必要になるだろう...ということでまとめておきます。 

Winodws Server 2008 で改良された DFSR ( Distributed File System Replication) ですが、注目すべき改良点の1つに 「DFSR による SYSVOL 複製が可能になったこと」が挙げられます。

SYSVOL はご存じでしょうか。最近 Active Directory を始めたという方はご存じないかもしれません。簡単に書いておきますと、SYSVOL とは、ある特殊な用途で使用される フォルダであり、一般的には以下のパスになります。

C:\Windows\SYSVOL

SYSVOL には グループポリシーオブジェクトやログオンスクリプトが保存され、これらは他のドメインコントローラにも複製され、すべてのドメインコントローラで同じものを保持できるようになっています。これにより、ドメイン内のクライアントが、どのドメインコントローラに接続しても、最新のログオンスクリプトやグループポリシーが利用できることになるわけです。

Windows 2000 Server で登場したSYSVOL は、登場以来 FRS (File Replication Service)というサービスによって複製されていました。FRS は、ほかに DFS リンクの複製にも使用されていたわけですが、今後は DFSR がその機能を引き継ぎ、より高速で安全な複製を可能にします(Winodws Server 2003 R2 でDFSR を使用された方は、イベントの一部に FRS2 という文字列が入っているのに気づいたかもしれません)。

さて、DFSR による SYSVOL 複製ですが、これを使用するには前提条件があります。

ドメインモード が Windows Server 2008 であること

つまり、Windows Server 2008 の機能をフルに使用する必要があるため、ドメインコントローラの中に 2003 R2 以前が存在していてはならないということです。

さて、DFSR への移行ですが、1台目のドメインコントローラをインストール時に、ドメインモードを 2008 にしていれば、SYSVOL 複製には自動的に DFSR が採用されるようです

すみません、↑未検証です。検証結果をあとでお知らせします。また、どうやら SYSVOL複製に関しては DFSレプリケーション役割をインストールせずとも設定できるようです(これは実際に検証しました)。ただし、一部のイベントが正常に出力されないという現象がみられました。詳細が分かり次第、またお知らせします。

↑ 検証しました。
【Windows Server 2008】 dcpromo 時に ドメインモードを 2008 にすれば SYSVOL 複製は DFSR に自動設定される

ところが、初期のインストール時にドメインモードを Winodws Server 2003 または Windows 2000 Server モードにしてしまい、あとから 2008 モードに移行した場合、手動で FRS から DFSR に移行しなければなりません。このときに使用するのが、DFSR マイグレーションツール(DfsrMig.exe ) と呼ばれるコマンドラインツールです。

DfsrMig.exe を使用して移行を開始する前に、DfsrMig.exe を使用した移行には、以下の段階を経ることを理解しておいてください。

State 不明↓

Windows Server 2008 ドメインモードに移行された直後の状態

State 0 (開始)↓

いつでも移行処理を開始できる状態

Active Diretory には DFSR に必要なオブジェクトやクラスが作成される。

↑State 1 (準備完了)↓

移行の準備が完了している状態

複製のメンバとなるドメインコントローラの%SystemRoot%(通常 C:\WIndows) 配下に SYSVOL_DFSR フォルダが作成され、SYSVOLフォルダから必要なファイルが複製されるとともに、AD上にも複製メンバに関するオブジェクトが作成される。この時点では SYSVOL_DFSR はまだ共有されない。ドメインコントローラの台数や複製されるファイルの容量にもよるが、およそ15分程度の時間を要する。強制的に処理を進めたい場合には、各 ドメインコントローラから dfsrdiag adpoll コマンドを入力し、ドメインコントローラに GlobalState の取得を促すとよい。

  • 移行開始時のDFSレプリケーションイベント EventID 8010
  • 移行完了時のDFSレプリケーションイベント EventID 8014

なお、この状態から State 2 に移行するまでに SYSVOL に何らかの変更を加えた場合には、変更されたファイルおよびフォルダを SYSVOL_DFSR に複製する必要がある。

↑State 2 (リダイレクト済)↓

DFSRによる複製処理が開始された状態

複製メンバとなるドメインコントローラ上の Netlogon共有およびSysvol共有は、従来のSYSVOLフォルダ配下から、SYSVOL_DFSR フォルダ配下に変更され、複製が開始される。

  • 移行開始時のDFSレプリケーションイベント EventID 8015
  • 移行完了時のDFSレプリケーションイベント EventID 8017

この状態では、FRS複製は削除されておらず、SYSVOL間の複製は実行されている。DFSR が正しく動作していることを確認できたら State 3 に移行してFRS複製を削除するとよい。

State 3 (削除済み)

(不要となった)FRSの複製パスが削除された状態

この処理が完了すると、FRSが使用していた SYSVOL フォルダはドメインコントローラ上から削除され、SYSVOL 複製に関するActive Directory上の FRS 関連オブジェクトも削除される。

  • 移行開始時のDFSレプリケーションイベント EventID 8018
  • 移行完了時のDFSレプリケーションイベント EventID 8019

このフェーズに移行されると、以前の State へのロールバックは行えないので注意が必要。

ちなみに、NTFRS サービスは他の複製(DFSリンクの複製)で使用されている可能性があるため、自動的には停止されない。

 最終的には、State 3 に達して、すべての処理が完了したことになります。

この State は GlobalState と呼ばれ、いわば、ドメイン全体の目標値です。各ドメインコントローラは GlobalState の値を定期的にチェックし、自分自身の State が GlobalState と同じ値になるよう、移行を開始します。

ここで、各 State 間の矢印に注目してください。これは遷移可能な状態を表しています。State 0 と State 2 の間は、必要に応じて自由にロールバックすることもできますが、FRS 複製パスが完全に削除されてしまった State 3 からは元に戻ることができません。そのため、State 3 への移行は慎重に行う必要があります。

以下は、Dfsrmig.exe コマンドの書式です。同様の情報は、Windows Server 2008 のコマンドコンソール上で参照することができます。なお、オプションの説明には、若干補足を入れてあります。

C:\Users\Administrator>dfsrmig

SYSVOL を NTFRS から DFSR に移行します。

DfsrMig [/SetGlobalState <state>]      [/GetGlobalState]      [/GetMigrationState]      [/DeleteRoNtfrsMember]      [/DeleteRoDfsrMember]      [/CreateGlobalObjects]

/SetGlobalState <GlobalState>

        DFSR 移行の現在の GlobalState を設定する。 0 '開始' 1 '準備完了' 2 'リダイレクト済み' 3 '削除済み'

        いきなり 2 を設定することも可能だが、進捗が正しいことを確認しながら進めるためにも、        0 から段階的に 0 → 1 → 2 と指定していくとよい。

/GetGlobalState

        DFSR 移行の現在の GlobalState を取得する。

/GetMigrationState

        GlobalState に対し、複製メンバであるドメイン コントローラの現在の進行状況を取得する。

/CreateGlobalObjects

    DFSR グローバル AD オブジェクトと、        不足している RODC DFSR メンバ オブジェクトを作成する。 RODC で長時間にわたり移行を開始できない場合 に役立つ。

        SetGlobalState 0 と同じ結果が得られる。コマンドの完了後は「開始」状態となる。

/DeleteRoNtfrsMember <RODC 名>

        State 2 から State 3(削除済み)への移行時、        RODC が長時間にわたって「削除中」状態でスタックしている場合に、        このコマンドを使用して強制的に RODC の NTFRSオブジェクトを削除することができる。        RODC 名が指定されない場合、すべての RODC が対象になる。

/DeleteRoDfsrMember <RODC 名>

        State 1(準備完了) から State 0(開始) へのロールバック 時、        RODC が長時間にわたって '準備の取り消し中' でスタックしている場合に、        このコマンドを使用して、指定された RODC の DFSR メンバ オブジェクトを 削除することができる。RODC 名が指定されない場合、すべての RODC が対象になる。

以下は、実際に SYSVOL 複製を DFSR に移行する流れを示したものです。

******************** 

ドメインモードを 2008 に変更

C:\Users\Administrator.2008RC1-01> dfsrmig /GetGlobalState

DFSR 移行がまだ初期化されていません。移行を開始するには、グローバル状態を目的の値に設定してください。

 


しばらくすると、「開始」になる。どうしても「開始」にならない場合には、/SetGlobalState 0 か、/CreateGlobalObjects を使用するとよい。

C:\Users\Administrator> dfsrmig /GetGlobalState

DFSR の現在のグローバル状態: '開始'成功しました。

C:\Users\Administrator>dfsrmig /GetMigrationState

すべてのドメイン コントローラがグローバル状態 ('開始') に移行しました。移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態になりました。成功しました。

開始状態から、準備完了状態へ移行する

C:\Users\Administrator.2008RC1-01>dfsrmig /SetGlobalState 1

DFSR の現在のグローバル状態: '開始'新しい DFSR のグローバル状態: '準備完了'

'準備完了' 状態に移行します。DFSR サービスによってSYSVOL が SYSVOL_DFSR フォルダにコピーされます。

いずれかの DC で移行を開始できない場合は、手動ポーリングを試行してください。または、/CreateGlobalObjects オプションを指定して実行してください。移行は 15 分から 1 時間までの任意の時点で開始できます。成功しました。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

次のドメイン コントローラは、グローバル状態 ('準備完了') と同期していません:

ドメイン コントローラ (ローカル移行状態) - DC の種類===================================================

2008RC1-01 ('開始') - Primary DC2008RC1-RODC01 ('開始') - Read-Only DC2008RC1-02 ('開始') - Writable DC

移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態にまだなっていません。AD の待ち時間が原因で状態の情報が最新になっていない可能性があります。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

次のドメイン コントローラは、グローバル状態 ('準備完了') と同期していません:

ドメイン コントローラ (ローカル移行状態) - DC の種類===================================================

2008RC1-RODC01 ('開始') - Read-Only DC2008RC1-02 ('開始') - Writable DC

移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態にまだなっていません。AD の待ち時間が原因で状態の情報が最新になっていない可能性があります。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

すべてのドメイン コントローラがグローバル状態 ('準備完了') に移行しました。移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態になりました。成功しました。

「準備完了」状態から「リダイレクト済」状態に移行する

C:\Users\Administrator.2008RC1-01>dfsrmig /SetGlobalState 2

DFSR の現在のグローバル状態: '準備完了'新しい DFSR のグローバル状態: 'リダイレクト済み'

'リダイレクト済み' 状態に移行します。SYSVOL 共有がSYSVOL_DFSR フォルダに変更されます。

状態が '準備完了' から 'リダイレクト済み' に移行する間に SYSVOL 共有がなんらかの形で変更された場合は、レプリケートされたすべての RWDC 上で robocopy を一度実行し、変更内容を SYSVOL からSYSVOL_DFSR にコピーする必要があります。成功しました。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

次のドメイン コントローラは、グローバル状態 ('リダイレクト済み') と同期していません:

ドメイン コントローラ (ローカル移行状態) - DC の種類===================================================

2008RC1-01 ('準備完了') - Primary DC2008RC1-RODC01 ('準備完了') - Read-Only DC2008RC1-02 ('準備完了') - Writable DC

移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態にまだなっていません。AD の待ち時間が原因で状態の情報が最新になっていない可能性があります。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

すべてのドメイン コントローラがグローバル状態 ('リダイレクト済み') に移行しました。移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態になりました。成功しました。

「リダイレクト済」状態から「削除済」状態に移行する

C:\Users\Administrator.2008RC1-01>dfsrmig /SetGlobalState 3

DFSR の現在のグローバル状態: 'リダイレクト済み'新しい DFSR のグローバル状態: '削除済み'

'削除済み' 状態に移行します。このステップを元に戻すことはできません。

いずれかの RODC が長時間にわたって '削除済み' 状態になっている場合は、/DeleteRoNtfrsMembers オプションを指定して実行してください。成功しました。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

次のドメイン コントローラは、グローバル状態 ('削除済み') と同期していません:

ドメイン コントローラ (ローカル移行状態) - DC の種類===================================================

2008RC1-01 ('リダイレクト済み') - Primary DC2008RC1-RODC01 ('リダイレクト済み') - Read-Only DC2008RC1-02 ('リダイレクト済み') - Writable DC

移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態にまだなっていません。AD の待ち時間が原因で状態の情報が最新になっていない可能性があります。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

次のドメイン コントローラは、グローバル状態 ('削除済み') と同期していません:

ドメイン コントローラ (ローカル移行状態) - DC の種類===================================================

2008RC1-RODC01 ('リダイレクト済み') - Read-Only DC2008RC1-02 ('リダイレクト済み') - Writable DC2008RC1-01 ('削除中') - Primary DC

移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態にまだなっていません。AD の待ち時間が原因で状態の情報が最新になっていない可能性があります。

C:\Users\Administrator.2008RC1-01>dfsrmig /GetMigrationState

すべてのドメイン コントローラがグローバル状態 ('削除済み') に移行しました。移行状態が、すべてのドメイン コントローラ上で整合性のとれた状態になりました。成功しました。

長々と失礼しました。