NFS_Server 是 DataDomain Client,是 RHEL 7.3
我运行以下命令来从 NFS_server 显示客户端系统可用的 NFS 共享,但是,我没有看到所有可供挂载的共享。
# showmount -e nfs_server_hostname
/test myclientsIP
# showmount -e nfs_server_IP
/test myclientsIP
就我而言,我想要一个未在上述命令的结果中显示的特定挂载。
仍然因为 DataDomain(在我们的例子中是 NFS_Server)的人告诉我要挂载一个特定的共享,即使你在上面的 showmount 命令的输出中看不到它。
令我惊讶的是,它被安装住了,因此我再次运行上述命令,但它仍然没有显示在列表中。但当我检查以下命令的输出时,我感到很惊讶。
# df -h
.
.
.
NFS_Server_IP:/test_Rep /mnt
我想知道发生这种情况的原因,是否有其他命令可以列出隐藏的挂载点?
在此先谢谢大家,如果我的英语不好并且这个网站不适合提出这样的问题,请谅解。
答案1
该showmount
命令专门使用 NFSv3 协议的某些方面来查询服务器并返回可用共享的列表。有两种方法可以运行 showmount:
showmount -a
- 来自 showmount 的手册页:
-a or --all List both the client hostname or IP address and mounted directory in host:dir format. This info should not be considered reliable. See the notes on rmtab in rpc.mountd(8).
在这种情况下,showmount 正在查询服务器上的 rpc.mountd,它可能会返回可靠的挂载点列表,也可能不会。rpc.mountd 提到的问题是,rmtab 文件中可能会留下过时的条目,这意味着它可能不是准确的挂载点列表。
showmount -e
- 虽然 showmount 文档表明这是查询服务器更可靠的方法,但它具体使用了 NFSv3 协议的这一部分:
https://www.rfc-editor.org/rfc/rfc1813#section-5.2.5
这是 NFSv3 协议的一部分,但不存在于 NFSv4 中。许多服务器会将 NFS 共享配置为同时通过 NFSv3 和 NFSv4 可用,因此它们会使用 showmount 功能显示出来。但是,如果将共享配置为纯 NFSv4,则 showmount 将无法获取列表,因为协议不提供支持此方法的方法。
即使共享不是纯 NFSv4,远程服务器也必须知道以上述两种方式之一(或两种方式)返回导出showmount
。然而,这不会阻止它被挂载,正如您所经历的那样。
答案2
某些存储供应商/产品默认不会响应 showmount -e,甚至根本不响应。
NetApp C-Mode 默认不响应,我猜 DataDomain 可能也不响应。供应商不响应的原因通常是出于安全考虑。