我正在尝试专门使用 NFS 版本 3 挂载 NFS 共享。我有两个服务器集群,其中一个可以工作,另一个则不能。我有它有效的地方
10.100.30.81:/var/lib/test /var/lib/test nfs hard,bg,intr,vers=3,noatime 0 0
而且效果很好。如果我使用rpcinfo
我会得到这个
program vers proto port service
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
100005 2 udp 20048 mountd
100024 1 udp 43989 status
100005 2 tcp 20048 mountd
100024 1 tcp 44845 status
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 56714 nlockmgr
100021 3 udp 56714 nlockmgr
100021 4 udp 56714 nlockmgr
100021 1 tcp 44307 nlockmgr
100021 3 tcp 44307 nlockmgr
100021 4 tcp 44307 nlockmgr
You have new mail in /var/spool/mail/root
[root@test1 ~]#
在我设置的不起作用的系统上
10.200.100.80:/var/lib/test2 /var/lib/test2 nfs soft,bg,intr,vers=3,noatime 0 0
当我尝试安装它时,我得到了
[root@mon2 ~]# mount -avvvvvvvv
/ : ignored
/boot : already mounted
swap : ignored
mount.nfs: trying text-based options 'soft,bg,intr,vers=3,addr=10.200.100.80'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Program not registered
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Program not registered
mount.nfs: backgrounding "10.200.100.80:/var/lib/test2"
mount.nfs: mount options: "rw,noatime,soft,bg,intr,vers=3"
/var/lib/test2 : successfully mounted
[root@mon2 ~]
如果我跑rpcinfo
我就会回来
[root@mon2 ~]# rpcinfo -p 10.200.100.80
program vers proto port service
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
[root@mon2 ~]#
我假设我的问题是我在 NFS 服务器上重新配置了某些内容?我检查过,rpcbind
其他服务似乎在两者上运行相同。我还能看什么?
答案1
[root@mon2 ~]# rpcinfo -p 10.200.100.80
program vers proto port service
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
根据该服务, 10.200.100.80 上portmapper
没有运行nfs
、nfs_acl
、status
、mountd
或服务。 nlockmgr
NFSv3 服务器应该运行所有这些,并且系统portmapper
服务应该了解它们。
如果该命令无法在内部处理该特定文件系统类型,则该mount
命令将调用其他实用程序。/sbin/mount.<filesystem type>
对于 NFS,有一个特定的实用程序/sbin/mount.nfs
可以处理 NFS 挂载。
挂载 NFSv3 共享时,该实用程序要做的第一件事mount.nfs
就是向portmapper
NFS 服务器系统的服务询问可用的协议以及要使用的端口。
mount.nfs: prog 100003, trying vers=3, prot=6
这是mount.nfs
询问 NFS 服务器portmapper
服务的实用程序:“您有nfs
TCP 上的服务版本 3 吗?” (您可以分别从/etc/rpc
和/etc/protocols
文件中检查 prog 和 prot 编号)
mount.nfs: portmap query retrying: RPC: Program not registered
服务器回复“抱歉,我没有该服务”。
mount.nfs: prog 100003, trying vers=3, prot=17
“那么,你们有基于 UDP 的 NFS 版本 3 吗?”
mount.nfs: portmap query failed: RPC: Program not registered
“抱歉,我也没有。”
mount.nfs: backgrounding "10.200.100.80:/var/lib/test2"
此处,由于bg
使用了挂载选项,mount.nfs
因此设置了一个后台进程来不断重试 NFS 挂载,以防服务器稍后启动其 NFS 服务。由于它会不断重试,因此mount.nfs
无法真正告诉主mount
命令它失败了,因为挂载操作稍后可能会成功,因此mount.nfs
会向主mount
命令返回“成功”结果代码。
/var/lib/test2 : successfully mounted
,sommount
命令不知道 NFS 安装过程的详细信息,因此它假设“成功”结果代码意味着文件系统已成功安装。在这种特定情况下,结果代码仅意味着mount.nfs
尚未停止尝试。
因此,问题显然出在主机 10.200.100.80 上:根据其信息portmapper
,它没有运行充当 NFS 服务器所需的服务。
遗憾的是,您没有指定该主机上使用的操作系统的名称和版本:启动 NFS 服务器服务的步骤在 Linux 发行版之间有所不同。
即使 NFS 服务器服务已配置为自动启动,某些发行版也会检查/etc/exports
: 如果没有配置 NFS 共享,则启动脚本可能会忽略启动 NFS 服务器服务。因此,您应该首先检查主机 10.200.100.80 的/etc/exports
文件是否定义/var/lib/test2
为 NFSv3 共享,然后弄清楚如何在该主机上启动 NFS 服务器服务(以及如何将它们配置为将来在启动时自动启动) 。
通常,服务nfs
、nfs_acl
和nlockmgr
是由内核中的服务器处理的,因此 a/usr/sbin/rpc.nfsd
只会运行一次来配置内核组件,然后退出。status
和服务分别由运行和 的mountd
用户空间进程处理。可能有一个脚本、服务或目标来启动所有这些,或者您可能必须单独启动它们,具体取决于您的 Linux 发行版。/usr/sbin/rpc.statd
/usr/sbin/rpc.mountd
systemd
在 Debian/Ubuntu 上,systemctl start nfs-server.service
可能是您正在寻找的命令。在 RHEL 7.x 上,有两个服务:nfs-lock
和nfs
,这两个服务都需要启动才能支持 NFSv3 服务器。