You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22.04中NFS服务因依赖缺失启动失败,proc-fs-nfsd.mount与systemd-networkd-wait-online.service也无法启动

Ubuntu 22.04中NFS服务因依赖缺失启动失败,proc-fs-nfsd.mount与systemd-networkd-wait-online.service也无法启动

问题描述

我在VPS上尝试安装NFS服务器,但启动失败,提示依赖缺失。执行相关命令后得到以下输出:

查看NFS服务状态

root@server:/# sudo systemctl status nfs-server

○ nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Active: inactive (dead)

Feb 16 19:36:39 server systemd[1]: Dependency failed for NFS server and services.
Feb 16 19:36:39 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.
Feb 16 19:36:39 server systemd[1]: Dependency failed for NFS server and services.
Feb 16 19:36:39 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.
Feb 16 19:42:12 server systemd[1]: Dependency failed for NFS server and services.
Feb 16 19:42:12 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.
Feb 19 12:30:54 server systemd[1]: Dependency failed for NFS server and services.
Feb 19 12:30:54 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.
Feb 19 12:30:55 server systemd[1]: Dependency failed for NFS server and services.
Feb 19 12:30:55 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.

查看NFS内核服务依赖

root@server:/# systemctl list-dependencies nfs-kernel-server

nfs-kernel-server.service
○ ├─auth-rpcgss-module.service
○ ├─nfs-idmapd.service
○ ├─nfs-mountd.service
○ ├─nfsdcld.service
× ├─proc-fs-nfsd.mount
● ├─rpc-statd-notify.service
● ├─rpc-statd.service
○ ├─rpc-svcgssd.service
● ├─rpcbind.socket
● ├─system.slice
● ├─network-online.target
● │ ├─ifupdown-wait-online.service
● │ ├─networking.service
× │ └─systemd-networkd-wait-online.service
● └─network.target

可以看到proc-fs-nfsd.mountsystemd-networkd-wait-online.service状态异常(标记为×)。

查看proc-fs-nfsd.mount状态

root@server:/# sudo systemctl status proc-fs-nfsd.mount

× proc-fs-nfsd.mount - NFSD configuration filesystem
Loaded: loaded (/lib/systemd/system/proc-fs-nfsd.mount; static)
Active: failed (Result: exit-code) since Mon 2024-02-19 12:30:55 UTC; 1h 28min ago
Where: /proc/fs/nfsd
What: nfsd

Feb 19 12:30:55 server systemd[1]: Mounting NFSD configuration filesystem...
Feb 19 12:30:55 server mount[1997336]: mount: /proc/fs/nfsd: unknown filesystem type 'nfsd'.
Feb 19 12:30:55 server systemd[1]: proc-fs-nfsd.mount: Mount process exited, code=exited, status=32/n/a
Feb 19 12:30:55 server systemd[1]: proc-fs-nfsd.mount: Failed with result 'exit-code'.
Feb 19 12:30:55 server systemd[1]: Failed to mount NFSD configuration filesystem.

查看systemd-networkd-wait-online.service状态

root@server:/# sudo systemctl status systemd-networkd-wait-online.service

