2011年12月25日日曜日

Win2k8R2: ifmを使ったdcpromoにおいて、SYSVOL入りinstallation mediaをDVDに焼いて遠隔地に送る方法

dcpromoといえば、Active Directory(AD)のドメインコントローラ(DC)を構築するコマンドであり、Windowsサーバ技術者であれば知らぬ者はいないが、今回はそのdcpromoについてのTIPSを記事にしてみた。
レプリケーションについておさらい
Active Directoryはマルチマスタ型の分散データベースである。マルチマスタであるということは、全てのDCが同一・最新のデータを持っており、かつ全てのDCでデータベースを更新できることを意味する。いずれかのDCでデータを更新すると、ドメイン内のDC同士で相互にデータの複製(レプリケーション)を行ない、ほどなく全DCのデータが同期される。
通常、DC間でレプリケーションされるのは差分データのみであるが、トラブル等でデータベースが壊れた場合には、他の正常なDCから全てのデータを取り直すことも可能。これを通称フルレプリケーションと呼んでいる。
なお、レプリケーションされる対象は、ADのデータベース(NTDS.DIT)とSYSVOLフォルダである。
(余談:Windows Server 2008からはRead Only Domain Controller(RODC)という読み取り専用・更新不可のDCを作ることもできる)。

既存ADにDCを新規に追加する時はフルレプリケーションが行われる
既存のADに2台目以降のDCを追加する時、追加のDCとなるサーバは、dcpromoの実行前にはADのデータベースもSYSVOLフォルダも持っていないので、他のDCから全データをもらってくる必要がある。すなわちフルレプリケーションを行なうことになる。

遠隔地にDCを追加する場合、WAN越しのトラフィックに注意
世界中に拠点がある大組織のADを想像してほしい。
WANで結ばれた複数の拠点がある場合、拠点ごとにADのサイトを分けて、各サイトにそれぞれDCを立てるのが普通である。
このようなADにおいて、遠隔地のサイトに新規にDC(仮に"serverB"とする)を立てることを考える。本拠地のDCは"serverA"とする。
大きな組織のユーザやコンピュータをADで管理していると、ADのデータベース(NTDS.DIT)は結構な大きさになる。SYSVOLまで含めると1GB超となることも珍しくない。DC間のレプリケーションはネットワーク経由に行われるので、フルレプリケーションが始まると、ネットワーク上を1GBのトラフィックが流れることになる。
今の時代、同一LAN上であれば1GBの転送はそれほど気にすることはない(利用ユーザの少ない夜間に作業するぐらい)が、遠隔地にDCを立てるケースでは話が違ってくる。WAN越しに1GBのトラフィックが流れることになるためである。WAN回線の帯域がレプリケーションで食いつぶされてしまうし、回線品質がよくない海外拠点にDCを立てる場合は途中でたびたび通信断が発生して中々レプリケーションが完了しないという問題も起こり得る。
Figure.1 WAN越えのDCPROMOは通信回線がネック
IFMとは
このような問題への対応策なのか、Windows Server 2003以降のdcpromoにはIFM(Install From Media)という機能が追加された。
その使い方はこうだ。
1. 既存のDC(serverA)でADのデータベースのバックアップを取る(これを"installation media"と呼ぶ)
2. 1.をフォルダごとDVD等の可搬メディアに焼き、serverBの元に郵送等の手段で送りつけ、serverBに突っ込む
3. serverBのdcpromo中に、「次の場所のメディアからデータをレプリケートする」を選び、DVD内のinstallation mediaのフォルダを選ぶ
Figure.2 DCPROMOでIFMを指定する画面
※注: 2.は別にDVDに限らず、ネットワーク越しのファイルコピー等でもよいが、これについては後述。


IFMを使うと、全データをネットワーク越しにレプリケーションする必要がなくなるため、大幅なトラフィック減が見込める。(但し、バックアップ時点のデータと最新データの差分をレプリケーションするので、トラフィックは完全に0にはならない)。
Figure.3 IFMの概念

Windows Server 2008でIFM用のinstallation mediaを作成する際、"SYSVOL入り"と"SYSVOLなし(ntds.ditのみ)"を選べる。SYSVOLも結構な大きさなので、折角ならSYSVOL入りのinstallation mediaを使ってIFMと洒落込みたい。
SYSVOL入りinstallation mediaの作成と、遠隔地への送付での落とし穴
SYSVOL入りのinstallation mediaを作るには
C:\>ntdsutil
ntdsutil: activate instance ntds
ntdsutil: ifm
ifm: create sysvol full <ifm保存先のファイル名>
を実行する。次に、これをDVDに焼けばよい…と思いきや、落とし穴が待っている。

Create Installation Media by Using NtdsutilCopy the installation media with SYSVOL to a destination domain controllerセクションを見て欲しい。
なんと、以下のように書いてある。

Use the following procedure to copy the installation media to the destination domain controller. Use Robocopy.exe to complete these steps so that you can preserve the access control list (ACL) on the SYSVOL shared folder.
「Robocopyを使って、ACLの状態を保持したまま、追加のDCにinstallation mediaをコピーしろ」とある! (少し補足すると、Robocopyには/copyallというオプションがあり、これをつけることによってACLも含めた全ての属性情報をコピーすることができる)
少し詳しい人ならすぐ分かると思うが、NTFSのACLは、DVDに焼いたら消えてしまう。ファイルシステムが違う(DVDはUDF)ので当然なのだが、つまりDVDに対してRobocopy /copyallを実行しても無駄ということである。
一体どうしろというのか、と思いつつページを読み進めると、『Robocopyで追加DCの「共有フォルダ(つまりネットワーク越し)」にコピーしろ』と書いてある。これって、ネットワーク越しに送らなければならないデータ量は減らせないということであり、今回の問題に対してはあまり解決にならない。

ちょっとひねった解決策(結論)
では、いきなりだが結論。Windows Server 2008はvhd(仮想ハードディスク)をマウントできることを利用する。

1. serverAにて、下記コマンドでinstallation mediaを作る(例としてC:\ifmに作る)
C:\>ntdsutil
ntdsutil: activate instance ntds
ntdsutil: ifm
ifm: create sysvol full C:\ifm
2. vhd(仮想ハードディスク)を作ってマウントする
3. vhdの中にRobocopy /copyallでC:\ifmをコピーする
4. vhdをDVDに焼いて、serverBの元に郵送する
5. serverBで、DVD内のvhdをローカルに取り出しマウントする(Dドライブにマウントすると仮定)
6. serverBでdcpromoを実行し、「次の場所のメディアからデータをレプリケートする」のところでvhd内のD:\ifmフォルダを指定する

vhdを使ってNTFS ACLを保持する、というところが、「その発想は無かったわ」なポイントだと思っている。

こんなニッチな情報が世の中の何人の役に立つか分からないが、ちょっと面白かったので記事にしてみた。

0 コメント:

コメントを投稿