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

4次阅读

iSCSI 频繁登出 / 登入主因是客户端 MPIO 与超时参数协同不当引发路径震荡;应优先验证路径可达性与稳定性,再合理调优 MaxRequestHoldTime、RecoveryTimeout 等参数以增强判断稳健性与重连可控性。

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

频繁的 iSCSI session logout/login 通常不是存储端故障,而是客户端 MPIO(多路径 I/O)与超时参数协同不当导致的路径震荡。关键在于让路径失效判断更稳、重连更可控,而非单纯缩短或延长某个 timeout。

确认 MPIO 状态与路径健康度

先排除物理层和网络层干扰:确保所有 iSCSI 路径(如不同网卡、交换机、IP 子网)实际可达且延迟稳定。在 Windows 中用 Get-IscsiSession | fl * 查看每个 session 的 IsConnectedConnectionStatusNumberOfConnections;Linux 下用 iscsiadm -m session -P 3 核查各 connection 的 state 和 ping 延迟。

若发现某路径反复断开但网络 ping 正常,大概率是超时参数触发了误判。

调整关键 timeout 参数(Windows 示例)

以下 注册表 路径需在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E97B-E325-11CE-BFC1-08002BE10318}xxxx(iSCSI HBA 实例)下设置 DWORD 值,修改后需重启 iSCSI service 或重启主机:

  • MaxRequestHoldTime:默认 60 秒。设为 120,避免大 IO 暂挂被误判为超时
  • FirstBurstLengthMaxBurstLength:保持 262144(256KB),过小会增加协议开销,间接拖慢响应
  • MaxConnections:每 session 设为 2(MPIO 至少两路),避免单路径承载全部流量
  • RecoveryTimeout:默认 60,建议设为 180,给路径恢复留出缓冲窗口,防止快速 failover/failback 震荡

Linux(open-iscsi)对应调优项

编辑 /etc/iscsi/iscsid.conf,针对每条 target 修改 node.session.* 设置:

  • node.session.timeo.replacement_timeout = 180(替代 Windows 的 RecoveryTimeout)
  • node.conn.timeo.noop_out_interval = 30(发送 NOOP 探测间隔,不宜低于 20)
  • node.conn.timeo.noop_out_timeout = 15(NOOP 响应等待上限,必须
  • node.session.err_timeo.abort_timeout = 15node.session.err_timeo.lu_reset_timeout = 30:避免 abort/LU reset 卡住路径

改完运行 iscsiadm -m node -R 重载配置,并用 iscsiadm -m session -r -R 刷新会话。

配合存储侧做最小化协同

不建议在存储端激进调低 Target 的 Idle TimeoutNOOP Interval。理想配比是:存储侧 NOOP interval ≥ 客户端 noop_out_interval + 5 秒;Target 的 Max Connections per Session ≥ 客户端配置的 MaxConnections。

若使用 Dell PowerStore、NetApp ONTAP 或 HPE Nimble,可启用其 iSCSI MPIO-aware 模式(如 ONTAP 的 iscsi.ping_max_attempts 设为 3),让存储主动配合客户端探测节奏。

text=ZqhQzanResources