本文介绍在使用Linux系统的ECS实例上搭建的NFS服务时,NFS客户端在挂载时不稳定或出现异常的检查方法。
问题现象
在使用Linux系统的ECS实例上搭建的NFS服务进行挂载时,NFS客户端会出现不稳定或异常的情况。
问题原因
可能是由以下原因导致:
NFS客户端及服务端软件未安装。
portmap
和rpcbind
服务未开启。NFS客户端到服务器之前的网络状态异常。
解决方案
请您参考以下操作对NFS Client端和NFS Server端进行排查。
步骤一:检查NFS Client端
远程连接作为NFS Client端的Linux实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
执行以下命令,查看NFS客户端软件是否安装。
rpm -qa | grep nfs
说明当返回的信息中包含NFS及其版本信息则该实例已安装NFS,否则您需要手动安装。
依次执行以下命令,查看客户端的
portmap
和rpcbind
服务是否已经开启。systemctl status portmap systemctl status rpcbind
系统显示类似如下,若出现Active: active (running)表示
rpcbind
已经启动。service rpcbind status Redirecting to /bin/systemctl status rpcbind.service ● rpcbind.service - RPC bind service Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-02-09 21:04:14 CST; 3 days ago Process: 31543 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS) Main PID: 31544 (rpcbind) Tasks: 1 Memory: 896.0K CGroup: /system.slice/rpcbind.service └─31544 /sbin/rpcbind -w Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
如果
portmap
和rpcbind
服务未开启,依次执行以下命令进行开启。systemctl start portmap systemctl start rpcbind
依次执行以下命令,将
portmap
和rpcbind
服务设为开机自动启动。chkconfig portmap on chkconfig rpcbind on
执行以下命令,检查NFS客户端到服务器的网络状态,具体操作步骤请参见链路测试方法。
ping [$IP]
说明[$IP]指的是NFS服务端的IP地址。
在NFS Client端依次执行以下命令,测试端口连通状态。
telnet [$IP] 111 telnet [$IP] 2049
说明111端口是
portmap
服务,2049端口是nfs service
服务。在NFS Client上执行以下命令测试873端口是否正常。
telnet [$IP] 873
说明如果在NFS Server上没有配置NFS使用那些端口,那么就需要在网络上开放所有的端口,否则可能导致NFS客户端连接不上。为了避免此问题,可以设定NFS使用固定的端口,那么开放固定的端口即可。
执行以下命令,检查NFS客户端的Iptables状态。
iptables -L -n
执行以下命令,设定防火墙INPUT的默认策略为
ACCEPT
。iptables -t filter -P INPUT ACCEPT
执行以下命令列出NFS Server信息。
showmount -e [$IP]
说明如果能够查看到共享的信息,表示NFS能够直接挂载使用。
如果不能看到共享的信息,则可能是Server端的问题,请参考步骤二:检查NFS Server端继续排查。
步骤二:检查NFS Server端
远程连接作为NFS Server端的Linux实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
执行以下命令,查看NFS Server软件包是否安装。
rpm -qa | grep nfs
说明当返回的信息中包含NFS及其版本信息则该实例已安装NFS,否则您需要手动安装。
执行以下命令,查看
portmap
和rpcbind
服务是否已经开启。systemctl status portmap systemctl status rpcbind
系统显示类似如下,若出现Active: active (running)表示
rpcbind
已经启动。service rpcbind status Redirecting to /bin/systemctl status rpcbind.service ● rpcbind.service - RPC bind service Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-02-09 21:04:14 CST; 3 days ago Process: 31543 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS) Main PID: 31544 (rpcbind) Tasks: 1 Memory: 896.0K CGroup: /system.slice/rpcbind.service └─31544 /sbin/rpcbind -w Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
如果
portmap
服务未开启,执行以下命令进行开启。systemctl start portmap systemctl start rpcbind
执行以下命令,将
portmap
服务设为开机自动启动。chkconfig portmap on chkconfig rpcbind on
在NFS Server端执行以下命令进行测试。
netstat -an | less
执行以下命令查看NFS端口状态。
rpcinfo -p localhost
说明其中111端口和2049端口必须是开启状态。
建立目录,在
/etc/exports
中加入此目录,然后挂载该目录进行测试。mount -t nfs [$Catalog]/Pathfile /tmp
说明[$Catalog]指的是您自行建立的目录名称。如果可以挂载成功,表示NFS Server端设置正常。
查看
/etc/exports
文件 。查看共享目录,确认其客户端,权限、及文件编写的格式是否配置正确。
确认无误后,执行
exportfs -a
命令重载文件。
执行以下命令,查看NFS共享目录。
showmount -e /etc/exports
说明如果可以展示所有共享目录,并且服务器能够挂载共享出来的NFS,表示NFS Server端正常。