从客户端检查 NFS 是否在服务器上运行

从客户端检查 NFS 是否在服务器上运行

(我的系统运行的是centos7)

我正在尝试从客户端检查驱动器是否通过 NFS 正确安装。

键入命令nfsstat -m会为我提供它认为当前已安装的安装,但这并不能保证这些文件夹可以访问。可能只是挂载这些文件夹时 NFS 服务器正在运行,但 NFS 服务器现在已关闭。

例如,如果 NFS 服务器出现故障并且我在客户端计算机上键入命令,df -h则该命令将无限期挂起。同样,如果我尝试ls安装我要安装的文件夹,那么它也会无限期挂起。

这是一个显示我的问题的示例

# on server
systemctl start nfs-server

# on client
mount node1:/mnt/images /mnt/images
df -h #works fine here

# on server
systemctl stop nfs-server

# on client
nfsstat -m #shows the list of nfs mounts
df -h #this command will hang
ls /mnt/images #this command will hang

关于如何测试是否有任何建议从客户端如果 NFS 服务器正在运行或者 NFS 安装的文件夹是否可访问,我们将不胜感激。

如果我showmount -e在服务器上运行,我会得到此输出(注意/mnt/images/mnt/rv_output/rv我尝试从客户端计算机安装的所有文件夹)

/mnt/rv_output 192.168.81.0/24
/mnt/images    192.168.81.0/24
/rv            192.168.81.0/24

但我对在服务器上测试此连接不感兴趣,我想在客户端计算机上测试它。如果我showmount -e在客户端上运行,无论 nfs 服务器是否已从服务器计算机激活,我都会得到相同的输出。

clin_create: RPC: Port mapper failure - Unable to receive: errno 111 (connection refused)

答案1

如果您有标准设置,服务器上的 NFS 守护程序将侦听 TCP/UDP 端口 2049,因此您可以尝试使用netcatncat甚至nc来连接到它telnet。我没有运行 CentOS,所以我无法确切地知道你有什么可用的,但在我的机器上 (OpenBSD)

$ nc -z ip_of_nfs_server 2049

就可以了(添加-uUDP,-z开关告诉它检查侦听守护进程而不发送数据)。检查man页面以了解您的计算机上有什么,以便使用其他工具实现相同的目的。telnet或多或少是普遍存在的

$ telnet ip_of_nfs_server 2049

应该也可以工作(使用 退出Ctrl+c)。

答案2

展示山

man showmount

showmount - 显示 NFS 服务器的挂载信息

我使用 with --exports( 或-e) 选项来查看实际导出的内容。

答案3

由于您已经知道df -h需要做什么,但是挂起了,您可以在命令前面加上命令,timeout这样它就不会挂起:

timeout 5s df -h 1>/dev/null 2>/dev/null && echo OK || echo NOK

相关内容