我设置了一个 NFS 服务器和客户端来挂载一些 NFS 卷(所有服务器都是 SUSE Enterprise Linux 11)。挂载成功,直到我重新启动机器时它们消失了 - 似乎它们没有从 /etc/fstab 重新加载。fstab 的相关行如下:
myhost01:/data /data nfs nfsvers=3,rw,sync,_netdev 0 0
myhost01:/data2 /data2 nfs nfsvers=3,rw,sync,_netdev 0 0
我很好奇,因此我自己尝试了 sudo mount -a -v 来查看发生了什么,而我看到的结果让我感到惊讶。
mount.nfs: timeout set for Thu Apr 6 14:03:26 2017
mount.nfs: trying text-based options 'nfsvers=3,addr=X.X.X.XX'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying X.X.X.XX prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying X.X.X.XX prog 100005 vers 3 prot UDP port 60219
mount.nfs: portmap query retrying: RPC: Timed out
mount.nfs: prog 100005, trying vers=3, prot=6
mount.nfs: trying X.X.X.XX prog 100005 vers 3 prot TCP port 36414
mount.nfs: portmap query failed: RPC: Remote system error -
Connection timed out
mount.nfs: trying text-based options 'nfsvers=3,addr=X.X.X.XX'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying X.X.X.XX prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying X.X.X.XX prog 100005 vers 3 prot UDP port 60219
mount.nfs: portmap query retrying: RPC: Timed out
除了标准 NFS 端口 (2049) 之外,还尝试了一个随机 UDP 和 TCP 端口,而我之前不允许这些端口通过我的安全组。我打开了这些端口,并且使用我的手动尝试成功挂载了 NFS,但在第二次重新启动时,端口再次发生变化,因此从 /etc/fstab 挂载再次失败。我的问题是,我必须允许哪些范围的端口才能确保 NFS 在重新启动时在所有情况下都能正常工作?
答案1
NFS(v2 和 v3)利用多种服务来完成其需要做的一切。我将在下面介绍它们的端口配置:
端口映射器
服务器端和客户端使用 TCP 端口 111 和 UDP 端口。
nfsd
对于 NFS v4 来说,这就是所需的全部内容。它在 NFS 服务器端的 TCP 和 UDP 端口 2049 上运行。
安装
/etc/sysconfig/nfs
您在 nfsserver 上编辑并使用此参数配置端口:
MOUNTD_PORT=
服务器端需要打开 TCP 和 UDP。
锁定
(SUSE Linux Enterprise 11 SP2 及更高版本)
您将在其中/etc/sysconfig/nfs
找到并根据需要设置参数:
STATD_PORT= LOCKD_TCPPORT= LOCKD_UDPPORT=
配额
仅当您使用 NFS 配额时才需要此配置。服务器上的 TCP 和 UDP 端口为 4003。