具有自定义数据目录的 Redis:systemd 配置文件是否自动更改?

具有自定义数据目录的 Redis:systemd 配置文件是否自动更改?

我在 Ubuntu 18.04.1 LTS 上运行 Redis 4.0.9,并为 RBD 文件设置了自定义数据目录。

为了使其工作,除了更新dirredis.conf新位置之外,我还必须更新/etc/systemd/system/redis.service和设置:

ReadWriteDirectories=-/my/custom/data/dir

(如此处所述:https://stackoverflow.com/questions/44814351/failed-opening-the-rdb-file-read-only-file-system

一切都运行正常,直到突然有一天 RedisFailed opening the RDB file backup.rdb (in server root dir /var/lib/redis) for saving: Read-only file system再次开始给出错误,好像ReadWriteDirectories没有设置到新的数据目录。

我检查了一下/etc/systemd/system/redis.serviceReadWriteDirectories我添加的条目确实消失了。我将其添加回去,重新启动后,Redis 又可以正常工作并可以保存数据。

我的问题是:怎么会/etc/systemd/system/redis.service改变并且我的ReadWriteDirectories线路消失?我是唯一有权访问这台机器的人。在某些情况下,此文件会被自动覆盖吗?我可以禁用它吗?

答案1

您无需编辑软件包附带的 systemd 服务文件。这些文件可随时替换,例如软件包更新时。

相反,你应该创建包含要进行的更改的覆盖文件。这些文件将被保留,因为它们不是要更新的系统包的一部分。

最简单的方法是运行systemctl edit redis。这将创建一个覆盖插入文件/etc/systemd/system/redis.service.d/override.conf,您可以在其中放置更改(以及适当的部分):

[Service]
ReadWriteDirectories=-/my/custom/data/dir

您也可以创建该目录并手动将以 结尾的文件放入.conf其中。但不要将目录留空,因为这将禁用该服务。

无论哪种情况,运行systemctl daemon-reload后您就可以重新启动服务了。

答案2

更改 redis.confdir参数后,它给了我Can't chdir to '/new_dir/redis': Permission denied

这是因为SELinux权限问题。https://help.hostry.com/knowledge-base/how-to-set-selinux-to-permissive-mode/

运行此命令:sudo setenforce 0。这将开始工作。

虽然这不是正确的做法。您应该创建配置以允许 redis 在 SELinux 中访问该文件夹。

相关内容