跳转到主内容

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

Views:
3
Votes:
0
Category:
data-ontap-8
Specialty:
nas
Last Updated:

可不使用  

适用于

解答

本文列出了 RHEL 客户端与运行 Data ONTAP 7- 模式或集群模式 Data ONTAP 的 NetApp FAS 控制器一起使用时的主要已知问题、解决方法和最佳实践。

已知问题和解决方法

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 :在存储 Faover 操作期间、 RHEL 5U11 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 : "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 时钟偏差。

其他信息