我尝试将 Fedora 9 中的根目录 / 共享到 FreeBSD,但当我尝试挂载 / 文件夹时,它抱怨“[tcp] nfs_server:/: RPCPROG_NFS: RPC: 程序未注册”。我按照以下步骤在 Fedora nfs 服务器上进行设置:-
在 /etc/exports 中添加以下行
/ nfs_client(rw,no_root_squash,sync)
重启nfs相关服务
service portmapper restart
service nfslock restart
service nfs restart
使用以下命令导出文件系统:-
exportfs -arv
在 nfs 客户端上,我使用以下命令进行故障排除:-
rpcinfo -p nfs_server
program vers proto port service
100000 2 tcp 111 rpcbind
100000 2 udp 111 rpcbind
100024 1 udp 32816 status
100024 1 tcp 34173 status
100011 1 udp 817 rquotad
100011 2 udp 817 rquotad
100011 1 tcp 820 rquotad
100011 2 tcp 820 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100021 1 udp 32818 nlockmgr
100021 3 udp 32818 nlockmgr
100021 4 udp 32818 nlockmgr
100005 1 udp 32819 mountd
100005 1 tcp 34174 mountd
100005 2 udp 32819 mountd
100005 2 tcp 34174 mountd
100005 3 udp 32819 mountd
100005 3 tcp 34174 mountd
showmount -e nfs_client
Exports list on nfs_server:
/ nfs_client
我还错过了什么?
答案1
最后,我可以使用另一台 Linux 机器挂载 nfs,但我发现我的 freebsd rc.conf 没有下面这行,这似乎是问题的根本原因:-
nfs_client_enable="YES"
这一行起什么作用?FreeBSD 服务器是否可以在不启动时在 rc.conf 中设置 nfs_client_enable="YES" 的情况下成为 NFS 客户端?
答案2
我最近在连接旧的 Redhat 服务器时也遇到了这个问题。经过一番抱怨和咒骂后,我启动了 wireshark,发现它正在等待一个 UDP 连接,而不是 TCP 连接:
$ sudo mount -t nfs tmif1:/rtdf /imports/tmif
[tcp] tmif1:/rtdf: RPCPROG_NFS: RPC: Program not registered
^C
$ sudo mount -t nfs -o udp,ro tmif1:/rtdf /imports/tmif
$ mount -t nfs
tmif1:/rtdf on /imports/tmif (nfs, read-only)