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
山您的安装点的单位。有用的链接包括:
- https://dev.to/adarshkkumar/mount-a-volume-using-systemd-1h2f
- https://tekneed.com/how-to-mount-volumes-using-systemd-unit-file/
- https://forum.manjaro.org/t/root-tip-systemd-mount-unit-samples/1191
就您而言,您希望/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
,我的问题就消失了。循环坏了。