为什么 systemd 随机挂载远程 NFS 目录失败?

为什么 systemd 随机挂载远程 NFS 目录失败?

乌班图20.04。我有一个systemd挂载远程 NFS 路径的挂载文件。挂载文件如下所示:

[Unit]
Description=/userdata
Wants=network-online.target
After=network-online.target

[Mount]
What=10.20.30.40:/data/users
Where=/userdata
Type=nfs
Options=nofail,rw,soft,intr,actimeo=60

[Install]
WantedBy=multi-user.target

随机地,该路径将无法在重新启动时安装。它已启用。如果我手动启动,它工作正常并安装/userdata/目录。

检查挂载文件的状态会出现“网络无法访问”错误:

$ sudo systemctl status userdata.mount
● userdata.mount - /userdata
     Loaded: loaded (/lib/systemd/system/userdata.mount; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2021-06-07 09:56:27 EDT; 6h ago
      Where: /userdata
       What: 10.20.30.40:/data/users

Jun 07 09:56:27 hostname mount[474]: mount.nfs: Network is unreachable
Jun 07 09:56:27 hostname systemd[1]: userdata.mount: Mount process exited, code=exited, status=32/n/a
Jun 07 09:56:27 hostname systemd[1]: userdata.mount: Failed with result 'exit-code'.
Jun 07 09:56:27 hostname systemd[1]: Failed to mount /userdata.
Warning: journal has been rotated since unit was started, output may be incomplete.

从网络搜索来看,这是一个常见问题。不过,它早于systemd,因此最常见的解决方案是“systemd为其编写一个挂载文件”。在这种情况下,我已经在使用了systemd,所以这没有帮助。

我找到了一个拱门维基评论建议我应该能够systemd-networkd-wait-online.service解决这个问题。但是,该命令$ sudo systemctl status systemd-networkd-wait-online.service显示该单元文件已在我的系统上启用。

所以,我不知道还能做什么。如何在启动时一致地安装此路径?

编辑

我尝试替换Wants=network-online.targetRequires=network-online.target,但这并没有解决或以其他方式影响问题。

答案1

我认为你的问题是Wants=network-online.target而不是Requires=network-online.target

Wants=要求network-online.target启动时,它可能会忽略network-online.target.然而,对于 NFS 来说,这显然是必不可少的。Requires=严格要求成功启动和运行服务。我认为您的网络在启动过程中有点不稳定。

systemd 中的 Wants= 与 Requires=

相关内容