跳转到主内容
We are redesigning the NetApp Knowledge Base site to make it easier to use and navigate. The new and improved site will be available the first week of October. Check out our video or read this KB article to know more about changes you’ll see on the site.

NFSv3 / v4.0 的主要 RHEL 问题 / 解决方法 / 最佳实践

Views:
121
Visibility:
Public
Votes:
0
Category:
data-ontap-8
Specialty:
nas
Last Updated:

可不使用  

适用场景

  • ONTAP 9
  • 集群模式 Data ONTAP 8
  • Data ONTAP 7-模式
  • Red Hat Enterprise Linux

问题解答

本文列出了与运行 Data ONTAP 7- 模式或集群模式 Data ONTAP 的 NetApp FAS 控制器结合使用时 RHEL 客户端的常见问题,解决方法和最佳实践

已知问题和解决方法

RHEL 5.x
  1. 问题 1
    RHEL5.8 :挂载sec=krb5时显示警告为“rpc.idmapd/rpc.gssd appears not to be running”。
    说明:挂载在rpc.idmapd/rpc.gssd appears not to be running运行时显示为“”的错误,因此nfs-kerberos 当挂载时失败sec=krb5
    解决方法:将nfs-utils软件包更新为 1.0.9-66.EL5 或更高版本。有关更多信息、请参见 [RHEL5.8]NFSv4 "ount" 命令生成有关 RPC 服务未运行的警告
  2. 问题 2
    RHEL5.9 :chmodchgrpchown 命令在 NFSv3 挂载上失败。
    解决方法:遍历已装入的路径、然后使用chmodchgrpchown 命令来运行。
  3. 问题 3
    RHEL 5.10 和 RHEL 5.11 : NLM 客户机无法通过待定的解锁操作恢复锁定。
    说明:当客户机执行 NLM 锁定恢复时、 RHEL 5.10 和 RHEL 5.11 NLM 客户机可以进入一种状态、在该状态下他们可以停止发出暂挂解锁操作、并且只收回现有锁定、使暂挂解锁操作未解锁且未回收。
    解决方法: RHEL 5 中没有可用的解决方法。升级到 RHEL 6.6 GA 客户端、这些客户端在执行锁定恢复时可以正确处理待处理的解锁操作、并且在恢复后清除所有锁定。
  4. 问题描述 4
    RHEL 5.11 :在存储故障转移操作期间, RHEL5U11 NFSv3 挂载发生 "EIO ( errno=5 ) " 命中。
    说明: RHEL 5.11 没有最新的 SunRPC 层修复程序,导致客户端 IO 错误。
    解决方法: RHEL 5 中没有可用的解决方法。将客户端升级到最新的 RHEL 内核(如 RHEL 6.6 GA )、以解决此问题并提供最新的修复程序。 
  5. 问题 5
    RHEL 5.11 :“ Error:No Locks Available (错误:无可用锁定(错误号 =37 )” Hit on NFSv3 Mounts During Storage Failover Operations
    (存储故障转移操作期间的 NFSv3 挂载)说明: RHEL 5.11 没有最新的 SunRPC 层修复程序,导致 "Error #37" 故障。
    解决方法: RHEL 5 中没有可用的解决方法。将客户端升级到最新的 RHEL 内核(如 RHEL 6.6 GA )、以解决此问题并提供最新的修复程序。 
  6. 问题 6 :
    报告以下错误信息:
    • /var/log/messages:Aug 16 19:08:17 uscf1plat0 kernel: NFS: v4 server 10.113.49.8 returned a bad sequence-id error!

      grep sequence-id messages.1
      Aug 16 19:08:17 uscf1plat0 kernel: NFS: v4 server 10.113.49.8 returned a bad sequence-id error!
      ...
      Aug 22 01:09:27 uscf1plat0 kernel: NFS: v4 server 10.113.49.8 returned a bad sequence-id error!
    • 存储系统上没有匹配的日志
    • 已检查 pktt :客户端进入写入呼叫环路后、存储系统将返回 NFS4ERR_BAD_STATEID
    解决方法:有关详细信息、请参见 Red Hat 错误 620502- [NetApp 5.6 Bug ] RHEL NFS 客户端与 NetApp NFSv4 共享断开: v4 Server 返回错误序列 ID 错误!
RHEL 6.x
  1. 问题 1
    RHEL 6.x :nfs-kerberos如果permission deniedallow_weak_crypto禁用则失败并显示错误。
    说明kinit在这些客户端上启用后、nfs-kerberos身份验证将失败并显示kinit: No supported encryption types (config file error?)
    解决方法:添加allow_weak_crypto=yes/etc/krb5/krb5.conf使nfs-kerberos其正常工作。
     
  2. 问题 2
    RHEL 6.3/6.4 :chmodchgrpchown 命令在 NFSv3 挂载上失败。
    解决方法:遍历已装入的路径、然后使用chmodchgrpchown 命令来运行。
     
  3. 问题 3
    RHEL 6.2/0.3 :在 RedHat 6.2/0.3 客户端上运行的应用程序可能无法停止向 NFS 挂载点写入文件。按“ Ctrl C ”将不会有任何帮助。RHEL 6 (>KERNL 2.6.25) 和更高版本的挂载options intr/nointr选项已过时。挂起的应用程序应使用中止SIGKILL 
    解决方法:使用命令kill -9 pid终止进程。
     
  4. 问题 4
    RHEL 6.3/6.4 : NFSNo locks available 服务器崩溃时, NFSv3 进程偶尔会以“”退出。
    说明:服务器崩溃后、 NLM 不会重试等待字节锁定请求、而只是因为 -ENOLCK 应用程序出现错误而失败。
    解决方法:升级到 RHEL 6.3 勘误内核 (2.6.32-27946.1.EL6) 。6.4 勘误内核 (2.6.32-358.49.1.EL6) 。
     
  5. 问题 5
    RHEL 6.1/6.2/6.3 :
    说明:在 RHEL 6.1/6.2/6.3 客户端上运行的应用程序可能会挂起并BAD_STATID 出现错误;而 NFS v4.0 委派
    已启用解决方案:升级到 RHEL 6.3 勘误内核 (2.6.32-279.46.1.EL6) 。
     
  6. 问题 6
    RHEL 6.4 : RHEL 6.4 客户端上的目录列表中缺少 NFS v4.0 引用目录。
    说明: RHEL 6.4 客户端获取所有卷的查找,但仅列出其中一个 HA 存储节点的卷。可在以下位置使用 RedHat 进行跟踪: https://bugzilla.Redhat show_bug.cg?id=963337
     
  7. 问题 7
    RHEL 6.4 :在 RHEL 6.4 客户端上安装成功、sec=krb5卷具有导出 RO 规则集为 SYS 。
    说明: RHEL 6.4 客户机在RPCSEC_GSSAUTH_UNIX挂载期间将其安全级别从“”切换到“”,因此挂载在挂载时会成功sec=krb5,尽管卷已将 RO 规则集导出为 SYS 。同样、将 ro 规则导出为 sys 并加载krb5时也会成功、因为客户端会根据SECINFO 回复切换安全级别;但这似乎是一个安全漏洞。在以下位置跟踪 RedHat : https://bugzilla.Redhat show_bug.cg?id=948145
     
  8. 问题 8
    RHEL 6.4 : NFS v4.0 状态恢复可能会在委派权限检查时死锁OPEN
    说明:如果您在OPEN客户端同时检查委派的开放权限OPEN时发生恢复状态、则状态管理器可能会在开放所有者的 NFSv4 序列 ID 上死锁。
    解决方法:升级到 RHEL 6.4 勘误内核 (2.6.32-358.49.1.el6.x86_64 ) 。
     
  9. 问题 9
    RHEL 6.4 : NFS 4.0 :修复已撤消委托的处理。 setattr.
    说明_nfs4_do_setattr()如果没有可写的打开文件状态 ID 可用,则将使用委托状态 ID 。如果服务器撤消了该委托状态 ID 、则由于nfs4_handle_exception()缺少而导致调用无法处理错误struct nfs4_state、并且只会将错误转换为 IO 。
    解决方法:将客户端升级到 RHEL 6.4 勘误内核 (2.6.32-358.49.1.el6.x86_64 )及更高版本。
 
  • 问题 10
    RHEL 6.3/6.4 : NFS v4.0 StateID 恢复可能会zero_stateid NFS4ERR_BAD_STATEID导致循环。此问题正在 https://bugzilla.redhat.com/show_bug.cg?id=923939 中进行跟踪[1]
    解决方法:将客户端升级到最新的 RHEL 6.5 及更高版本。 
 
  • 问题 11
    RHEL6.x : cDOT :通过 NFSv4 在连接卷上运行 chown-R 时出现循环目录结构警告。此问题正在 https://bugzilla.redhat.com/show_bug.cg?id=1223978 中进行跟踪[2]
    说明:如果挂载了多级别接合路径( /vol1/vol2/vol3 )、则在执行 setattr 或 chmod 时可能会看到递归目录结构警告。
    解决方法:升级到最新的内核 6.7 。
RHEL 7.x

最佳实践

有关[3]“集群模式 Data ONTAP NFS 最佳实践和实施指南”的信息,请参见 TR-4067 。

  • 问题 12
    RHEL 6.x : "MIT krb5gs_accept_sec_context() 如果票证结束时间在服务器当前时间之前到期、不考虑 Kerberos 时钟偏差。请访问 http://krbdev.mit.edu/rt/ticket/display.html?id=8268
    说明进行跟踪: " 如果检查触发器,则 GSS_ACCEP_SEC_Context() 在 GSS 上下文刷新时返回 GSS_S_credentials_expired ,这是不正确的,因为 IT暗示 NFS 客户端的 Verifier_cred_handle 已过期。
    检查失败,并且在以下情况下将“权限被拒绝”返回应用程序:
    1) 服务器时钟比客户端时钟要快、但在服务器配置的 Kerberos 时钟偏差内。
    2) 服务票证的最大使用寿命小于 TGT 的最大使用寿命。
    3) 当客户端服务票证根据客户端时钟正常且根据服务器时钟过期时、 NFS 客户端在“时钟偏差窗口”期间在 Kerberos 共享上发送请求。
    这会导致在时钟偏差窗口期间向应用程序返回“权限被拒绝”错误。在这种情况下、服务器将拒绝带有 AUTH_ERROR 的 NFS 请求、该错误会触发客户端上的 GSS 上下文刷新尝试。客户机将使用现有的服务器服务票证进行刷新,该刷新被服务器拒绝并出现 GSS_S_Credentials_Expired 错误。请注意,如果服务票证可以刷新、则一旦服务票证在客户机上过期、这种情况会自动发生、从而迫使客户机刷新服务票证。 "

    解决方法:解决方法是将 KDC 最大服务票据寿命配置为等于 TGT 最大生命周期。在这种情况下、客户机在要求刷新服务票证时、首先必须刷新 TGT , Linux NFS 客户机上的 TGT 会考虑到 Kerberos 时钟偏差。

  • 问题 13 :
    RHEL6.3 、 6.4 、 6.5 : RHEL NFS 客户端在较旧的 RHEL6 内核和 NFSv4.1 中挂起和 I/O 中断( BURT:814789 )。 
    说明:在运行 RHEL 6.4 和 RHEL 6.3 等 olderRHEL 6 内核的 Red Hat Enterprise Linux ( RHEL ) NFS 客户端上使用 NFSv4.1 时、在执行 LIF 迁移等 NetApp 特定控制器任务时、您可能会遇到客户端问题(例如挂起和长时间 I/O 中断)、 这就要求客户端在繁重的工作负载下恢复状态。

    解决方法:上述问题已在下面介绍的最新 RHEL 6.5.Z 勘误表包中得到解决:
    1) kernel-2.6.32-431.29.2.el6
    2) nfs-utils-1.2.3-39.el6_5.3
    ) libtirpc-0.2.1-6.el6_5.2
    为了避免这些问题,建议将客户端升级到相应的 RHEL 6.5.z 勘误表。

  • 问题 14 :
    RHEL 6.4 、 6.5 、 6.5z : RHEL NFS 客户端 I/O 中断和错误( Burt : 866544 )。 
    说明:在运行较旧内核(如 RHEL 6.5 )的 Red Hat Enterprise Linux ( RHEL ) NFS 客户端上会发现 I/O 中断和错误。这适用于所有 NFS 版本、包括 NFSv3 、 v4.0 和 v4.1 。

    解决方法: RHEL 6.6 GA kernel-2.6.32-504.el6 现已解决上述问题。建议将客户端升级到 RHEL 6.6 GA 以获得这些修复程序并避免遇到上述问题。
    1. 问题 1
      RHEL7.0x : RHEL 7.0 NFS 客户端问题和修复( Burt:915798 )
      说明: NFS 客户端 I/O 错误、内核崩溃、 Kerberos 安装点上的权限被拒绝错误以及较旧的 Red Hat Enterprise Linux (RHEL) 内核(如 RHEL 7.0 )上出现间歇性数据损坏问题。在所有 NFS 版本(包括 NFS v3 、 V4.0 和 V4.1 )中都可以看到这一点。
      解决方法: RHEL 7.1 GA kernel-3.10.0-229.el7 中现在已解决上述问题。将客户端升级到此 RHEL 7.1 GA 版本以访问这些修复程序,从而避免遇到上述问题。
       
    2. 问题 2
      RHEL 7.x :在 pNFS 装载上卸载卸载卸载时,在出现 IO 错误后不会销毁到 DS 的会话。此问题正在 https://bugzilla.redhat.com/show_bug.cg?id=1234986 上进行跟踪[4]
      说明:在 RHEL 7.x 客户端上、如果使用 pNFS 装入、并且执行 umount 命令、则客户端可能无法删除与服务器的会话。
      解决方法:升级到最新的内核版本 7.1z 或 7.2 ( > 内核 3.10.0-320 )。
    3. 问题 3 : RHEL7.x :由于使用 pNFS 的 RHEL7.1 上的 SetAttr 上的 admin_revoked 而收到了 EIO 。在 https://bugzilla.redhat.com/show_bug.cg?id=1214410 中对此进行了跟踪:
      在 RHEL 7.x 客户端上、如果使用 pNFS 安装服务器且必须执行故障转移(接管 / 恢复)、则可能会看到 EIO 错误(错误 =5 )
      解决方法: 升级到 7.1z 或 7.2 的最新内核版本( > 内核 3.10.0-289 )
    4. 问题 4
      RHEL7.1 :灾难侧集群上的卷的 NFS IO 间歇性失败后 MetroCluster 切换。在 https://bugzilla.redhat.com/show_bug.cg?id=1240790
      说明:在 RHEL 7.x 客户端上、如果使用 NFSv4 装入存储系统、并且存储系统必须通过 MetroCluster 切换、则可能会看到和 EIO (错误 =5 )。
      解决方法:升级到 7.1z 或 7.2 的最新内核版本( > 内核 3.10.0-295 )
    5. 问题 5
      RHEL7.x : cDOT :通过 NFSv4 在连接卷上运行 chown-R 时出现循环目录结构警告。此问题正在 https://bugzilla.redhat.com/show_bug.cg?id=1225090 上进行跟踪[5]
      说明:如果挂载了多级别接合路径( /vol1/vol2/vol3 )、则在执行 setattr 或 chmod 时可能会看到递归目录结构警告。
      解决方法:升级到最新的 7.1 内核
    6. 问题 6
      RHEL7.1 :在使用新的 RHEL7.1 客户端执行 liF 迁移后关闭文件后、 NFSv4 共享未清除。可在以下位置跟踪: https://bugzilla.redhat.com/show_bug.cg.cgi ? id=1263376
      说明: 如果在 NFSv4 . x 挂载上有打开的文件和锁定文件、并且服务器通过 LIF 迁移或 SFO ,则可能会看到锁定未被清除。这可能会导致数据损坏。
      临时解决策:使用内核版本 3.10.0-320 或更高版本
    7. 问题描述 7
      RHEL6.x/7.x : "SECD 使用的 MIT krb5 GSS_Accept_sec_context( )实施会拒绝传入令牌,前提[6]
      是服务单结束时间早于服务器当前时间,并且不考虑 Kerberos 时钟偏差。此操作正在 http://krbdev.mit.edu/rt/Ticket/Display.html?id=8268 问题描述上进行跟踪: " 如果检查触发器,则 GSS_Accept_sec_context ()会返回不正确的 NFS_SGS_CONS_d_CONSIFORITICENS_ ,因为处理已过期的客户端凭据已过期。
      如果:
      1 )服务器时钟位于客户端时钟前面,但位于服务器配置的 Kerberos 时钟偏差范围内,则检查失败,并将 " 权限被拒绝 " 返回给应用程序。
      2) 服务票证的最大使用寿命小于 TGT 的最大使用寿命。
      3) 当客户端服务票证根据客户端时钟正常且根据服务器时钟过期时、 NFS 客户端在“时钟偏差窗口”期间在 Kerberos 共享上发送请求。
      这会导致在时钟偏差窗口期间向应用程序返回 " 权限被拒绝 " 错误。在这种情况下、服务器将拒绝带有 AUTH_ERROR 的 NFS 请求、该错误会触发客户端上的 GSS 上下文刷新尝试。客户机将使用现有的服务器服务票证进行刷新,该刷新被服务器拒绝并出现 GSS_S_Credentials_Expired 错误。请注意,如果服务票证可以刷新、则在客户端上服务票证过期后、这种情况会自动发生、从而迫使客户端刷新服务票证。 "
      解决方法: 解决方法是将 KDC 最大服务票据寿命配置为等于 TGT 最大生存期。在这种情况下、客户机在要求刷新服务票证时、首先必须刷新 TGT , Linux NFS 客户机上的 TGT 会考虑到 Kerberos 时钟偏差。

追加信息

不适用