NFSv3 / v4.0 的主要 RHEL 问题 / 解决方法 / 最佳实践
不可不使用
适用场景
- ONTAP 9
- 集群模式 Data ONTAP 8
- Data ONTAP 7-模式
- Red Hat Enterprise Linux
问题解答
本文列出了与运行 Data ONTAP 7- 模式或集群模式 Data ONTAP 的 NetApp FAS 控制器结合使用时 RHEL 客户端的常见问题,解决方法和最佳实践
已知问题和解决方法:
RHEL 5.x
- 问题 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 :
RHEL5.9 :chmod
、chgrp
和chown
命令在 NFSv3 挂载上失败。
解决方法:遍历已装入的路径、然后使用chmod
、chgrp
和chown
命令来运行。 - 问题 3 :
RHEL 5.10 和 RHEL 5.11 : NLM 客户机无法通过待定的解锁操作恢复锁定。
说明:当客户机执行 NLM 锁定恢复时、 RHEL 5.10 和 RHEL 5.11 NLM 客户机可以进入一种状态、在该状态下他们可以停止发出暂挂解锁操作、并且只收回现有锁定、使暂挂解锁操作未解锁且未回收。
解决方法: RHEL 5 中没有可用的解决方法。升级到 RHEL 6.6 GA 客户端、这些客户端在执行锁定恢复时可以正确处理待处理的解锁操作、并且在恢复后清除所有锁定。 - 问题描述 4:
RHEL 5.11 :在存储故障转移操作期间, RHEL5U11 NFSv3 挂载发生 "EIO ( errno=5 ) " 命中。
说明: RHEL 5.11 没有最新的 SunRPC 层修复程序,导致客户端 IO 错误。
解决方法: RHEL 5 中没有可用的解决方法。将客户端升级到最新的 RHEL 内核(如 RHEL 6.6 GA )、以解决此问题并提供最新的修复程序。 - 问题 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 :
报告以下错误信息:/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
RHEL 6.x
- 问题 1 :
RHEL 6.x :nfs-kerberos
如果permission denied
allow_weak_crypto
禁用则失败并显示错误。
说明:kinit
在这些客户端上启用后、nfs-kerberos
身份验证将失败并显示kinit: No supported encryption types (config file error?)
。
解决方法:添加allow_weak_crypto=yes
以/etc/krb5/krb5.conf
使nfs-kerberos
其正常工作。
- 问题 2 :
RHEL 6.3/6.4 :chmod
、chgrp
和chown
命令在 NFSv3 挂载上失败。
解决方法:遍历已装入的路径、然后使用chmod
、chgrp
和chown
命令来运行。
- 问题 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 :
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 :
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 :
RHEL 6.4 : RHEL 6.4 客户端上的目录列表中缺少 NFS v4.0 引用目录。
说明: RHEL 6.4 客户端获取所有卷的查找,但仅列出其中一个 HA 存储节点的卷。可在以下位置使用 RedHat 进行跟踪: https://bugzilla.Redhat show_bug.cg?id=963337
- 问题 7 :
RHEL 6.4 :在 RHEL 6.4 客户端上安装成功、sec=krb5
卷具有导出 RO 规则集为 SYS 。
说明: RHEL 6.4 客户机在RPCSEC_GSS
AUTH_UNIX
挂载期间将其安全级别从“”切换到“”,因此挂载在挂载时会成功sec=krb5
,尽管卷已将 RO 规则集导出为 SYS 。同样、将 ro 规则导出为 sys 并加载krb5
时也会成功、因为客户端会根据SECINFO
回复切换安全级别;但这似乎是一个安全漏洞。在以下位置跟踪 RedHat : https://bugzilla.Redhat show_bug.cg?id=948145
- 问题 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 :
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:
RHEL6.x:"MIT krb5 GSS_accept sec_context()实施如果服务单结束时间在服务器当前时间之前到期,并且不考虑Kerberos时钟偏差,则SECD使用的方法将拒绝传入的令牌。正在从#8268进行跟踪: krb5 gss_accept sec_context()不允许时钟偏差
问题描述:“如果检查触发器,gss_accept sec_context()在GSS上下文刷新时返回gss_s_credits_expired,这是不正确的,因为它表明NFS客户端的验证器_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.6 GA kernel-2.6.32-504.el6 现已解决上述问题。建议将客户端升级到 RHEL 6.6 GA 以获得这些修复程序并避免遇到上述问题。
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 。- 问题 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 :
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 : 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 :
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 :
RHEL7.x : cDOT :通过 NFSv4 在连接卷上运行 chown-R 时出现循环目录结构警告。此问题正在 https://bugzilla.redhat.com/show_bug.cg?id=1225090 上进行跟踪[5]。
说明:如果挂载了多级别接合路径( /vol1/vol2/vol3 )、则在执行 setattr 或 chmod 时可能会看到递归目录结构警告。
解决方法:升级到最新的 7.1 内核 - 问题 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:
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 时钟偏差。
- 问题 1 :
追加信息
不适用