我的 NFS 文件系统有问题。客户端无法连接到服务器,但服务器收到请求并授予客户端访问权限。配置如下。
NFS服务器
- 费多拉 Linux 38
/home/user/nfs/
带有 mod 0777 的文件夹- IP 地址是
193.232.173.2
/etc/export
内容:/home/user/nfs 193.232.173.251(rw,sync,no_acl,insecure,no_root_squash)
NFS客户端
- 基于 UNIX 的无盘操作系统(oc2000,也称为 RT OS BAGET,不是 UNIX 本身,只是基于 UNIX)
- IP 地址是
193.232.173.251
- NFS 通过程序代码使用以下命令行挂载:
mount -t nfs -o rsize=4096,wsize=4096 193.232.173.2:/home/user/nfs /nfs
没有其他可用的命令行选项
结果
NFS 已安装,但客户端无法读/写(也可以通过程序代码)。我发现 NFS 服务器不支持 NFS 版本 2,并且客户端仅适用于 NFSv2。
我构建了支持 NFSv2 的 Linux 内核(版本 6.6.8),但没有连接。客户端只发送上面的命令,然后什么也没有发生。
系统日志包含以下日志:
rpc.mountd authenticated mount request from 193.232.173.251:1023 for /home/user/nfs (/home/user/nfs)
rpc.mountd granted access to /home/user/nfs for 193.232.173.251
rpc.mountd nfsd_fh: found 0x55f566742490 path /home/user/nfs
rpc.mountd nfsd_fh: inbuf '193.232.173.251 4 \x408a0300938534b9'
- 我尝试了客户端选项的组合
/etc/export
- 没有帮助。 - 我尝试切换设置
/etc/nfs.conf
- 也没有帮助。 [nfsd]
的部分/etc/nfs.conf
如下:debug=1 udp=on tcp=on vers2=y vers3=y vers4=n vers4.0=n vers4.1=n vers4.2=n rdma=y rdma-port=20049
我什至查看了 Linux 源代码以找到上面给出的消息 - 但没有结果。
请你帮助我好吗?我还应该做什么才能使客户端和服务器通过 NFS 工作?
UPD。以下是 rpcinfo -p 的输出
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100024 1 udp 44697 status
100024 1 tcp 37411 status
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 60925 nlockmgr
100021 3 udp 60925 nlockmgr
100021 4 udp 60925 nlockmgr
100021 1 tcp 46315 nlockmgr
100021 3 tcp 46315 nlockmgr
100021 4 tcp 46315 nlockmgr
答案1
谢谢大家,问题已经按照原来的方式解决了。我降级到 Fedora 22(根据此客户端计算机上的文档),配置了 RPC 和 NFS……并且它可以工作!客户端确实连接到服务器,甚至读取和写入文件!
答案2
在 NFS 服务器上(你说的是 Fedora 38)用于故障排除你会想要
- 关闭 SELINUX,每次启动后手动关闭,
setenforce 0
或者修改/etc/selinux/config
并设置为permissive
- 关闭防火墙
- 真正检查
/etc/nfs.conf
所有地方的语法是否正确vers<num> = y
首先想到的是现代 NFSv4 全部位于一个端口上...2049。NFSv3 位于端口 111 上,此外还有mountd
、statd
、lockd
、nfsd
、的其他端口sm-notify
。您将/etc/nfs.conf
在 Fedora38 中的 nfsv4中看到(现在)已注释掉的内容。对于初学者来说,要允许默认为 NFSv4 的当前 Linux 发行版回退到 NFSv2,您需要确保您的 nfs 服务器正在侦听正确的端口(而不是对它们进行防火墙),以了解您的 nfsv2 客户端正在谈论的所有内容。