Назад | Перейти на главную страницу

Как переместить каталог базы данных для 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?

-Люк

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

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