mongod 启动后挂载了 zfs:如何设置启动顺序?

mongod 启动后挂载了 zfs:如何设置启动顺序?

我认为这是一个相当简单的问题,但我似乎无法找到解决办法。

我在 Ubuntu 18.04.3 上,并在启动时使用 mongo-data 正确安装 zfs 卷,配置如下:/etc/systemd/system/multi-user.target.wants。

[Unit]
Description=ZFS startup target

[Install]
WantedBy=multi-user.target

问题是,这种情况发生在 mongod 服务启动之后,导致 mongod 失败。

[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=root
Group=root
EnvironmentFile=-/etc/default/mongod
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
PIDFile=/var/run/mongodb/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
Restart=always
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target

我阅读了有关WantedByRequiresAfter指令的内容,但我不确定我是否足够了解它们,可以操作它们。

答案1

我在另一项服务中遇到了非常类似的问题,该服务想要在其文件(位于 ZFS 数据集上)可用之前启动。

我使用一个非常简单的 systemd 覆盖解决了这个问题。你也可以这样做:

# cat /etc/systemd/system/mongod.service.d/zfs.conf 
[Unit]
Requires=zfs.target
After=zfs.target

一段时间后sudo systemctl daemon-reload(当然是重启后)该功能就会生效。尽情享用吧!

请记住不要编辑软件包附带的 systemd 单元,因为更新软件包时您的更改不会被保留。请使用覆盖文件(例如上述文件)。

答案2

您需要使用 RequiresMountsFor;请参阅

man systemd.directives

例如,选项将类似于 RequiresMountsFor=[mountpoint]

RequiresMountsFor=/zfsmount

相关内容