Windows Server 2016 Active Directory データベースの保守

どうも、Miyaです。

前回の記事では、ADのデータベースの概要ということで、各ファイルの役割であったり、動作についてご説明しました。

今回は、NTDSUtilと呼ばれるADのデータベース保守に使われるツールの使用方法をご紹介したいと思います。
ADは認証と認可を司る非常に重要な役割ですので、データベースの保守をキチッと理解した上で、日々の運用フローに取り入れることを推奨します。

スポンサーリンク:

NTDSUtilツールとは?

NTDSUtilツールとは、ADデータベースの保守ツールであり、スナップショットの作成オフライン最適化データベースファイルの移動などなど…様々な操作が行えます。
また、ディレクトリ復元モードへのサインインのパスワードの変更や、ドメインからドメインコントローラーを削除する際にも役立つツールになります。

コマンドラインツールにはなりますが、覚えておいて損はないツールですので、習得しておきましょう♪

データベースの保守

冒頭でもお話しした通り、ADは非常に重要な役割です。
冗長化は勿論のこと、データベースファイルの構造を理解した上で、日々の保守に取り入れるべきだと思います。

例えば、誤ってOUやユーザーオブジェクトを削除してしまった時なんかのためにも、スナップショットなんかが使えます。

足回りを十分に揃えておくことで、トラブルが発生した際の早期解決または復元が期待できます。

オフライン最適化

オフライン最適化とは、ディレクトリのサイズをコンパクトにすることで、パフォーマンスの向上へ繋がります。

ADでは、OUやユーザーなどのオブジェクト数が増えるにつれて、データベースへのAdd、Delete操作が必然と増えていきます。
それを繰り返してるうちに、ADのデータベースに断片化が生じ、パフォーマンスにも影響が及びます。

ADでは12時間ごとにデータベースファイルの最適化(オンライン最適化)が行われます。
オンライン最適化では、不要になったファイル情報(期限切れオブジェクトなど)をクリーンアップして、データベースファイルの空き領域を確保します。
ですが、データベースのサイズ自体をコンパクトにすることは出来ません。

そこで、行うべきがオフライン最適化になります。
オフライン最適化を実行することで、データベースファイルを縮小することができるほか、整合性やパフォーマンスを確保が実現できます。

但し、名前の通り、オフライン最適化はAD DSサービスを停止した状態で行うため、一時的にダウンタイムが発生します。
そのため、予めメンテナンスの周知や、DCが複数存在する環境では、認証がこないようサイトの切り離しをしておくことを推奨します。

コマンドラインツールから、AD DSサービスを停止しましょう。

この時、AD DSサービスに依存する、Kerberos、DNS、DFS-Rなどのサービスも停止されます。
ntdsutil

次に、データベースの最適化を行います。

ntdsutil

古いログファイルを削除して下さい メッセージが表示されますので、必要でしたら実行しておきましょう。

ついでにデータベースの整合性をチェックしておきます。

ntdsutil

作業が終わりましたら、quitコマンドでNTDSUtilツールを抜けて、AD DSサービスを起動しましょう。

スナップショット

スナップショットとは、その時のディレクトリ情報をキャプチャするサービスです。

スナップショットを採取しておくことで、その時のディレクトリサービスの状態を調べたり、ディレクトリ情報を検索したり等が行えます。
また、スナップショットをAD DSサービスにマウントし、LDIFDEからオブジェクトのエクスポートやインポートが可能になります。

例えば、オブジェクト情報を誤って変更してしまった場合、1日前のスナップショットがあれば、変更前のオブジェクトの値を確認が行えます。

コマンドプロンプトからNTDSUtilツールを起動します。
スナップショットを作成するには、以下コマンドを実行しましょう。

スナップショットが正常に生成されたことを示すメッセージが表示されるので、スナップショットのGUIDをメモしておきましょう。

尚、createコマンドでスナップショットが作成されるのですが、この時Windows Modules Installerサービスがリソースをかなり食らい尽くすので、一時的に負荷が上がります。
そのため、スナップショットの採取は認証のピーク時は避け、バッチ化して深夜帯にすることが望ましいです。

作成したスナップショットから中身を見るためには、ADにマウントする必要があります。
NTDSUtilツールを起動して、以下コマンドを実行しましょう。({}には、先ほどメモしたGUIDを入力します。)

ntdsutil

すると、C:\配下にマウントされたデータベースが確認できます。
ntdsutil

マウントされたデータからADのインスタンスを開始します。
コマンドプロンプトからdsamainツールを使います。

尚、ldapportは接続する際のポート番号指定になります。
本来、LDAPは389を使用しますが、もちろん現行サービスがこのポートを使用しているため、別で任意の開いているポートを指定してあげる必要があります。

「Microsoft Active Directory ドメイン サービスのスタートアップが完了しました」というメッセージが表示されたら、コマンドプロンプトは開いたまま、待機させておきましょう。

[Active Directory ユーザーとコンピューター]を開きます。
ルートノードを右クリック⇒[ドメインコントローラーを変更]をクリックします。
ntdsutil

[次のドメインコントローラーまたはAD LDSインスタンス]にチェックを入れ、[<ホスト名>:50000]を入力しましょう。
[状態]がオンラインになれば、無事接続されたので、[OK]をクリックします。
ntdsutil

管理コンソールに戻ると、スナップショット作成時点のオブジェクト状態が確認できます。
尚、スナップショットは読み込み専用であるため、新規作成などは行えません。
ntdsutil

また、スナップショットのオブジェクトを移動、コピー、復元する直接的な操作はございませんので、LDIFDEからエクスポートする必要があります。

用が済んだら、マウントを解除する必要があります。
先ほど待機させておいた、dsamainをCtrl+Cで停止させましょう。
ntdsutil

NTDSUtilツールからマウント解除するために、以下コマンドを実行しましょう。

ntdsutil

また、不要になったスナップショットはNTDUtilツールのDelete {GUID}で削除しておきましょう。

おわりに

いかがでしたか?スナップショットやオフライン最適化は、バッチ化しておいて定期的に実行しておくことが望ましいと私は思います。
バッチにしてタスクスケジューラなどでスケジューリングしておけば、自動化できますので手軽に実装できますよね。

今回ご紹介したNTDSUtilツールでは、データベースの移動や、メタ情報のクリーンアップ、IFMメディアの作成などでも用いられます。
機会があれば、その辺りもご紹介したいと思います(*´ω`*)

それでは、よいWindows Serverライフをっ♪

スポンサーリンク