Redis 报告只读文件系统,但事实并非如此

Joe*_*Joe 9 amazon-ec2 amazon-ebs redis

我在 Redis 日志中看到以下内容:

1182:M 30 Nov 14:27:00.028 * 1 changes in 900 seconds. Saving...
1182:M 30 Nov 14:27:00.029 * Background saving started by pid 1920
1920:C 30 Nov 14:27:00.029 # Failed opening .rdb for saving: Read-only file system
1182:M 30 Nov 14:27:00.130 # Background saving error
Run Code Online (Sandbox Code Playgroud)

Redis 配置为使用此目录:

ubuntu@XXXXX:~$ redis-cli
127.0.0.1:6379> config get dir
1) "dir"
2) "/mnt/persistent/redis-data"
Run Code Online (Sandbox Code Playgroud)

如果我成为 redis 用户,我可以很好地写入该目录:

ubuntu@XXXXX:~$ sudo su - redis
redis@XXXXX:~$ touch /mnt/persistent/redis-data/caniwrite
redis@XXXXX:~$ ls /mnt/persistent/redis-data/caniwrite
/mnt/persistent/redis-data/caniwrite
Run Code Online (Sandbox Code Playgroud)

它似乎以读写方式安装:

root@XXXXX:~# mount -l | grep /mnt/persistent
/dev/xvdh on /mnt/persistent type ext4 (rw,relatime,data=ordered)
Run Code Online (Sandbox Code Playgroud)

这是一个已安装的 AWS 弹性块存储。我正在运行Ubuntu。

有什么想法为什么Redis服务器会报告它无法写入,但redis用户可以?

Joe*_*Joe 12

我找到了答案,它证实这个问题与其他类似问题有很大不同!

我还不知道为什么,但我的服务文件已回滚到默认值。应该/etc/systemd/system/redis.service包含(并且之前已经包含):

[Service]
ReadWriteDirectories=-/mnt/persistent/redis-data
Run Code Online (Sandbox Code Playgroud)

  • 如果您的 systemd 单元配置是独立于您的自定义(包管理器、其他团队成员)进行管理的,那么您可以在任何单元上使用放置目录。在本例中为“/etc/systemd/system/redis.service.d/custom.conf” (4认同)