Estou executando o RHDS em uma VM, mas gostaria de armazenar os dados e logs em um volume separado, ou seja, em uma SAN. A partição é ext4fs em / sdb1 e é montada como / data.
Eu tentei muitas variações das diferentes abordagens descritas aqui. Primeiro, após uma nova instalação do RHDS, antes de criar instâncias, criei as pastas em / data e as vinculei a partir de / var, da seguinte maneira:
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/
Quando eu crio uma instância (chamada esx02vm01) do diretório, recebo este erro:
[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....
Eu achei que o RHDS poderia estar tendo problemas com os links simbólicos. Na minha segunda tentativa, instanciei com arquivos nos locais padrão. Depois de confirmar que o diretório estava funcionando, desliguei. Em seguida, movi as pastas de instâncias em / var / lib e / var / log para a pasta / data e modifiquei o arquivo dse.ldif para essa instância para apontar para os novos locais de pasta, da seguinte maneira:
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
Eu recebi o mesmo erro ao tentar iniciar o diretório:
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....
Em seguida, movi o arquivo de erro de volta para o local original, para que apenas o arquivo de banco de dados estivesse em / data. Esses erros são registrados quando o diretório é iniciado:
[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
Em cada caso, confirmei que os diretórios e arquivos relatados existem e que eles têm a mesma propriedade e permissões que os diretórios e arquivos originais. Quando criei a instância, executei o setup-ds-admin.pl como root, usando a conta rhds para a instância. Eu criei o usuário rhds com o comando:
useradd -M rhds
Qual é a maneira correta de realocar os bancos de dados para uma instância do Red Hat Directory Server?
-Luke