PowerScale OneFS:在启用软件日志镜像 (SJM) 的情况下写入时,NFS 命中 EIO
摘要: 写入版本为 9.11 的 PowerScale OneFS 的网络文件系统 (NFS) 客户端可能会遇到罕见的写入操作失败,表现为输入或输出错误 (EIO)。
症状
OneFS 9.11 有一项称为软件日志镜像 (SJM) 的新功能,它与称为直接写入 (NCIO) 的 OneFS 9.7 功能相结合。
有关 SJM 的详细信息,请参阅: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
有关 NCIO 的详细信息,请参阅:https://infohub.delltechnologies.com/en-au/l/powerscale-best-practices-for-semiconductor-eda-design-environments/direct-read-and-direct-write/
此问题预计很少见(十亿分之一的操作)。PowerScale 节点消息日志中的以下错误确认问题发生在时间戳。错误的群集端时间戳必须与错误的客户端时间戳匹配:
2026-03-03T17:00:28.344642-05:00 isilon-2(id2) /boot/kernel.amd64/kernel: [txn_participant.c:5806](pid 82988="kt: dxt17")(tid=106414) txn_p_dl_block_budrecs() txn(0x2:0x133bcad0d) requested from devid:2 not found
此外,确定 EIO 错误是否在升级到 OneFS 9.11 后开始出现,并且日志文件中开始出现如下错误:
# grep txn_p_dl_ /var/log/messages | cut -d":" -f 2- | cut -d" " -f 8 | sort | uniq -c
5112 txn_p_dl_block_budrecs()
3672 txn_p_dl_deltas_budrecs()
# grep txn_p_dl_ /var/log/messages | cut -d":" -f 2- | cut -d" " -f 8 | sort | uniq -c
5200 txn_p_dl_block_budrecs()
3712 txn_p_dl_deltas_budrecs()
原因
要解决此问题,必须在受影响的群集上同时启用 SJM 和 NCIO。这些功能会导致争用条件,其中线程可能会失去对必要资源的访问。
要确定是否在群集上启用了 SJM,请运行以下命令:
isi storagepool nodepools list -v | egrep "Name|SJM"
要确定是否启用了 NCIO,请运行以下命令。两个命令都返回 '1' 启用 NCIO 时,在所有节点上。
isi_for_array -s sysctl efs.lbm.ncio.write.enable isi_for_array -s sysctl efs.bam.bsw_send_direct
示例:
(Confirms SJM is enabled) Isilon-1# isi storagepool nodepools list -v | egrep "Name|SJM" Name: f200_3.8tb-ssd_48gb SJM Enabled: Yes (Confirms NCIO is enabled. Both sets of output return '1' for all nodes, indicating NCIO is enabled) Isilon-1# isi_for_array -s sysctl efs.lbm.ncio.write.enable Isilon-1: efs.lbm.ncio.write.enable: 1 Isilon-2: efs.lbm.ncio.write.enable: 1 Isilon-3: efs.lbm.ncio.write.enable: 1 Isilon-1# isi_for_array -s sysctl efs.bam.bsw_send_direct Isilon-1: efs.bam.bsw_send_direct: 1 Isilon-2: efs.bam.bsw_send_direct: 1 Isilon-3: efs.bam.bsw_send_direct: 1
解决方案
解决方法是禁用 SJM 或 NCIO。没有必要同时禁用两者。
禁用 SJM 会降低文件系统日志的数据保护和冗余,如下所示:
启用 SJM 的节点池中的每个节点都会动态分配一个唯一的 Buddy,并且节点之间的后端网络连接针对低延迟批量数据流进行了优化。SJM的自动恢复方案可以在发生故障时使用Buddy日志的镜像内容来重新形成主节点的日志,从而避免了对节点进行SmartFail的高昂过程。如果必须以物理方式更换故障日志设备,也可以手动应用这种称为 SyncBack 的恢复方案。
来源:https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
在闪存节点上禁用 NCIO 可能会限制写入性能,或将写入性能降低大约 20%。
禁用 SJM。这必须按节点池完成:
isi storagepool nodepools modify <nodepool name> --sjm-enabled=false
要禁用 NCIO,请执行以下操作:
isi_sysctl_cluster efs.lbm.ncio.write.enable=0
isi_sysctl_cluster efs.bam.bsw_send_direct=0
禁用这些功能可能会影响群集。仅当群集工作流受到影响时,才应应用此项。如有任何问题或疑虑,请联系戴尔技术支持。