ディスク障害から fsck してなんとか生き返った(ファイルシステムの整合性をなんとかとったために一部のファイルが消えている可能性のある) 検証用 OpenLDAP システム上で、
slapd が起動しなくなった。
slapd を起動しようとすると messages にこのようなログを残して起動に失敗。
Nov 9 11:04:30 kit slapd[31538]: daemon: socket() failed errno=97 (Address family not supported by protocol) Nov 9 11:04:30 kit slapd[31538]: bdb_initialize: Sleepycat Software: Berkeley DB 4.1.25: (August 21, 2003) Nov 9 11:04:30 kit slapd[31538]: error loading ucdata (error -127) Nov 9 11:04:30 kit slapd[31538]: slapd stopped. Nov 9 11:04:30 kit slapd[31538]: connections_destroy: nothing to destroy.
なんとなく
socket() システムコールのエラーメッセージに目が行きつつ、 google すると、
とりあえず、 debug level をあげてログをみろ、とのこと。
debug level は 255 にしろ、257 にしろ、6 にしろ、など人それぞれ。
slapd -u ldap -d 256 やら
-d 257 やら -d 6 やらいろいろ試すものの、あんまり変わりなさそう。
slapd.conf(5) より。
1 trace function calls
2 debug packet handling
4 heavy trace debugging
8 connection management
16 print out packets sent and received
32 search filter processing
64 configuration file processing
128 access control list processing
256 stats log connections/operations/results
512 stats log entries sent
1024 print communication with shell backends
2048 entry parsing
では、strace してみる。
open("/usr/local/etc/openldap/slapd.conf", O_RDONLY) = 7
fstat64(7, {st_mode=S_IFREG|0640, st_size=3799, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7189000
read(7, "# $OpenLDAP: pkg/ldap/servers/sl"..., 4096) = 3799
open("/usr/local/etc/openldap/schema/core.schema", O_RDONLY) = 8
fstat64(8, {st_mode=S_IFREG|0444, st_size=17290, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7188000
read(8, "# $OpenLDAP: pkg/ldap/servers/sl"..., 4096) = 4096
read(8, "type ( 2.5.4.22 NAME \'teletexTer"..., 4096) = 4096
read(8, "\'RFC2256: enhanced search guide\'"..., 4096) = 4096
read(8, "\t\tdestinationIndicator $ preferr"..., 4096) = 4096
read(8, "1274/2247: domain component\'\n\tEQ"..., 4096) = 906
read(8, "", 4096) = 0
close(8) = 0
munmap(0xb7188000, 4096) = 0
open("/usr/local/share/openldap/ucdata/ctype.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/openldap/ucdata/case.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/openldap/ucdata/decomp.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/openldap/ucdata/cmbcl.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/openldap/ucdata/num.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/openldap/ucdata/comp.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/openldap/ucdata/kdecomp.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "error loading ucdata (error -127"..., 34error loading ucdata (error -127)) = 34
time([1131501870]) = 1131501870
getpid() = 31538
rt_sigaction(SIGPIPE, {0xb7400180, [], SA_RESTORER, 0xb734fc08}, {SIG_DFL}, 8) = 0
send(3, "<167>Nov 9 11:04:30 slapd[31538"..., 69, 0) = 69
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
write(2, "slapd stopped.\n", 15slapd stopped.) = 15
time([1131501870]) = 1131501870
getpid() = 31538
rt_sigaction(SIGPIPE, {0xb7400180, [], SA_RESTORER, 0xb734fc08}, {SIG_DFL}, 8) = 0
send(3, "<167>Nov 9 11:04:30 slapd[31538"..., 50, 0) = 50
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
close(3) = 0
write(2, "connections_destroy: nothing to "..., 41connections_destroy: nothing to destroy.) = 41
time([1131501870]) = 1131501870
getpid() = 31538
rt_sigaction(SIGPIPE, {0xb7400180, [], SA_RESTORER, 0xb734fc08}, {SIG_DFL}, 8) = 0
socket(PF_UNIX, SOCK_DGRAM, 0) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
connect(3, {sa_family=AF_UNIX, path="/dev/log"}, 16) = 0
send(3, "<167>Nov 9 11:04:30 slapd[31538"..., 76, 0) = 76
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
shutdown(5, 2 /* send and receive */) = -1 ENOTSOCK (Socket operation on non-socket)
close(5) = 0
shutdown(4, 2 /* send and receive */) = -1 ENOTSOCK (Socket operation on non-socket)
close(4) = 0
exit_group(1) = ?
[root@kit ldap]#
どうやら問題は
error loading ucdata (error -127)
こっちだったらしい。
わるい環境。
[root@kit ldap]# ls /usr/local/share/ info man [root@kit ldap]#
よい環境。
[root@kat share]# ls /usr/local/share/ info man openldap [root@kat share]# ls -F openldap/ ucdata/ [root@kat share]# ls -F openldap/ucdata/ case.dat cmbcl.dat comp.dat ctype.dat decomp.dat kdecomp.dat num.dat [root@kat share]#
ちゃんとした環境から tar でたばねて ucdata をもってくる。
でも、まだ終わらないらしい。
Nov 9 11:20:42 kit slapd[31684]: could not open config file "/usr/local/etc/openldap/schema/courier.schema": No such file or directory (2)
[root@kit share]# ls -F /usr/local/etc/openldap/schema/ README courier.schema@ nis.schema corba.schema inetorgperson.schema nis.schema.default corba.schema.default inetorgperson.schema.default openldap.schema core.schema java.schema openldap.schema.default core.schema.default java.schema.default qmail.schema cosine.schema misc.schema cosine.schema.default misc.schema.default [root@kit share]# ls -l /usr/local/etc/openldap/schema/courier.schema lrwxrwxrwx 1 root root 35 5月 13 21:39 /usr/local/etc/openldap/schema/courier.schema -> /etc/openldap/schema/courier.schema [root@kit share]#
ucdata と同じように正常な環境から scp でもってくる。
[root@kat share]# scp /etc/openldap/schema/courier.schema kit:/etc/openldap/schema/ courier.schema 100% 2783 264.5KB/s 00:00 [root@kat share]#
で無事、解決。

Leave a comment