【連載】

にわか管理者のためのActive Directory入門

【第81回】Active Directoryの障害復旧(3) : データベースの検査・修復

[2010/03/01 09:00]井上孝司 ブックマーク ブックマーク

  • サーバ/ストレージ

サーバ/ストレージ

今週は、Active Directoryデータベースの障害復旧作業のうち、データベースの検査・修復について解説する。

なお、この作業を行うにはディレクトリサービス復元モードでの起動(Windows 2000 Server, Windows Server 2003)、あるいはActive Directory関連サービスの停止(Windows Server 2008)が必要になるが、それについては本連載の第79回を参照していただきたい。

Active Directoryデータベースの検査

前回の連載で解説したように、Active Directoryデータベースに変更を加える際には、先にログをとってから変更作業を行うようにしている。そのため、耐障害性は比較的高い。しかし、それでも完全とはいいきれず、データベースに論理的矛盾や破損が発生する可能性は残る。

そこで、ntdsutilコマンドを使って、データベースの障害チェックを行えるようになっている。まず、Active Directoryデータベースの内容に論理的矛盾がないかどうかを検査するセマンティクス分析機能を行う際の手順について解説する。

  1. コマンドプロンプトで「ntdsutil」と入力して、ntdsutilコマンドを実行する。
  2. 「Semantic database analysis」と入力する。この操作により、プロンプトが「Semantic database analysis」に切り替わる。
  3. 「go」と入力すると、Active Directoryデータベース(Ntds.dit)に対するセマンティクス分析を開始する。
  4. 分析後にレポートを精製・出力する。出力先は、ntdsutilコマンドを実行したときのカレントフォルダで、ファイル名は「Dsdit.dmp.n」となる(末尾のnは整数で、このコマンドを実行するその都度、1ずつ増える)。このため、コマンド実行前に、レポートを出力させたいフォルダに移動しておくのが望ましい。
  5. 作業が完了したら、「q」(または「quit」)と入力して、ntdsutilのプロンプトに戻る。
  6. 「q」(または「quit」)と入力して、ntdsutilコマンドを終了してコマンドプロンプトに戻る。

なお、Semantic database analysisプロンプトでは、セマンティクス分析以外に利用可能な機能として、以下のものがある。

  • getコマンドを使用すると、Active Directoryデータベースから任意の番号のレコードを取り出すことができる。構文は「get <%d>」で、「%d」に番号を指定する。
  • 詳細モードのオン/オフを切り替えることができる。「verbose on」と入力すると詳細モードがオンになり、「verbose off」と入力するとオフになる。

Active Directoryデータベースの整合性チェック

続いて、Active Directoryデータベースの整合性チェックを行う際の手順について解説する。

  1. コマンドプロンプトで「ntdsutil」と入力して、ntdsutilコマンドを実行する。
  2. 「Files」と入力する。この操作により、プロンプトが「Files」に切り替わる。
  3. 「recover」と入力すると、esentutlコマンドを使用して、ログの内容をすべてデータベースに反映させる。タイミングによっては、ログに記録しただけで、まだデータベースに反映していない操作が残っている可能性があるので、メンテナンス前に必ずrecoverコマンドを実行する必要がある。
  4. recoverコマンドの処理が完了したら、「integrity」と入力する。すると、esentutlコマンドを使ってActive Directoryデータベースの整合性チェックを行い、データベースの破損を検出する。
  5. 作業が完了したら、「q」(または「quit」)と入力して、ntdsutilのプロンプトに戻る。
  6. 「q」(または「quit」)と入力して、ntdsutilコマンドを終了してコマンドプロンプトに戻る。

SIDの重複事故解決

Active Directoryでは、個々のオブジェクトに対してSID(Security Identifier)と呼ばれる一尉の識別番号を割り当てて区別を行っている。通常、SIDが同一データベース内で重複する事態は発生しないはずだが、まれに、複数のオブジェクトに対して同じSIDを割り当てる重複事故が発生することがある。その場合の対処手順は以下の通りだ。

  1. コマンドプロンプトで「ntdsutil」と入力して、ntdsutilコマンドを実行する。
  2. 「security account management」と入力する。この操作により、プロンプトが「Security Account Maintenance」に切り替わる。
  3. 「connect to server <サーバのDNS名>」と入力する。この操作により、操作対象となるサーバに接続する。
  4. まず、SIDが重複しているオブジェクトがないかどうかを調べるため、「check duplicate SID」と入力する。この操作により、Active Directoryデータベースを検査して、重複の有無を確認する。
  5. 重複があった場合、同じプロンプトで「cleanup duplicate sid」と入力する。この操作により、重複したSIDを削除して問題を解決する。
  6. 作業が完了したら、「q」(または「quit」)と入力して、ntdsutilのプロンプトに戻る。
  7. 「q」(または「quit」)と入力して、ntdsutilコマンドを終了してコマンドプロンプトに戻る。

なお、これら一連の操作については、「Dupsid.log」というファイル名を持つログファイルを出力する。ログファイルの名前は、ntdsutilのプロンプトで「log file <ファイル名>」と入力することで変更できる。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る