code学习

NFS问题诊断

温故: 

        在上一篇文章《如何挂载NFS(二)》中又给大家介绍了NFS挂载的第二种方式,即直接安装。直接安装和预定义安装的最大区别就是前者不会主动在filesystems文件中更新自己的信息,这也是为什么我们也会把直接安装称之为临时安装的原因。具体的操作我这里不再赘述,如果有兴趣可以去看看我的上一篇文章。链接如下:​​如何挂载NFS(二)​​

知新:

        今天要和大家聊的是NFS的问题诊断,主要是讲一些检查的方法。说一个我之前遇到的情况,话说某天我做AIX系统巡检的时候,突然发现使用 df  -g命令竟然没有结果显示,开始大家还有点懵,后来发现是挂载的NFS文件系统出了问题,对远程的NFS文件系统修复之后,发现再次使用df -g就没有问题了。这个事只是给大家提供一个思路,下面我要讲的才是本次的重点。

        如果说找出了一个NFS问题之后,应该从以下三个方向进行排查,分别是服务器、客户端、网络。具体的排查思路大致可以分为以下四个方面:

        (1)检查网络连接功能是正常的,可以通过 ping 命令来确诊。

        (2)检查 inetd,portmap 和 biod 进程是否正常运行。

        (3)检查该文件系统在客户机上是否有正确的安装点目录。

        (4)验证服务器是否正常运行。

在客户端排查:

  检查本地NFS进程是否可以使用

lssrc  -g  nfs      
NFS问题诊断

 检查NFS服务器是否可以使用

/usr/bin/rpcinfo  -p  NFS服务器主机名

执行完之后,如果服务器正常运行,则会显示一批程序列表,例如版本号、协议和端口号等      
NFS问题诊断

 检查NFS服务器的守护进程是否可以使用

/usr/bin/rpcinfo  -u  NFS服务器  mount
/usr/bin/rpcinfo  -u  NFS服务器  portmap
/usr/bin/rpcinfo  -u  NFS服务器  nfs


如果没有下图中查询到的类似结果,说明服务器可能存在问题      

NFS问题诊断

  检查NFS客户端的网络连接

nfsstat -c      
NFS问题诊断

         retrans 列的值说明重发的次数。客户机上的 retrans 列的值除以call 列的值如果大于5%,即 retrans÷call×100>5%,就说明重发现象比较严重。

 在服务器端排查:

 检查进程是否启动

lssrc  -g nfs      
NFS问题诊断

 检查服务器的exports文件

showmount -e      
NFS问题诊断

  检查服务器的网络连接

nfsstat -s      
NFS问题诊断

拓展

常见NFS报错信息如下:

 1.硬安装和软安装的文件问题 。

        当网络或服务器出现问题时,访问硬安装(hard-mount)和软安装(soft-mount)的远程文件出现的问题是不相同的。 如果服务器无法响应硬安装的请求时,客户机上的 NFS 就显示下面的信息∶ NFS server hostname not responding, still trying 如果服务器无法响应软安装的请求时,客户机上的 NFS 就显示下面的信息∶ Connection timed out

 2. Bad sendreply 信息 。

        不足的网络传输缓存区可能会引起下面的错误信息∶ nfs_server: bad sendreply 使用 smitty commodev 命令可以增加传输缓存区,首先选择适配器类型,然后再增加传输缓存区的大小。

 3.服务器没有响应 。

        这个错误通常发生在NFS 进程没有启动或者已经停止运行的时候。如果服务器上的 mountd 进程或 nfsd 进程没有启动或者已经停止了,当客户机试图安装一个已导出的文件系统时,将会显示一个 1831-010 错误信息。 如果 rpc,mountd 进程启动之后又死掉了,在客户机上就会收到这个错误信息,然后按照下面的方法来解决问题∶

     (1)telnet 到NFS 服务器上,以root 用户进入系统;

     (2)用 cd 命令进入到/etc 目录下;

     (3)执行 stopsrc -g nfs 命令;

     (4)执行 stopsrc-s portmap 命令;

     (5)执行 rm-rf state sm sm.bak xtab rmtab 命令;

     (6)执行startsrc -s portmap 命令;

     (7)执行 startsrc-g nfs 命令;

     (8)执行exportfs-a 命令;

     (9)执行showmount e servername 命令(其中 servername 为 NFS 服务器的主机名)。

4.远程安装错误。

        (1)mount: ..already mounted 。 试图安装的文件系统已经被安装。

        (2)mount .. not found in /etc/filesystems  。指定的文件系统与目录名不匹配。如果执行的 mount 命令只带有文件系统名或只带有目录名参数时,这个命令就会在 /etc/filesystems 文件中查找文件系统字段或目录字段与这个参数相匹配的记录,然后根据这个记录的描述来安装这个 NFS 目录。

        (3) mount..not in hosts database 。 在一个没有使用 NIS(Network Information Service,网络信息服务)的网络上,这个错误信息说明了mount 命令使用的主机名不在 /etc/hosts 文件中。在一个运行NIS 的网络上,这个错误信息说明了NIS 在 /etc/hosts 文件中不能发现主机名,或者 NIS 的ypbind 进程已经终止运行。如果存在 /etc/resolv.conf,则要使用一个名字服务器做主机名解析,因为在指定的数据库中可能存在问题。检查 mount 命令的拼写和语法。如果命令拼写正确,网络上没有运行NIS,而且只是因这个主机名而出现这个错误,则应该检查 /etc/hosts 文件中的记录。如果网络上运行着 NIS,通过下面的命令检查 ypbind 进程是否正常运行∶# ps -eflgrep ypbind

如果存在一条关于 ypbind 进程的记录,再用 rlogin 命令登录到远程主机上,或者用 rcp命令拷贝一些文件到远程主机中,如果这些命令失败了,ypbind 进程可能停止运行或者被挂起了。如果只是因这个主机名而出现这个错误,应该检查 NIS 服务器上的/etc/hosts 文件中的记录。

        (4)mount .. server not responding: port mapper failure-RPC timed out  。尝试安装的 NFS 服务器可能掉电或不正常运行了,或者 portmap 进程停止运行或者被挂起了,那么应该重新启动 inetd,portmap 和 ypbind 进程。如果用 rlogin 命令不能登录到远程服务器上,而服务器工作是正常的,则应该通过登录到其他远程主机来检查网络连接,也应该检查服务器的网络连接。

        (5)1831-019 mount ..server not responding: program not registered 。这意味着 mount 命令与 portmap 进程取得联系,但是 rpc.mountd 进程没有注册。

继续阅读