Mac OS X Server で OpenLdap が起動しない

投稿者: | 2011/09/16

Mac OS X Server で OpenLdap 用いてユーザ管理をしているとき,何かの拍子でログインができなくなってしまうことがあれば,まずはログを確認みましょう.

/var/log/system.log を確認したとき

May 30 14:23:42 hostname com.apple.launchd[1] (org.openldap.slapd[190]): Exited with exit code: 1
May 30 14:23:42 hostname com.apple.launchd[1] (org.openldap.slapd): Throttling respawn: Will start in 10 seconds

/var/log/slapd.log を確認したとき

May 30 15:20:40 hostname slapd[932]: bdb(dc=hostname,dc=example,dc=com): PANIC: fatal region error detected; run recovery
May 30 15:20:40 hostname slapd[932]: bdb_db_open: Database cannot be opened, err -30978. Restore from backup!
May 30 15:20:40 hostname slapd[932]: bdb(dc=hostname,dc=example,dc=com): DB_ENV->lock_id_free interface requires an environment configured for the locking subsystem
May 30 15:20:40 hostname slapd[932]: bdb(dc=hostname,dc=example,dc=com): txn_checkpoint interface requires an environment configured for the transaction subsystem
May 30 15:20:40 hostname slapd[932]: bdb_db_close: txn_checkpoint failed: Invalid argument (22)
May 30 15:20:40 hostname slapd[932]: backend_startup_one: bi_db_open failed! (-30978)
May 30 15:20:40 hostname slapd[932]: bdb_db_close: alock_close failed
May 30 15:20:40 hostname slapd[932]: slapd stopped.
May 30 15:20:40 hostname slapd[932]: connections_destroy: nothing to destroy.

このようなエラーがたくさん出力されている場合,何らかの原因で slapd が起動できていないことを表します.

次に,

# /usr/libexec/slapd -Tt

を実行したとき

overlay_config(): warning, overlay "dynid" already in list
bdb(dc=hostname,dc=example,dc=com): PANIC: fatal region error detected; run recovery
bdb_db_open: Database cannot be opened, err -30978. Restore from backup!
bdb(dc=hostname,dc=example,dc=com): DB_ENV->lock_id_free interface requires an environment configured for the locking subsystem
backend_startup_one: bi_db_open failed! (-30978)
slap_startup failed (test would succeed using the -u switch)

このようなエラーが出た場合は,OpenLdap のデータベースが壊れています.
この場合は,DB のバックアップをとってから

# cp -R /var/db/openladp /var/db/openladp.backup

DB の修復を行いましょう.

# db_recover -h /var/db/openldap/openldap-data/

これで以下のような結果が出れば DB は修復されました.
slapd が起動するようになるはずです.

# /usr/libexec/slapd -Tt
overlay_config(): warning, overlay "dynid" already in list
config file testing succeeded

参考ページ:
Mac OS X 10.5 Server OpenLdapのDBが壊れた・・

カテゴリー: Mac