Как переместить каталог базы данных для Red Hat Directory Server 9.0

Я использую RHDS на виртуальной машине, но хотел бы хранить данные и журналы на отдельном томе, который находится в сети SAN. Раздел - это ext4fs в /sdb1 и монтируется как /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

В каждом случае я подтверждал, что указанные каталоги и файлы существуют и имеют те же права и права доступа, что и исходные каталоги и файлы. Когда я создал экземпляр, я запустил setup-ds-admin.pl от имени пользователя root, используя учетную запись rhds для этого экземпляра. Я создал пользователя rhds с помощью команды:

useradd -M rhds

Как правильно переместить базы данных для экземпляра Red Hat Directory Server?

Люк

1 ответ

Следующая процедура успешно работает для меня с 389-й версии 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

Я установил несколько производственных серверов таким образом, и все они работают хорошо!

Другие вопросы по тегам