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

适用场景

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

问题解答

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

注意: 适用于NFS v2/v3/v4.0互操作性解决方案IMT中的警报/注释部分介绍了RHEL 8和9问题,如果有,还在NFS v4.1互操作性下介绍了这些问题。

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 'mount'命令生成有关RPC服务未运行的警告
  2. 问题描述2
    RHEL5.9: chmod 、 chgrp 和 chown  命令在NFSv3挂载上失败。
    临时解决策:转至已挂载路径,然后使用 chmod 、 chgrp 和 chown  命令。
  3. 问题描述3: 
    RHEL 5.10和RHEL 5.1.1:NLM客户端可能无法通过挂起的解锁操作恢复锁定。
    问题描述:当客户端执行NLM锁定恢复时,RHEL 5.10和RHEL 5.1.1 NLM客户端可能会进入一种状态,即停止发出待定解锁操作,仅回收现有锁定,而具有待定解锁操作的锁定则不会解除锁定,也不会回收。
    临时解决策:RHEL5中没有可用的临时解决策。升级到RHEL 6.6 GA客户端、以便在执行锁定恢复时正确处理待定解锁操作、并且恢复后会清除所有锁定。
  4. 问题描述4
    RHEL 5.1.1:在存储故障转移操作期间、对RHEL5U11 NFS3挂载执行了"EIO (errno=5)"命中。
    问题描述:RHEL 5.1.1没有最新的SUNRPC层修复程序,从而导致客户端EIO错误。
    临时解决策: RHEL5中没有可用的临时解决策。将客户端升级到最新的RHEL内核、例如RHEL 6.6 GA、它可以解决此问题并提供最新的修复。
  5. 问题描述5
    RHEL 5.1.1:在存储故障转移操作期间、对NFSv3挂载执行"error :No locks available (errno=37)"命中
    问题描述:RHEL 5.1.1没有最新的SUNRPC层修复、从而导致出现"error # 37"故障。
    临时解决策:RHEL5中没有可用的临时解决策。将客户端升级到最新的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 -[NFS 5.6错误] NetApp NFS客户端与NetApp NFSv4共享断开连接、原因:v4 server rheld a bad sSequence ID error!
RHEL 6.x
  1. 问题描述1
    RHEL6.x:    如果  禁用allow_weak_crypto 、nfs-kerberos 将失败并显示permission denied 错误。
    问题描述: 在  这些客户端上启用kinit 后, nfs-kerberos  身份验证将失败并显示 kinit: No supported encryption types (config file error?)(英文)。
    临时解决策:  在 /etc/krb5/krb5.conf 中添加allow_weak_crypto=yes  以使该 nfs-kerberos  正常工作。
     
  2. 问题描述2
    RHEL6.3/6.4: chmod 、 chgrp 和 chown  命令在NFSv3挂载上失败。
    临时解决策:转至已挂载路径,然后使用 chmod 、 chgrp 和 chown  命令。
     
  3. 问题描述3
    RHEL 6.2/6.3: 在Redhat 6.2/6.3客户端上运行的应用程序可能无法停止向NFS挂载点写入文件。按'Ctrl C'不会有帮助。RHEL6 (> kernl 2.6.25)及更高版本的挂载 options intr/nointr  选项已弃用。应使用 SIGKILL  中断挂起的应用程序。
    临时解决策:使用命令 kill -9 pid  终止进程。
     
  4. 问题描述4
    RHEL6.3/6.4:当No locks available 服务器崩溃时、NFSv3进程偶尔会退出并显示" NFS "。
    问题描述: 在服务器崩溃后,NLM未重试等待的字节锁定请求,只是应用程序 -ENOLCK  错误失败。
    临时解决策:升级到RHEL 6.3勘误内核(2.6.32-279.46.1.el6)。6.4勘误内核(2.6.32-358.49.1.el6)。
     
  5. 问题描述5
    RHEL 6.1/6.2/6.3:
    问题描述: BAD_STATID 启用NFS v4.0委派后、在RHEL 6.1/6.2/6.3客户端上运行的应用程序可能会挂起并显示 错误 
    临时解决策:升级到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存储节点的卷。在 https://bugzilla.redhat.com/show_bug.cgi?id=963337发现RedHat后进行了跟踪
     
  7. 问题描述7
    RHEL 6.4:使用 sec=krb5 在RHEL 6.4客户端上成功挂载 ,尽管卷已将导出ro规则设置为sys。
    问题描述: RHEL 6.4客户端会在挂载期间将其安全模式从"RPCSEC_GSS "切换到"AUTH_UNIX "、因此、使用 sec=krb5 挂载时挂载会成功、尽管卷已在导出时将ro规则设置为sys。同样、ro规则为sys的导出以及使用 krb5 挂载 也会成功、因为客户端会根据 SECINFO  回复切换安全模式;但这似乎是一个安全漏洞。在 https://bugzilla.redhat.com/show_bug.cgi?id=948145发现RedHat后进行了跟踪
     
  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:NFSv4.0:修复 setattr 对已撤销委派的处理。
    问题描述:  如果没有可用的可写打开文件状态ID,_nfs4_do_setattr() 将使用委派状态ID。如果服务器撤消了该委派状态ID,则  由于缺少 struct nfs4_state ,对nfs4_handle_exception() 的调用将无法处理该错误,而只是将该错误转换为EIO。
    临时解决策:将客户端升级到RHEL 6.4勘误内核(2.6.32-358.49.1.el6.x86_64)及更高版本。
 
  • 问题描述10
    RHEL6.3/6.4: NFS v4.0 Stateid恢复可能会导致 zero_stateid NFS4ERR_BAD_STATEID  环路。正在 https://bugzilla.redhat.com/show_bug.cgi?id=923939中对此进行跟踪。
    临时解决策: 将客户端升级到最新的RHEL 6.5及更高版本。 
 
  • 问题描述11
    RHEL6.x:CDOT:通过NFSv4在结合卷上运行chown -R时出现循环目录结构警告。正在 https://bugzilla.redhat.com/show_bug.cgi?id=1223978中对此进行跟踪。
    问题描述:如果挂载了多级别接合路径(/vol1/vol2/vol3),则在执行setattr或chmod时可能会看到递归目录结构警告。
    临时解决策:升级到最新的内核6.7。
