无法重新启动 nfs-server.service:事务顺序是循环的

无法重新启动 nfs-server.service:事务顺序是循环的

NFS 在当前配置下已经工作了一年多,但最近出现了这个问题:

Ubuntu 20.04 内核 5.40.0-40 NFS nfs-kernel-server/focal-updates,focal-security,现在 1:1.3.4-2.5ubuntu3.3 amd64 [已安装]

systemctl restart nfs-server

Failed to restart nfs-server.service: Transaction order is cyclic. See system logs for details.
See system logs and 'systemctl status nfs-server.service' for details.

系统控制状态:

 systemctl status nfs-server
 nfs-server.service - NFS server and services
 Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
 Drop-In: /run/systemd/generator/nfs-server.service.d
         └─order-with-mounts.conf
 Active: inactive (dead)

 Jul 03 06:37:38 acer systemd[1]: export-3T.mount: Found ordering cycle on nfs-server.service/start
 Jul 03 06:37:38 acer systemd[1]: export-3T.mount: Found dependency on export-3T.mount/start
 Jul 03 06:37:38 acer systemd[1]: export-3T.mount: Unable to break cycle starting with export-3T.mount/start
 Jul 03 06:43:47 acer systemd[1]: export-3T.mount: Found ordering cycle on nfs-server.service/start
 Jul 03 06:43:47 acer systemd[1]: export-3T.mount: Found dependency on export-3T.mount/start
 Jul 03 06:43:47 acer systemd[1]: export-3T.mount: Unable to break cycle starting with export-3T.mount/start
 

来自日记

systemd[1]: Requested transaction contains an unfixable cyclic ordering dependency: Transaction order is cyclic. See system logs for det>
systemd[1]: export-3T.mount: Unable to break cycle starting with export-3T.mount/start
systemd[1]: export-3T.mount: Found dependency on export-3T.mount/start
systemd[1]: export-3T.mount: Found ordering cycle on nfs-server.service/start

/etc/fstab

UUID=uid /mnt/3T ext4 defaults 0 0 
/mnt/3T /export/3T nfs bind 0 0 

/etc/出口

/export/3T 10.0.0.0/24(rw,nohide,insecure,no_subtree_check,async) 

答案1

更新

我最近又被这个问题影响了,下面的方法并没有解决这个问题。我确实找到了一个对我们来说稳定的“正确”(?)修复。

解决方案是不要将坐骑放入/etc/fstab.相反,创建一个systemd 您的安装点的单位。有用的链接包括:

就您而言,您希望/etc/systemd/system/mnt-3T.mount看起来像这样(未经测试):

[Unit]
Description=3T mount
After=network.target

[Mount]
Where=/mnt/3T
Type=nfs
Options=bind

[Install]
WantedBy=multi-user.target

(我以前从未做过 NFS 绑定安装;您可能需要调整Requires=After=实现您想要的顺序)

原答案

这有点旧了,但我在几个地方看到了这个问题的各种不同风格的报告。对我来说,关键是https://bbs.archlinux.org/viewtopic.php?id=183999或者更具体地说,添加DefaultDependencies=False/usr/lib/systemd/system/nfs-client.target

错误消息非常清晰,但不一定直观。systemd单元之间的依赖关系存在循环。问题是如何打破这个循环。这个博客更详细地描述了该问题。

此外,systemd 单元手册页描述了默认依赖项。例如,目标.target 手册页包括以下内容:

默认依赖项

DefaultDependencies=no除非设置,否则将添加以下依赖项:

  • 目标单位将自动补充所有配置的类型依赖项Wants=Requires=类型依赖项,After=除非DefaultDependencies=no在指定单位中设置。请注意,Wants=orRequires=必须在目标单元本身中定义 - 例如,如果您Wants=在 some.service 中定义 some.target,则不会添加自动排序。

对于 NFS,我无法明确说明是什么导致了 NFS 服务器和 NFS 客户端之间的循环,但我可以凭经验说,当我DefaultDependencies在 中禁用时nfs-client.target,我的问题就消失了。循环坏了。

相关内容