物理服务器断网重连后Volume无法自动恢复,本质是内核未触发重试机制或路径状态未刷新,需协同处理多路径服务、iSCSI会话恢复及内核超时参数:启用multipathd并执行multipath -r;用iscsiadm -m node --login手动重连;将设备timeout调至180秒并确保scsi_mod.dev_loss_tmo=60等内核参数生效。
物理服务器断网重连后,volume(尤其是基于iscsi或fc的块存储)在块设备层无法自动恢复连接、持续报错(如“device not found”“i/o error”“connection reset”),本质是底层存储链路中断后,内核未触发重试机制或路径状态未及时刷新。这不是简单重启服务能解决的问题,需从设备路径管理、协议重连策略和内核行为三方面协同处理。
检查并启用多路径(Multipath)服务
单路径环境下,网络闪断会导致内核直接标记设备为failed,且不会主动重试;启用multipath可提供路径冗余与自动故障切换能力:
- 确认multipath-tools已安装并运行:
systemctl status multipathd,若未运行则启动:systemctl enable --now multipathd - 检查是否识别到存储路径:
multipath -ll,若无输出或显示“ghost”状态,说明HBA/网卡未重新探测到目标 - 强制刷新路径:
multipath -r(重载配置)或multipath -F && multipath(清空并重建) - 确保
/etc/multipath.conf中启用了自动重试参数,例如:defaults {<br> retrigger_delay "5"<br> failback immediate<br>}
验证iSCSI会话状态并手动恢复
iSCSI发起端(initiator)在断网后常卡在“Logging in to [iface: default, target: iqn.xxx, portal: x.x.x.x,3260]”或“session is terminated”状态,需人工干预:
- 列出当前会话:
iscsiadm -m session,若无输出或显示“transport is not available”,说明连接已丢失 - 尝试重新登录目标:
iscsiadm -m node -T <iqn> -p <ip:port> --login - 若提示“session already exists”,先logout再重试:
iscsiadm -m node -T <iqn> -p <ip:port> --logout - 确保自动重连开启:
iscsiadm -m node -T <iqn> -p <ip:port> -o update -n node.startup -v automatic
调整内核块设备超时与重试参数
Linux默认对SCSI设备的IO超时较短(30秒),断网恢复慢于该阈值时,内核会直接上报I/O错误并冻结设备。需延长等待窗口并启用路径重试:
- 临时修改设备超时(以
sdb为例):echo 180 > /sys/block/sdb/device/timeout(单位:秒) - 对所有新发现的LUN统一设置,可写入udev规则:
ENV{ID_BUS}=="scsi", ENV{ID_VENDOR}=="YOUR_STORAGE_VENDOR", RUN+="/bin/sh -c 'echo 180 > /sys$DEVPATH/timeout'" - 启用SCSI层路径重试(适用于FC/iSCSI):
echo 1 > /sys/block/sdb/device/ehci_hcd/enable不适用,正确方式是确保scsi_mod.use_blk_mq=1及scsi_mod.dev_loss_tmo=60等内核启动参数已配置
确认存储侧目标状态与CHAP认证一致性
服务器重连失败,有时问题不在本地,而是存储端会话残留或认证失效:
- 登录存储管理界面,检查该服务器IQN是否仍在线;如有“stale session”,手动清除
- 若启用CHAP双向认证,确认服务器
/var/lib/iscsi/nodes/<iqn>/<ip>,<port>/default中的node.session.auth.username和node.session.auth.password未被意外覆盖 - 断网期间若存储端重启过,部分阵列(如某些Dell EMC型号)需在服务器侧执行
iscsiadm -m discovery -t sendtargets -p <ip>重新发现目标
这类问题不复杂但容易忽略细节,关键在打通“网络恢复→协议重连→设备路径刷新→IO重试”整条链路。每次断网后,优先看multipath -ll和iscsiadm -m session输出,比盲目重启服务更有效。

















