掉线的两种可能
盘掉线(dropout)在阵列里表现为成员盘离线、降级或直接标记故障。原因分两大类:一是盘自身真的失效,介质错误累积到无法完成正常的读写与错误恢复;二是路径侧出了问题,链路误码、接触不良、供电瞬断或控制器超时,让盘被误判为故障而踢出。两类现象相似但处置完全不同,所以先取证、再动手。
基本信息
| 典型现象 | 阵列降级(DEGRADED)、成员盘标记 Failed / Offline、主机侧出现 IO 错误与设备重置 |
|---|---|
| 取证三件套 | 阵列事件日志、盘 SMART 与错误计数、内核与背板日志 |
| 关键区分 | 介质错误与重分配扇区高多为真坏盘;误码、CRC、链路重置高多为路径问题 |
| 处置前提 | 确认是否已有热备盘开始重建、重建进度与剩余时间 |
| 受限条件 | 重建期间冗余为零,任何额外动作都在压缩可回退空间 |
| 记录要求 | 掉线时刻、槽位、序列号、错误计数都要留存,用于复盘与备件判定 |
典型使用场景
- 凌晨收到阵列降级告警,需要判断能否等到白天再换盘时
- 同一槽位反复掉盘,需要确认是盘的问题还是背板与插槽的问题时
- 同批次盘在相近时间点集中掉线,怀疑固件或批次缺陷时
- 掉线盘恢复上线后是否重新加入阵列,评估重建风险与业务窗口时
- 降级期间业务性能下滑,需要一边保业务一边做处置决策时
取证与状态确认
取证与状态确认
# 阵列侧:看降级状态、成员盘状态与事件日志
storcli /c0 show all
storcli /c0/eall/sall show all
# 盘侧:看介质错误、重分配扇区、链路错误计数
smartctl -a -x /dev/sdb
# 内核侧:设备重置、IO 错误、链路超时的时间点
journalctl -k --since '2 days ago' | grep -Ei 'reset|i/o error|timeout|link'
# 软件阵列场景可直接确认成员与重建状态
cat /proc/mdstat && mdadm --detail /dev/md0证据与结论对照
| 证据特征 | 倾向结论 | 处置方向 |
|---|---|---|
| 重分配扇区与介质错误持续增长 | 盘自身失效 | 按流程更换并确认备件一致 |
| 链路误码、CRC、重置计数高 | 路径或接触问题 | 先查线缆、背板、插槽再决定 |
| 同一槽位换新盘仍掉线 | 背板、供电或槽位故障 | 转查机箱与供电链路 |
| 同批盘在同一时间窗集中掉线 | 固件或环境因素 | 查固件版本、温度与供电记录 |
降级期间是整个阵列最脆弱的时刻:冗余已消失,此时做固件升级、扩容或重启等额外操作,一旦发生二次故障就可能直接丢数据。处置掉线应按「保业务优先、变更延后」排序。
掉线盘的原始证据在重新插回或重建后就基本无法还原,因此取证要在任何动作之前完成,尤其要保留盘上错误计数与阵列事件日志的原始输出。