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
客户端启动后,nfs挂载失败:(journalctl -b -p err
输出如下):
Aug 25 17:56:43 LatishaPC1 systemd[1]: Failed to mount /backup/system.
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
手动尝试挂载(以 root 身份)使用mount /backup/system
给出以下输出:
mount.nfs4: mounting server:/backup/system/pc1 failed, reason given by server: No such file or directory
但是,我们看到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)
我在没有和没有上面最后一行的情况下尝试过。无论哪种方式,都会出现同样的错误。我已经排查好几天了,也没有解决。 (我有其他 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
更新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
答案1
不适用于NFSv4
:
为什么之前没有包含该文件夹
/backup/
?它应该是 :
server:/export/backup/system/pc1 /backup/system nfs4 auto,noatime 0 0
您需要根据您的导出文件安装它。
编辑 :
是否您仅将文件 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)