Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.8. NFS 和 rpcbind

注意
以下部分仅适用于需要 rpcbind 服务以便向后兼容的 NFSv3 实现。
有关如何配置只使用 NFSv4 的服务器(不需要 rpcbind )的详情,请参考 第 8.6.7 节 “配置只使用 NFSv4 的服务器”
rpcbind[1] 工具将 RPC 服务映射到它们侦听的端口。RPC 进程在启动时通知 rpcbind,注册它们正在侦听的端口以及它们期望提供服务的 RPC 程序号。然后,客户端系统会使用特定的 RPC 程序号联系服务器上的 rpcbindrpcbind 服务将客户端重定向到正确的端口号,这样它就可以与请求的服务进行通信。
由于基于 RPC 的服务依赖 rpcbind 来与所有传入的客户端请求建立连接,因此 rpcbind 必须在这些服务启动之前可用。
rpcbind 服务使用 TCP 包装程序进行访问控制,而 rpcbind 的访问控制规则 会影响所有 基于 RPC 的服务。另外,也可以为每个 NFS RPC 守护进程指定访问控制规则。rpc.mountdrpc.statdman page 包含有关这些规则的确切语法的信息。

8.8.1. NFS 和 rpcbind故障排除

由于 rpcbind[1] 在 RPC 服务和用于与其通信的端口号之间提供协调,因此在进行故障排除时,使用 rpcbind 查看当前 RPC 服务的状态非常有用。rpcinfo 命令显示每个基于 RPC 的服务,以及端口号、RPC 程序号、版本号和 IP 协议类型(TCP 或 UDP)。
要确保为 rpcbind 启用了正确的基于 NFS RPC 的服务,请使用以下命令:
# rpcinfo -p

例 8.7. rpcinfo -p 命令输出

下面是一个这个命令的输出示例:
program vers proto  port service
      100021    1   udp  32774  nlockmgr
      100021    3   udp  32774  nlockmgr
      100021    4   udp  32774  nlockmgr
      100021    1   tcp  34437  nlockmgr
      100021    3   tcp  34437  nlockmgr
      100021    4   tcp  34437  nlockmgr
      100011    1   udp    819  rquotad
      100011    2   udp    819  rquotad
      100011    1   tcp    822  rquotad
      100011    2   tcp    822  rquotad
      100003    2   udp   2049  nfs
      100003    3   udp   2049  nfs
      100003    2   tcp   2049  nfs
      100003    3   tcp   2049  nfs
      100005    1   udp    836  mountd
      100005    1   tcp    839  mountd
      100005    2   udp    836  mountd
      100005    2   tcp    839  mountd
      100005    3   udp    836  mountd
      100005    3   tcp    839  mountd
如果其中一个 NFS 服务没有正确启动,rpcbind 将不能将来自客户端的对该服务的 RPC 请求映射到正确的端口。在很多情况下,如果 rpcinfo 输出中不存在 NFS,重启 NFS 会导致服务使用 rpcbind 正确注册并开始工作。
有关 rpcinfo 的更多信息和选项列表,请查看其 man page。