Redis: Erro ao mover o arquivo DB temporário no destino final: Operação não permitida

4

Eu tenho uma instalação nodeBB que se baseia no Redis como o armazenamento de dados. É apenas um teste de instalação no momento enquanto eu resolvo todos os problemas. A instância Redis permaneceu por alguns dias, mas depois caiu com os seguintes erros nos logs:

3693:C 01 Dec 03:34:22.056 # Error moving temp DB file on the final destination: Operation not permitted
7089:M 01 Dec 03:34:22.155 # Background saving error
7089:M 01 Dec 03:34:28.067 * 1 changes in 900 seconds. Saving...
7089:M 01 Dec 03:34:28.068 * Background saving started by pid 3699
3699:C 01 Dec 03:34:28.069 # Error moving temp DB file on the final destination: Operation not permitted
7089:M 01 Dec 03:34:28.168 # Background saving error
7089:M 01 Dec 03:34:34.080 * 1 changes in 900 seconds. Saving...
7089:M 01 Dec 03:34:34.081 * Background saving started by pid 3700
3700:C 01 Dec 03:34:34.083 # Error moving temp DB file on the final destination: Operation not permitted
7089:M 01 Dec 03:34:34.181 # Background saving error

O Redis foi instalado como root no Centos 6.7 usando as seguintes instruções (o pacote padrão do yum é muito antigo) usando o método seguinte :

tar xzf redis-3.0.x.tar.gz
cd redis-3.0.1
make
make test
make install
cd utils
chmod +x install_server.sh
./install_server.sh

Diretório de trabalho conforme definido em /etc/redis/6379.conf :

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis/6379

Alguém pode sugerir o que estaria causando isso e a melhor forma de resolver o problema? Onde Redis tentará salvar arquivos temporários, qual usuário utilizaria e quais permissões resolveriam com segurança isso?

Também seria interessante um método livre de monitorar a instância do Redis, para que eu saiba se / quando ela cair.

6359.conf:

daemonize yes

pidfile /var/run/redis_6379.pid

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 0

loglevel notice

logfile /var/log/redis_6379.log


databases 16

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /var/lib/redis/6379


slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100


appendonly no


appendfilename "appendonly.aof"


appendfsync everysec


no-appendfsync-on-rewrite no


auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes


lua-time-limit 5000


slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-entries 512
list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10
    
por codecowboy 01.12.2015 / 09:45

2 respostas

0

Verifique se você tem o SELinux habilitado com sestatus . Se estiver habilitado (algo que é recomendado), por favor coloque-o no modo permissivo via setenforce 0 .

Após verificar novamente o seu sistema e eu acho que o erro irá desaparecer, verifique o log de segurança para ver o que foi bloqueado pelo SELinux, habilite-o em sua política e coloque o SELinux de volta no modo de execução (claro se você quiser seu servidor protegido pelo SELinux)

    
por 08.12.2015 / 20:34
0

O OP não está claro se a gravação em segundo plano foi bem-sucedida antes dos erros começarem, mas eu vi esse erro associado a problemas de espaço em disco - com a chance de declarar o óbvio, verifique com df se você acabou do espaço.

IMPORTANTE - o conf que você anexou sugere que seu servidor não está usando autenticação de senha (a diretiva requirepass ), não renomeia os comandos admin e não está vinculado a uma interface específica (a diretiva bind ). Esse é um possível risco à segurança - mais no link .

    
por 10.12.2015 / 20:46