nfs挂载失败:服务器给出的原因:没有这样的文件或目录

Mou*_*inX 7 nfs

nfs 服务器运行 Arch Linux。下面的 nfs 客户端(“pc1”)运行的是 Ubuntu 16.04。两者都使用 nfs4。

root@PC1:~# cat /etc/fstab (相关行如下所示):

server:/backup/system/pc1 /backup/system nfs4 auto,noatime        0 0
Run Code Online (Sandbox Code Playgroud)

客户端启动后,nfs挂载失败:(journalctl -b -p err输出如下):

Aug 25 17:56:43 LatishaPC1 systemd[1]: Failed to mount /backup/system.
Run Code Online (Sandbox Code Playgroud)

root@PC1:~# showmount -e server (输出如下所示):

Export list for server:
/export                          192.168.1.0/24
/export/backup/system            192.168.1.0/24
/export/backup/system/pc1 192.168.1.8
Run Code Online (Sandbox Code Playgroud)

手动尝试挂载(以 root 身份)使用mount /backup/system给出以下输出:

mount.nfs4: mounting server:/backup/system/pc1 failed, reason given by server: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是,我们看到showmount服务器确实列出了该目录。

这是服务器上的 /etc/exports 文件:

/export 192.168.1.0/24(fsid=0,rw,sync,no_subtree_check)                                                            
/export/backup/system/ 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check,nohide)
/export/backup/system/pc1 192.168.1.8(rw,sync,no_root_squash,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)

我在没有和没有上面最后一行的情况下尝试过。无论哪种方式,都会出现同样的错误。我已经排查好几天了,也没有解决。(我有其他 nfs 服务器和客户端按预期工作,我将此配置与工作系统进行了比较,但我没有看到差异。)我检查了许多类似的问题。我可能忽略了一个明显的答案。如果这个问题已经在 StackExchange 上的某个地方得到了回答,我提前表示歉意。我还没有找到解决办法。

更新1:

客户端可以挂载 server:/ 并挂载,这提供了另一个线索。将挂载导航到 /backup/system/ 时,该目录为空。它应该包含“pc1”,如上面的 showmount 命令所示。

以下是服务器上显示的文件权限。

[root@server export]# cd backup/
[root@server backup]# ls -la
drwxr-xr-x 1 root         root   76 Jun  3 02:31 .
drwxr-xr-x 1 root         root   12 Aug 25 02:44 ..
drwxr-xr-x 1 root         root  142 Jul  5 19:58 system
[root@server backup]# cd system/
[root@server system]# ls -la
drwxr-xr-x 1 root root 142 Jul  5 19:58 .
drwxrwx--- 1 root root   6 May 28 11:35 pc1
Run Code Online (Sandbox Code Playgroud)

更新 2: 输出如下root@PC1:~# ip a。表明服务器上/etc/exports中列出的IP地址是正确的。

2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.8/24 brd 192.168.1.255 scope global dynamic enp0s31f6
Run Code Online (Sandbox Code Playgroud)

Hun*_*son 0

不适用于NFSv4

为什么之前没有包含该文件夹/backup/

它应该是 :

server:/export/backup/system/pc1 /backup/system nfs4 auto,noatime        0 0
Run Code Online (Sandbox Code Playgroud)

您需要根据您的导出文件安装它。

编辑 :

可能是您仅将文件 pc1 导出到该 IP 地址192.168.1.8,而您的客户端没有该 IP。

尝试更改IP地址:

/export/backup/system/pc1 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)

  • NFSv4 的情况有所不同。客户端必须请求相对于服务器上的虚拟根目录的路径。fsid=0 的导出条目是根目录。更令人困惑的是,“showmount”不使用 NFSv4,因此它显示的路径仅适用于 NFSv[23] 安装。 (15认同)
  • 只是为了向未来的读者澄清,马克·普洛特尼克是正确的,而这个答案是错误的。 (3认同)
  • @MarkPlotnick 你能写一个答案来充实一下这个问题吗?我收到这个错误。尝试告诉 NFS 也只使用版本 4。 (3认同)