链路误码的来路
存储链路包括 FC 光纤通道、以太网承载的 iSCSI 与 NVMe-oF、以及机箱内的 SAS。误码意味着信号在传输中出现比特错误,链路层靠重传和降速兜住,业务看到的是延迟上升与吞吐不稳。物理层是主因:端面污染、弯曲半径过小、连接器磨损、光模块老化或收发功率不匹配,都会让误码率缓慢攀升,直到某天直接断链。
基本信息
| 链路类型 | FC 光纤通道、以太网(iSCSI / NVMe-oF)、SAS 直连或级联 |
|---|---|
| 关键指标 | 误码率、CRC 错误、无效帧、链路重置次数、收发光功率 |
| 判读方式 | 看变化速率与同批链路的横向对比,绝对值需对照厂商给的参考范围 |
| 物理诱因 | 端面污染、弯折过度、跳线劣质、模块老化、模块与交换机不兼容 |
| 业务影响 | 重传与降速造成 IO 抖动,多路径场景下会触发路径切换 |
| 取证位置 | 主机侧 HBA 统计、交换机端口统计、阵列侧端口统计,三处对照最有效 |
典型使用场景
- 业务无规律抖动,需要在主机与交换机两侧同时确认是否有链路错误增长时
- 新上线或新布线后出现间歇性 IO 失败,排查跳线与模块质量时
- 更换光模块或跳线前,先记录基线统计以便事后对比验证效果时
- 多路径环境中某条路径反复 reinstated,判断是否应隔离该链路段时
- 扩容新增链路后,确认新链路频率与模式配置与既有链路一致时
两侧统计对照
两侧统计对照
# FC:主机侧看链路故障与错误帧计数(节点名随主机适配器编号变化)
cat /sys/class/fc_host/host0/statistics/link_failure_count
cat /sys/class/fc_host/host0/statistics/error_frame_count
cat /sys/class/fc_host/host0/statistics/invalid_crc_count
# 以太网承载:看错误包与协商速率是否符合预期
ethtool -S eth0 | grep -Ei 'err|drop|crc'
ethtool eth0 | grep -Ei 'speed|duplex'
# 内核侧看路径抖动与重试,时间点可与业务抖动对齐
journalctl -k --since '1 hour ago' | grep -Ei 'fc|iscsi|link down|reset'链路指标逐项读法
| 指标 | 含义 | 处理方向 |
|---|---|---|
| CRC / 无效帧 | 信号层面的错误计数 | 先清洁端面与更换跳线,再评估模块 |
| 链路重置次数 | 链路段反复重连 | 查模块、端口与对端交换机端口 |
| 收发光功率 | 是否在模块允许范围内 | 功率偏低多为污染、弯折或老化 |
| 协商速率下降 | 链路降速运行 | 核对两端配置与模块规格是否匹配 |
误码计数的价值在于趋势:开机以来累计几十次与最近一小时新增几十次,含义完全不同。排障前先记录当前基线,改动物理链路后再对比一次。
更换跳线或模块会在有冗余路径时触发一次路径切换,在没有冗余的单路径链路上等同于计划外中断。动手前先确认路径冗余与应用多路径状态。