如何重新定位 Red Hat Directory Server 9.0 的数据库目录

如何重新定位 Red Hat Directory Server 9.0 的数据库目录

我在虚拟机中运行 RHDS,但想将数据和日志存储在 SAN 上的单独卷上。分区是 /sdb1 上的 ext4fs,并挂载为 /data。

我尝试了这里描述的不同方法的多种变体。首先,在全新安装 RHDS 之后,在创建任何实例之前,我在 /data 上创建了文件夹并从 /var 链接到它们,如下所示:

mkdir /data/lib
mkdir /data/log
mkdir /data/lib/dirsrv
mkdir /data/log/dirsrv
rmdir /var/log/dirsrv
rmdir /var/lib/dirsrv
ln -s /data/lib/dirsrv/ /var/lib/
ln -s /data/log/dirsrv/ /var/log/

当我创建目录的实例(名为 esx02vm01)时,出现此错误:

[02/May/2013:09:51:45 -0400] - /etc/dirsrv/slapd-esx02vm01/dse.ldif:
nsslapd-errorlog: Cannot open errorlog file
"/var/log/dirsrv/slapd-esx02vm01/errors",
errors cannot be logged.  Exiting....

我认为 RHDS 可能在符号链接方面遇到了问题。在第二次尝试中,我使用默认位置的文件进行了实例化。确认目录正常工作后,我将其关闭。然后,我将 /var/lib 和 /var/log 下的实例文件夹移至 /data 文件夹,并修改该实例的 dse.ldif 文件以指向新的文件夹位置,如下所示:

mkdir /data/lib
mkdir /data/log
mkdir /data/lib/dirsrv
mkdir /data/log/dirsrv
cp -r --preserve=all /var/lib/dirsrv/slapd-esx02vm01 /data/lib/dirsrv/
cp -r --preserve=all /var/log/dirsrv/slapd-esx02vm01 /data/log/dirsrv/
vi /etc/dirsrv/slapd-esx02vm01/dse.ldif
* replace all /var/lib/dirsrv/slapd-esx02vm01 with /data/lib/dirsrv/slapd-esx02vm01*
:%s/\/var\/lib\/dirsrv\/slapd-esx02vm01\//\/data\/lib\/dirsrv\/slapd-esx02vm01\//g
* (6 substitutions on 6 lines)
* replace all /var/log/dirsrv/slapd-esx02vm01 with /data/log/dirsrv/slapd-esx02vm01
:%s/\/var\/log\/dirsrv\/slapd-esx02vm01\//\/data\/log\/dirsrv\/slapd-esx02vm01\//g
* (4 substitutions on 4 lines)
:qw
mv /var/lib/dirsrv/slapd-esx02vm01 /var/lib/dirsrv/old-slapd-esx02vm01
mv /var/log/dirsrv/slapd-esx02vm01 /var/log/dirsrv/old-slapd-esx02vm01
service dirsrv start

我尝试启动目录时遇到了同样的错误:

Starting dirsrv:
esx02vm01...[03/May/2013:08:56:00 -0400] - /etc/dirsrv/slapd-esx02vm01/dse.ldif:
nsslapd-errorlog: Cannot open errorlog file
"/data/log/dirsrv/slapd-esx02vm01/errors",
errors cannot be logged.  Exiting....

然后,我将错误文件移回原始位置,因此只有数据库文件位于 /data 上。启动目录时会记录这些错误:

[03/May/2013:09:17:17 -0400] - 389-Directory/1.2.11.15 B2013.100.2247 starting up
[03/May/2013:09:17:17 -0400] - mkdir_p : error -5950 (File not found.)
[03/May/2013:09:17:17 -0400] - Can't start because the database directory
"/data/lib/dirsrv/slapd-esx02vm01/db" either doesn't exist, or is not accessible
[03/May/2013:09:17:17 -0400] - start: Failed to init database, err=-1 Unknown error: -1

在每种情况下,我都确认报告的目录和文件存在,并且它们具有与原始目录和文件相同的所有权和权限。创建实例时,我以 root 身份运行 setup-ds-admin.pl,使用实例的帐户 rhds。我使用以下命令创建了 rhds 用户:

useradd -M rhds

重新定位 Red Hat Directory Server 实例的数据库的正确方法是什么?

-卢克

答案1

对于我来说,以下步骤使用 389-ds 1.2.9.14 成功运行:

  1. 创建新实例
  2. 确保 dirsrv 已停止:service dirsrv stop
  3. 将目录移动/var/lib/dirsrv/到数据分区;就我而言/mnt/389ds/data/
  4. /var/lib/dirsrv/创建从到的符号链接/mnt/389ds/data/
  5. 将目录移动/var/log/dirsrv/到数据分区;就我而言/mnt/389ds/log/
  6. /var/log/dirsrv/创建从到的符号链接/mnt/389ds/log/
  7. 启动服务器:service dirsrv start

我已经通过这种方式安装了多个生产服务器,它们都运行良好!

相关内容