Redhat

NFSv4 無法在不執行 rpcbind 的情況下為 nfsd 設置任何套接字

  • January 24, 2020

根據Red Hat docs ‘rpcbind’ 不再需要:

因為協議支持已被納入 v4 協議,所以 NFSv4 與 portmap、rpc.lockd 和 rpc.statd 守護程序沒有互動。NFSv4 偵聽眾所周知的 TCP 埠 2049,這消除了埠映射互動的需要。掛載和鎖定協議已合併到 V4 協議中,從而消除了與 rpc.lockd 和 rpc.statd 互動的需要。伺服器上仍然需要 rpc.mountd 守護程序,但不涉及任何無線操作。

但是,當“rpcbind”服務未執行時,我無法啟動 NFS 惡魔:

# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                          [FAILED]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                          [FAILED]

我已禁用 NFS v2 和 v3:

# grep -v "^#" /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

您能否從下面列出的這些服務中確認伺服器和客戶端上需要/必不可少的服務(基本上我想禁用不需要的服務):

# rpm -ql nfs-utils | grep 'init.d'
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

這是 NFS 伺服器核心模組中的一個錯誤。它於2013 年 12 月進行了修補

從核心 3.14 開始,rpcbind不再需要執行核心 NFS 伺服器。

(假設伺服器配置為僅使用 NFSv4 及更高版本)

http://lxr.free-electrons.com/source/net/sunrpc/svc.c?v=3.14#L966

您可以在此執行緒中找到有關該更改的更多資訊:

http://www.spinics.net/lists/linux-nfs/msg41053.html

因此,您的配置:

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

現在應該可以在沒有rpcbind.

當您僅使用 NFSv4 時,不需要這些服務:

/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

引用自:https://serverfault.com/questions/530908