× systemd-networkd-wait-online.service - Wait for Network to be Configured
Loaded: loaded (/etc/systemd/system/systemd-networkd-wait-online.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2024-02-19 12:26:07 UTC; 1h 30min ago
Docs: man:systemd-networkd-wait-online.service(8)
Main PID: 1996517 (code=exited, status=1/FAILURE)

Feb 19 12:24:07 server systemd[1]: Starting Wait for Network to be Configured...
Feb 19 12:26:07 server systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE
Feb 19 12:26:07 server systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'.
Feb 19 12:26:07 server systemd[1]: Failed to start Wait for Network to be Configured.

查看journalctl关键日志

NFS服务日志

root@server:/# journalctl -xeu nfs-server

Feb 19 12:30:54 server systemd[1]: Dependency failed for NFS server and services.
Subject: A start job for unit nfs-server.service has failed
Defined-By: systemd
Support: http://www.ubuntu.com/support
A start job for unit nfs-server.service has finished with a failure.
The job identifier is 33900 and the job result is dependency.
Feb 19 12:30:54 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.
Feb 19 12:30:55 server systemd[1]: Dependency failed for NFS server and services.
Subject: A start job for unit nfs-server.service has failed
Defined-By: systemd
Support: http://www.ubuntu.com/support
A start job for unit nfs-server.service has finished with a failure.
The job identifier is 33930 and the job result is dependency.
Feb 19 12:30:55 server systemd[1]: nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.

proc-fs-nfsd.mount日志

root@server:/# journalctl -xeu proc-fs-nfsd.mount

Feb 19 12:30:55 server systemd[1]: Mounting NFSD configuration filesystem...
Subject: A start job for unit proc-fs-nfsd.mount has begun execution
Defined-By: systemd
Support: http://www.ubuntu.com/support
A start job for unit proc-fs-nfsd.mount has begun execution.
The job identifier is 33931.
Feb 19 12:30:55 server mount[1997336]: mount: /proc/fs/nfsd:             unknown filesystem type 'nfsd'.
Feb 19 12:30:55 server systemd[1]: proc-fs-nfsd.mount: Mount     process exited, code=exited, status=32/n/a
Subject: Unit process exited
Defined-By: systemd
Support: http://www.ubuntu.com/support
An n/a= process belonging to unit proc-fs-nfsd.mount has exited.
The process' exit code is 'exited' and its exit status is 32.
Feb 19 12:30:55 server systemd[1]: proc-fs-nfsd.mount: Failed with result 'exit-code'.
Subject: Unit failed
Defined-By: systemd
Support: http://www.ubuntu.com/support
The unit proc-fs-nfsd.mount has entered the 'failed' state with result 'exit-code'.
Feb 19 12:30:55 server systemd[1]: Failed to mount NFSD configuration filesystem.
Subject: A start job for unit proc-fs-nfsd.mount has failed
Defined-By: systemd
Support: http://www.ubuntu.com/support
A start job for unit proc-fs-nfsd.mount has finished with a failure.
The job identifier is 33931 and the job result is failed.

我查了资料,有些VPS镜像可能缺失这些依赖,有人说只能重装系统,但我想知道有没有不用格式化系统就能修复的方法?


解决方法

不用重装系统,我们可以分步骤修复这两个依赖问题:

1. 修复proc-fs-nfsd.mount失败问题

提示未知文件系统类型'nfsd',大概率是NFS内核模块没加载,我们手动加载并设置开机自动加载:

  • 手动加载nfsd模块:
sudo modprobe nfsd
  • 验证模块是否加载成功:
lsmod | grep nfsd

如果输出中有nfsd的条目,说明加载成功。

  • 设置开机自动加载该模块:
echo "nfsd" | sudo tee /etc/modules-load.d/nfsd.conf
  • 重新挂载proc-fs-nfsd.mount:
sudo systemctl start proc-fs-nfsd.mount

再检查状态:

sudo systemctl status proc-fs-nfsd.mount

如果显示active(mounted)就没问题了。

2. 修复systemd-networkd-wait-online.service失败问题

这个服务失败通常是因为它在等待所有网络接口上线,但VPS可能有些接口不需要或者配置有问题,推荐两种解决方式:

方法一:修改服务配置,只等待活跃接口

  • 编辑服务配置文件:
sudo systemctl edit systemd-networkd-wait-online.service
  • 在打开的编辑器中添加以下内容:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --any --quiet

保存退出后,重新加载配置并启动服务:

sudo systemctl daemon-reload
sudo systemctl start systemd-networkd-wait-online.service

检查状态是否正常:

sudo systemctl status systemd-networkd-wait-online.service

方法二:直接禁用不必要的服务

如果你的NFS服务不需要严格等待网络完全在线,也可以直接禁用这个服务:

sudo systemctl disable --now systemd-networkd-wait-online.service

同时,我们可以修改nfs-server.service的依赖,移除对network-online.target的强依赖(可选):

sudo systemctl edit nfs-server.service

添加以下内容:

[Unit]
After=network.target
Wants=network.target

保存退出后重新加载配置。

3. 重新启动NFS服务

修复完两个依赖后,重新启动NFS相关服务:

sudo systemctl restart nfs-kernel-server nfs-server

然后检查NFS服务状态:

sudo systemctl status nfs-server

如果显示active(running),说明成功启动了。

4. 验证NFS服务可用性

可以尝试导出一个测试目录,然后在客户端挂载测试,确保服务正常工作。


备注:内容来源于stack exchange,提问作者user1768691

火山引擎 最新活动