RHEL 7.x

最佳实践

有关《集群模式Data ONTAP  NFS最佳实践和实施指南》、请参见TR-4067

  • 问题描述12
    RHEL6.x: "MIT krb5 GSS_accept sec_context()实施如果服务单结束时间在服务器当前时间之前到期,并且没有Kerberos时 偏差考虑因素,则SECD 将拒绝传入令牌。跟踪位置为#8268krb5 GSS_accept sec_context()允许时钟GSS问题描述:"If the check tr触发 器,(_accept creer_s_verifer_context)返回错误的nfs_context_context_refresh gss

    在以下情况下、检查将失败、并将"权限被拒绝"返回到应用程序:
    1)服务器时钟比客户端时钟快、但不超过服务器配置的Kerberos时钟偏差。
    2)服务单的最大生命周期小于最大TGT生命周期。
    3)在"时钟偏差窗口"期间、NFS客户端正在发送Kerberos共享上的请求、此时、客户端服务票据根据客户端时钟正常运行、并根据服务器时钟过期。
    这会导致在时钟偏差窗口期间向应用程序返回"权限被拒绝"错误。在这种情况下、服务器将拒绝NFS请求、并显示AUATH_ERROR、此错误会在客户端上触发GSS上下文刷新尝试。客户端将使用现有服务器服务单进行刷新、但此刷新被服务器拒绝、并显示GSS_S_credirts_expired错误。请注意、如果服务单可刷新、则一旦客户端上的服务单过期、此情况将自行修复、从而强制客户端刷新服务单。"

    临时解决策:临时解决策将KDC最大服务票证生命周期配置为等于TGT最大生命周期。在这种情况下、当要求客户端刷新服务单时、它必须先刷新TGT、而在Linux NFS客户端上、TGT会考虑Kerberos时钟偏差。

  • 问题描述13:
    RHEL6.3、6.4、6.5: 使用旧的RHEL 6内核和NFSv4.1时RHEL NFS客户端挂起且I/O中断(BURT:814789)。 
    问题描述:将NFSv4.1与运行RHEL 6内核(如RHEL 6.4和RHEL 6.3)的Red Hat Enterprise Linux (RHEL) NFS客户端结合使用时,在执行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
    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:915759)
      问题描述:在较早的Red Hat Enterprise Linux (RHEL)内核(如RHEL 7.0)上发现NFS客户端I/O错误、内核崩溃、在经验证的挂载点上出现权限被拒绝的错误以及间歇性数据损坏问题描述。所有NFS版本(包括NFS v3、v4.0和v4.1)都存在此问题。
      临时解决策:上述问题现已在RHEL 7.1 GA kernel-3.10.0-229.el7中得到解决。将客户端升级到此RHEL 7.1 GA版本以访问这些修复程序、从而避免遇到上述问题。
       
    2. 问题描述2
      RHEL7.x:在pNFS挂载上、在收到EIO错误后、umount不会销毁与DS的会话。正在 https://bugzilla.redhat.com/show_bug.cgi?id=1234986中对此进行跟踪。
      问题描述:在RHEL 7.x客户端上、如果使用pNFS挂载并执行umount命令、则客户端可能无法删除与服务器的会话。
      临时解决策:升级到最新内核版本7.1z或7.2 (> kernel 3.10.0-320)。
    3. 问题描述3:RHEL7.x: 由于使用pNFS在Rhel7.1上的setATTR上执行admin_revoked,因此收到EIO。正在 https://bugzilla.redhat.com/show_bug.cgi?id=1214410 问题描述
      中跟踪此问题 :在RHEL 7.x客户端上,如果使用pNFS挂载,并且服务器必须进行故障转移(接管/恢复),则可能会看到EIO错误(error=5)
      临时解决策:升级到最新内核版本7.1z或7.2 (> kernel 3.10.0-289)
    4. 问题描述4
      RHEL7.1:在MetroCluster切换后、灾难端集群上的NFS IO for vols间歇性失败。正在 https://bugzilla.redhat.com/show_bug.cgi?id=1240790 问题描述
      中跟踪此情况 :在RHEL 7.x客户端上,如果使用NFSv4挂载存储系统,并且存储系统必须执行MetroCluster切换,则可能会看到和EIO (error=5)。
      临时解决策:升级到最新内核版本7.1z或7.2 (>内核3.10.0-295)
    5. 问题描述5
      RHEL7.x:CDOT:通过NFSv4在结合卷上运行chown -R时出现循环目录结构警告。正在 https://bugzilla.redhat.com/show_bug.cgi?id=1225090中对此进行跟踪。
      问题描述:如果挂载了多级别接合路径(/vol1/vol2/vol3),则在执行setattr或chmod时可能会看到递归目录结构警告。
      临时解决策:升级到最新的7.1内核
    6. 问题描述6
      RHEL7.1:在使用新的RHEL7.1客户端进行LIF迁移后关闭文件后、NFSv4共享  锁定未清除。正在https://bugzilla.redhat.com/show_bug.cgi?id=1263376 问题描述
      中跟踪此问题:如果NFSv4.x挂载上有文件处于打开状态且锁定状态、而服务器正在进行LIF迁移或SFU、则可能会看到锁定未被清除。这可能导致数据损坏。
      临时解决策:使用内核版本3.10.0-320或更高版本
    7. 问题描述7
      RHEL6.x/7.x: "MIT krb5 GSS_accept sec_context()实施如果服务单结束时间在服务器当前时间之前过期,并且没有Kerberos时钟偏差考虑因素,则SECD  将拒绝传入令牌。正在http://krbdev.mit.edu/rt/Ticket/Display.html?id=8268 问题描述
      中进行跟踪:"If the check triers,GSS_accept sec_context() rets gss_credits_expired on the nfs_creier refresh表示nfs_clients_verifer.
      在以下情况下、检查将失败、并向应用程序返回"权限被拒绝":
      1)服务器时钟比客户端时钟快、但不超过服务器配置的Kerberos时钟偏差。
      2)服务单的最大生命周期小于最大TGT生命周期。
      3)在"时钟偏差窗口"期间、NFS客户端正在发送Kerberos共享上的请求、此时、客户端服务票据根据客户端时钟正常运行、并根据服务器时钟过期。
      这会导致在时钟偏差窗口期间向应用程序返回"权限被拒绝"错误。在这种情况下、服务器将拒绝NFS请求、并显示AUATH_ERROR、此错误会在客户端上触发GSS上下文刷新尝试。客户端将使用现有服务器服务单进行刷新、但此刷新被服务器拒绝、并显示GSS_S_credirts_expired错误。请注意、如果服务单可刷新、则一旦客户端上的服务单过期、此情况将自行修复、从而强制客户端刷新服务单。"
      临时解决策:临时解决策将KDC最大服务票证生命周期配置为等于TGT最大生命周期。在这种情况下、当要求客户端刷新服务单时、它必须先刷新TGT、而在Linux NFS客户端上、TGT会考虑Kerberos时钟偏差。

没有找到想要的答案?

上传日志让 AI 帮你诊断,或者在控制台里直接向 AI 提问。