iSCSI session 频繁 logout/login 的 timeout 与 MPIO 配置优化

17次阅读

iSCSI session 反复 logout/login 是内核驱动主动重建会话所致,主因包括网络抖动、NOOP_IN 超时、recovery_tmo 过短或 MPIO failover 失效;关键超时参数通过 /sys/class/iscsi_session/session*/ 下 recovery_tmo(建议 300~600)、abort_tmo(≥30)等动态调整,须在 session 为 Logging in 或 Free 状态时写入。

iSCSI session 频繁 logout/login 的 timeout 与 MPIO 配置优化

为什么 iSCSI session 会反复 logout/login?

这不是连接断开重连那么简单,而是内核 iscsi_tcpbnx2i 等驱动在检测到路径异常后触发的主动 session 重建。常见诱因包括:网络抖动导致 ping 超时、target 未响应 NOOP_INsession recovery timeout 设置过短,或 MPIO 多路径未正确 failover。根本原因往往藏在 /var/log/messages 里反复出现的 iscsi: detected conn errorsession recovery timed out

关键 timeout 参数在哪改?

所有超时值都通过 sysfs 接口动态控制,路径统一为 /sys/class/iscsi_session/session*/ 下的文件:

  • recovery_tmo:session 级恢复超时(秒),默认 120,建议设为 300~600
  • abort_tmo:abort task 命令超时(秒),默认 15,建议 ≥30
  • lu_reset_tmotgt_reset_tmo:LUN/target 复位超时,建议统一设为 30
  • fast_abort:设为 1 可跳过部分 abort 流程,减少 recovery 延迟

注意:这些值必须在 session 处于 Logging inFree 状态时写入,否则会报 Invalid argument。可配合 iscsiadm -m session -P 3 查看当前 session 状态。

MPIO 配置如何避免误触发 logout?

MPIO 本身不自动修复 session,它只负责路径选择与 failover。若配置不当,反而加剧 logout 频率:

  • path_selector 必须设为 "round-robin 0""queue-length 0",不能用 service-time(已弃用且易卡住)
  • 每条路径的 state 应为 active,用 multipath -ll 确认;若显示 failed,检查对应 session 的 recovery_tmo 是否已超
  • rr_min_io_rq 建议设为 1(而非默认 1000),尤其在小 IO 场景下能更快感知路径失效
  • target 端必须启用 Immediate DataInitialR2T,否则某些 initiator 会在 NOOP_IN 超时后直接 logout

另外,不要依赖 iscsiadm --mode node --op update 修改 node.session.timeo.replacement_tmo:这个值只影响 discovery 阶段,对已建立 session 无效。

验证与持续观察要点

改完参数后不能只看 iscsiadm -m session 显示“up”,要抓真实行为:

  • tcpdump -i any port 3260 -w iscsi.pcap 抓包,确认 NOOP_IN/OUT 间隔是否稳定(默认 5 秒)
  • 检查 /proc/scsi/scsi 中 LUN 的 State 是否长期为 running,而非反复经历 blocked → running
  • 若使用 Dell EMC Unity 或 NetApp ONTAP,务必确认 target 端 MaxConnectionsSessionIdleTime 未设得比 initiator 的 recovery_tmo 更激进

最常被忽略的是:同一 host 上多个 session 共享一个 network interface 时,单个 session 的 recovery_tmo 调高了,但底层网卡丢包率上升,最终仍会 cascade 触发全局 session 重建。这时候得查 ethtool -S 输出里的 rx_missed_errors

text=ZqhQzanResources