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

频繁的 iSCSI session logout/login 通常不是存储端故障,而是客户端 MPIO(多路径 I/O)与超时参数协同不当导致的路径震荡。关键在于让路径失效判断更稳、重连更可控,而非单纯缩短或延长某个 timeout。
确认 MPIO 状态与路径健康度
先排除物理层和网络层干扰:确保所有 iSCSI 路径(如不同网卡、交换机、IP 子网)实际可达且延迟稳定。在 Windows 中用 Get-IscsiSession | fl * 查看每个 session 的 IsConnected、ConnectionStatus 和 NumberOfConnections;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 暂挂被误判为超时
- FirstBurstLength 和 MaxBurstLength:保持 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 = 15 和 node.session.err_timeo.lu_reset_timeout = 30:避免 abort/LU reset 卡住路径
改完运行 iscsiadm -m node -R 重载配置,并用 iscsiadm -m session -r
配合存储侧做最小化协同
不建议在存储端激进调低 Target 的 Idle Timeout 或 NOOP 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),让存储主动配合客户端探测节奏。






























