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

Redis с пользовательскими данными dir: файл конфигурации systemd изменился автоматически?

Я запускаю Redis 4.0.9 на Ubuntu 18.04.1 LTS с настраиваемым каталогом данных для файла RBD.

Чтобы это работало, помимо обновления dir в redis.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)

Все шло нормально, пока однажды Redis не начал Failed opening the RDB file backup.rdb (in server root dir /var/lib/redis) for saving: Read-only file system снова ошибка, как будто ReadWriteDirectories не был установлен в новый каталог данных.

Я проверил /etc/systemd/system/redis.service и ReadWriteDirectories запись, которую я добавил, действительно пропала. Я добавил его обратно, и после перезапуска Redis снова работает нормально и может сохранять данные.

Мой вопрос: как могло /etc/systemd/system/redis.service изменить и мой ReadWriteDirectories линия исчезнет? Я единственный, у кого есть доступ к этой машине. Этот файл перезаписывается автоматически в некоторых случаях? Могу я это отключить?

Вы не должны редактировать служебные файлы systemd, поставляемые с пакетами. Их можно заменить в любое время, например при обновлении пакета.

Вместо этого вы должны создать файлы переопределения, содержащие изменения, которые вы хотите внести. Они будут сохранены, поскольку не являются частью обновляемого системного пакета.

Самый простой способ сделать это - запустить systemctl edit redis. Это создаст замещающий замещающий файл /etc/systemd/system/redis.service.d/override.conf, в котором вы можете разместить свои изменения (и соответствующий раздел):

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

Вы также можете создать этот каталог и разместить файлы, заканчивающиеся на .conf в нем вручную. Но не оставляйте каталог пустым, так как это отключит службу.

В любом случае запустите systemctl daemon-reload и вы готовы перезапустить свою службу.