跳转到主内容

网络文件系统( NFS )锁定恢复和网络状态监视器的详细信息是什么?

Views:
113
Visibility:
Public
Votes:
0
Category:
data-ontap-7
Specialty:
7dot
Last Updated:

适用场景

Data ONTAP 7 及更早版本

问题解答

网络状态监控器(NSM)问题会阻止NFS服务在重新启动或集群故障转移后启动。

Error message: [sm_recover]: no address for host [nfs_client1]

Error message: [sm_recover]: get RPC port for [host=unix1,prog=100024,ver=1,prot=17] failed

NFS锁定恢复和网络状态监控器

NFS版本2和3依赖于网络锁定管理器(Network Lock Manager、NLM)协议进行文件锁定。另一个RPC协议称为网络状态监视器(Network Status Monitor、NSM)、用于通知客户端由于服务器重新启动而丢失锁定状态。当NFS服务器向客户端授予锁定时、它必须保留拥有该锁定的客户端的记录。此信息保留在磁盘上。单个锁定状态本身是非持久的。如果服务器重新启动、锁定将丢失。需要通知客户端、以便它可以在NFS服务器再次可用时重新建立锁定。  存储系统NSM将其信息作为 /etc/sm以下文件进行维护:

state       
monitor   当前受监控主机的NSM列表的状态
notify   重新启动后通知的主机的列表

重新启动或接管集群后、文件管理器会读取 /etc/sm/monitor 文件、以确定哪些客户端在重新启动或接管集群之前持有NLM文件锁定。然后、将要通知的客户端复制到 /etc/sm/notify 文件中、从而用于通知客户端。存储系统通过NSM通知客户端、它已重新启动并丢失所有锁定。运行NSM守护进程rpc.statd/statd()的客户端将收到问题描述锁定回收请求,以重建在 存储系统 重新启动期间丢失的锁定状态。  存储系统 重新启动时、NLM有45秒的宽限期、在此期间、 存储系统 不会处理任何新的锁定请求、而只会处理回收请求。在此宽限期内、所有持有锁定的NFS客户端都有机会回收其锁定。

客户端或网络问题可能会阻止 存储系统 NSM通知所有受监控的客户端。重新启动后、无法访问的每个客户端都将延迟NFS文件服务的启动。   在NFS服务完全启动之前、存储系统将尝试联系通知列表中的所有客户端。每个客户端的最大超时值为10秒。

以下问题可能会阻止 存储系统 通知客户端:

  • 客户端已关闭或在网络上不再可用。
  • 客户端未运行NSM守护进程;Linux上为rpc.statd、Solaris上为statd。
  • 出现网络连接或网络设备中断。
  •  存储系统 无法解析客户端主机名、因为它无法联系DNS或NIS服务。

错误消息

Error message: [sm_recover]: no address for host [nfs_client1]
Error message: [sm_recover]: get RPC port for [host=unix1,prog=100024,ver=1,prot=17] failed

正在检查 /etc/sm/monitor 文件中是否存在不可用的主机

  1. read_monitor.pl 以下Perl脚本可用于在监控器文件中列出客户端。

    #!/usr/bin/perl
    binmode (STDIN);

    $file=join "",<stdin>;
    while ($file =~ /(..)(..)(.*?)\000/gs) {
    $status=unpack("S", $1);
    $namelen=unpack("S", $2);
    print "$3\n" if $status==1;
    }

  2. 要使用该脚本、请将监视器文件从STDIN发送到此脚本:

    cat etc/sm/monitor | ./read_monitor.pl

    它将显示 in_use 设置为1的所有客户端的列表。

  3. 检查客户端列表是否存在以下情况:

    - ping the host from the filer
    - the client portmapper is functioning(rpcinfo -p hostname)
    - the client rpc.statd/statd is running (rpcinfo -p hostname)

    如果客户端未通过上述检查、则应更正此问题。如果客户端永久不可用、则可以使用 sm_mon 命令将其从监控器文件中删除。

  4.   sm_mon 可以使用storage system advanc高级 模式命令从监控列表中删除主机:
    Enter  priv set advanced
    Enter  sm_mon -u  [client_name]
    Enter  priv set admin
vFiler

vfiler的配置可能会影响网络状态监控器客户端通知过程。每个vfiler都会在vfiler /etc/sm 目录下维护自己的一组信息文件。重新启动 存储系统后、NFS服务将在每个vfiler上重新启动。每个vfiler都必须在其 /etc/sm/notify 文件中通知NFS客户端、以便可以回收这些锁定。如果在vfiler之间共享无响应的客户端、则每个vfiler都会发生10秒超时。每个vfiler都必须通过NSM通知锁定多个vfiler的客户端。这可能会影响在所有NFS文件服务完全运行之前的整体启动时间。

存储系统 集群

在 存储系统 集群配置中、配对节点接管或返回操作与重新启动集群配对节点相同。    必须通过网络状态监控器(Network Status Monitor、NSM)通知在受影响存储系统上保持锁定的NFS客户端、如上一节所述。

由于在集群故障转移/接管过程中启动每个服务的时间上限为5分钟、因此、联系NLM客户端的延迟可能会使故障文件管理器的启动进一步复杂化、并可能影响集群的整体可用性

注意: 运行 sm_mon 命令时、可以验证是否确实释放了锁定、这一点很有用。检查 lock 命令、该命令显示所有协议(如NLM、通用Internet文件系统协议(Common Internet File System Protocol、CIFS)、NFSv4、FIO)所保持的锁定。根据Data ONTAP版本,有一个名为 lock status的命令。在旧版本的Data ONTAP中 lock ,以的形式提供 lock_dump

追加信息

不适用

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.