Q

全社規模でActive Directoryを導入することが決まり,ドメイン・コントローラ(DC)を複数台セットアップしました。ところが本格稼働時にOSを起動すると一部のDCだけシステム・エラーのようなポップアップが表示され正常に起動しません(図1)。システム・エラーのダイアログに表示されたメッセージにしたがって,ディレクトリ・サービスの復元モードで起動し,イベント・ログを参照しましたが,何が原因なのかさっぱり分かりません(図2)。恐らく,カスタマイズ時の設定ミスにより発生したエラーだと思いますが,セキュリティ・パッチの適用など様々なことを実施したため,どれが原因なのか特定できない状態です。何が原因なのでしょうか。


図1●ドメイン・コントローラの起動時に発生するシステム・エラー
[OK]ボタンを押すと,OSはシャットダウンし,正常に機能しない

A

ポップアップしたメッセージを見る限り,lsass.exeに何らかの問題が発生していると思われます。lsass.exeは,Kerberos Key Distribution Centerサービス,Net Logonサービス,NTLM Security Support Providerサービス,IPSEC Policy Agentサービス,Security Accounts Managerサービスを提供しており,認証処理の中心になるプロセスです。


△ 図をクリックすると拡大されます
図2●イベント・ログに書き込まれたエラー

 図2のイベント・ログで注目したいのは,「NTDS(300)ログのフラッシュ中にセクション0を書き込めません。エラー-1032が発生しました。」と「NTDS(300)予期しないエラー-510が発生したため,データベースの回復または復元に失敗しました。」の2つです。

 Active Directoryは,ディレクトリ・データを格納するデータベース・エンジンとしてJetを使用しています。これは,ESENT(Extensible Storage Engine)と呼ばれているもので,Exchange Serverも同様のエンジンを使用しています。実は上記の2つのログに記録されている「エラー-1032」と「エラー-510」のエラー番号はシステム・エラーだと思って調べてみても意味がありません。Jetのエラー・コードだからです。NTDS(300)の300は,lsass.exeのPIDです。

 Jetのエラー・コードは,米MicrosoftのWebサイト(該当サイト)に掲載されています。これによると,Jetエラー-510は「#define JET_errLogWriteFail -510 /* Failure writing to log file */」で,-1032は「#define JET_errFileAccessDenied -1032 /* Cannot access file, the file is locked or in use */」となっており,どちらもファイル・アクセスに問題があるようです。

 こうしたことを踏まえると,恐らく,Active Directoryのデータベースであるntds.ditファイルかあるいは,そのファイルを格納するディレクトリ(デフォルトではC:\WINNT\NTDS)のアクセス権に問題があり,lsass.exeがファイル・アクセスに失敗したと考えられます。Directory Services Cannot Start" Error Message When You Start Computer(該当サイト編集部注:現在アクセスできません)にあるように,Active Directoryデータベースに対しては,AdministratorsとSystemにフルコントロールのファイル・アクセス権が必要です。

小森博司