連載
» 2012年10月25日 17時13分 公開

Windows Server 2012クラウドジェネレーション:第3回 強化されたActive Directory (3/3)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2|3       

 Windowsネットワークの健全性を保つには、Active Directoryのドメイン・コントローラ(DC)の安定運用が欠かせない。DCにはActive Directoryのすべてのオブジェクトが集約され、さまざなサービスなどがこれに依存して動作しているからだ。このためには、複数台のDCを用意し、それらのサーバにはあまり余計なサービスなどを動作させずに利用するというのが一般的に推奨される運用形態である。DCとして利用するサーバは、仮想マシンを混在させてもよいが、最低でも1台は物理マシンを要するのが望ましいとも言われている。その理由や注意点などについては以下の記事を参照していただきたい。

 DCを仮想環境で運用するにはいくつか注意するべき点があるが、Windows Server 2012では仮想環境でも利用できるようにActive DirectoryおよびHyper-Vにいくつか機能が追加されている。以下、それについて解説する。

仮想化に対する改善点1――ドメイン・コントローラのスナップショット対策

 Hyper-Vなどの仮想マシン上にActive Directoryのドメイン・コントローラ(DC)をインストールすることは可能だが、その運用には注意する必要がある。Active Directoryは通常、複数のDC間でデータベースを複製しながら動作しているが、DCが動作している仮想マシンを複製したり、スナップショットで(もしくはバックアップを使って)環境を以前の状態に戻したりすると、各DCが持つデータベースの内容に矛盾や不整合が生じてしまうからだ。DCは、データベースの更新状態(バージョン)を表すために「USN(Update Sequence Number)」というシーケンス番号カウンタを持っており、データベースに変更が生じた場合は、変更内容と共にこのUSN番号をほかのDCに通知している(データを送信後、USN番号を1つ増加させる)。受信した側のDCはこのUSN番号を見ることにより、どの要求までを受信/処理したかを判断している。

 DCをインストールした仮想マシンをスナップショットやバックアップからの復元などで以前の状態に戻すと、USN番号が元に戻ってしまい(USNのロールバック)、ほかのDCから見るとすでに受信済みのUSN番号(と、新しいデータベース更新要求)をまた受信することになる。これではデータベースの正当性を保証できないので、USNがロールバックしていることを検出するとActive Directoryの複製を停止する。この結果、各DCのデータベース内容に矛盾が生じたり、残留オブジェクト(特定のDC上にのみ存在し、正しく複製されていないオブジェクト)が発生したりする。このような問題が発生するため、仮想マシンに対するスナップショットからの復元などの操作は基本的には禁止されている。DCの障害などで復旧が必要な場合は、定期的なDCバックアップから復元モードを使って戻すといった操作を行うことになっている。

 だが仮想マシンを使った運用が一般的になった現在では、スナップショットによる復元も可能なら利用したいところだ。そこでWindows Server 2012ではこのような運用を禁止するのではなく、スナップショットによる復元を行っても問題なく動作するように、Active DirectoryとHyper-Vにそれぞれ機能が追加された。

 具体的には、Hyper-V上の仮想マシンに「VM-generation ID」という世代識別用の128bitの数値を割り当て(ハイパーバイザが割り当てる)、スナップショットから復元したり、仮想マシンをコピーして作成したりした場合にはこのID数値が変更されることになっている(これもハイパーバイザの役割)。単なる仮想マシンの停止や再起動ではVM-generation IDはずっと同じままで変わらない。具体的には、次のような操作を行うとVM-generation IDの値が変更される。

VMのイベント VM-generation ID の変更
VMの一時停止/再開 変更されない
VMのリブート 変更されない
VMのホストのリブート 変更されない
VMのスナップショットの適用 変更される
VMのライブ・マイグレーション 変更されない
VMのコピー/インポート/クローン 変更される
VMの構成の変更 (未定義)
VM-generation IDの主な変更タイミング
Windows Server 2012およびWindows 8のHyper-Vでは、各仮想マシンの世代を識別するためにVM-generation IDを導入している。VM-generation IDは128bitのランダムな数値であり、ここで示したような操作を行うと値が変更される。値の大小は関係なく、以前の値と異なるという点だけが意味を持つ。ゲストの仮想マシンはこの値をBIOSのACPI経由で受け取り、ロールバックが起こったことを検知する。

 Windows Server 2012のActive Directoryでは、仮想マシン上で動作していることを検出するとこのVM-generation IDの値を(デバイス・ドライバ経由で)調べ、以前の値と異なっている場合はロールバックが発生したと判断する。そして、RIDプールの破棄やInvocation ID(起動ID、DCを識別する番号)の再生成などを行った後、「Active Directoryの権限のない復元(⇒TechNetサイト参照)」でほかのDCから必要なデータを複製する。Active DirectoryのDCをバックアップから復元させる操作を自動的に行っているようなものと考えればよいだろう。

 ただしこの機能を利用するためには、仮想環境がVM-generation IDをサポートしている必要がある。現在のところ、これをサポートしている仮想環境はWindows 8およびWindows Server 2012のHyper-Vだけである。ゲストOS側には、このVM-generation IDを取得するためのドライバ(Hyper-Vの統合サービスに含まれている)を組み込む必要がある。

仮想化に対する改善点2――DCの複製対応

 Active Directory DCの障害復旧や処理能力増強、新拠点の展開、テスト用途などのために、既存のドメインに新しいDCを追加したいことがある。このような場合、従来は新しくDC用のサーバをドメインへ追加してDCへ昇格させるという操作を、DCの台数分繰り返す必要があった。台数が少なければ手動でもよいが、データセンターやクラウド環境のように、大量に何度も展開するようなケースではこれは手間である。

 このような需要に対し、Windows Server 2012のActive Directoryでは、追加のDCを仮想マシンの複製(クローニング)で展開できるように強化している。具体的にはDCを1台仮想マシン上に作成後、構成ファイルなどを指定のフォルダに保存し、それをマスタにして複製(VHDファイルをコピーしたり、仮想マシンとしてエクスポート/インポートする)するだけで、DCを簡単に大量展開できるようになっている。なお複製できるのはWindows Server 2012やWindows 8のHype-Vの仮想マシン上で動作するDCだけである。物理PCのDCをディスク・クローニングなどで複製することはできない。またActive DirectoryのドメインのFSMO(ある特定の役割を持つDC。通常はドメイン内の1台目のDCが担当する)がWindows Server 2012である必要がある。

sysprepの仮想マシン化対応

 これは特にActive Directoryとは関係なく、仮想化に関する機能強化点であるが、ここで触れておく。

 仮想マシン上にマスタとなるOSイメージを作成する場合、その最後でsysprepコマンド(システム準備ツール)を使って「一般化」するのが普通である。

 Windows Server 2012のsysprepコマンドでは、新たに「/mode:vm」というオプションが追加されている。これを指定すると、起動時のハードウェア・チェックなどが一部省略される。その結果、高速に起動する。仮想マシンのように、ハードウェア構成が変わらない環境で利用するなら、これをオンにしておくとよいだろう。


 今回はWindows Server 2012のActive Directoryの概要といくつかの特徴的な機能について見てきた。これら以外の機能については今後解説する。


「Windows Server 2012クラウドジェネレーション」のインデックス

Windows Server 2012クラウドジェネレーション

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。