无法挂载 NFS 版本 3

无法挂载 NFS 版本 3

我正在尝试专门使用 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没有运行nfsnfs_aclstatusmountd或服务。 nlockmgrNFSv3 服务器应该运行所有这些,并且系统portmapper服务应该了解它们。

如果该命令无法在内部处理该特定文件系统类型,则该mount命令将调用其他实用程序。/sbin/mount.<filesystem type>对于 NFS,有一个特定的实用程序/sbin/mount.nfs可以处理 NFS 挂载。

挂载 NFSv3 共享时,该实用程序要做的第一件事mount.nfs就是向portmapperNFS 服务器系统的服务询问可用的协议以及要使用的端口。

mount.nfs: prog 100003, trying vers=3, prot=6

这是mount.nfs询问 NFS 服务器portmapper服务的实用程序:“您有nfsTCP 上的服务版本 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 服务器服务(以及如何将它们配置为将来在启动时自动启动) 。

通常,服务nfsnfs_aclnlockmgr是由内核中的服务器处理的,因此 a/usr/sbin/rpc.nfsd只会运行一次来​​配置内核组件,然后退出。status和服务分别由运行和 的mountd用户空间进程处理。可能有一个脚本、服务或目标来启动所有这些,或者您可能必须单独启动它们,具体取决于您的 Linux 发行版。/usr/sbin/rpc.statd/usr/sbin/rpc.mountdsystemd

在 Debian/Ubuntu 上,systemctl start nfs-server.service可能是您正在寻找的命令。在 RHEL 7.x 上,有两个服务:nfs-locknfs​​ ,这两个服务都需要启动才能支持 NFSv3 服务器。

相关内容