切换验证在验证什么
双控存储通过 ALUA 属主关系让每个卷默认由某一控制器提供服务,控制器故障时由另一控制器接管其卷。多路径软件配合完成通路切换。验证的目标不是「能不能切」,而是切换过程对业务的实际影响:切换耗时、IO 是否中断、上层是否报错、故障恢复后是否自动回切到设计状态。
基本信息
| 触发方式 | 优雅下线控制器、断开链路、断电模拟,风险依次递增 |
|---|---|
| 观察指标 | 路径状态变化、切换耗时、业务错误率、IO 是否中断、回切是否发生 |
| 应用侧要素 | 超时与重试设置决定业务能否容忍切换期间的中断时长 |
| 缓存要素 | 写缓存是否镜像到对端控制器,决定故障瞬间数据是否安全 |
| 前置条件 | 冗余路径完整、对端控制器健康、有回滚步骤与窗口授权 |
| 输出物 | 切换时间、业务影响范围、异常现象与改进项,用于验收与复盘 |
典型使用场景
- 新存储上线验收,需要给出可复核的切换时间与影响范围数据时
- 更换控制器固件或硬件前,评估现有冗余在单侧失效下的表现时
- 定期高可用演练,验证应用超时设置是否匹配真实切换耗时
- 变更后回归:确认属主关系与路径策略已经回到设计状态时
- 出现非计划单侧故障后,复盘实际切换行为与设计预期是否一致时
切换期间的观察方式
切换期间的观察方式
# 另开窗口持续观察路径状态变化与恢复时间点
watch -n 1 multipath -ll
# 记录内核路径事件,切换与回切都会打点
journalctl -k -f | grep -Ei 'path|fail|reinstate'
# 业务侧同时观察延迟与错误,判断中断是否被应用吸收
iostat -x 1 60
# iSCSI 场景可进一步看会话与连接状态
iscsiadm -m session -P 3 | grep -Ei 'state|portal'验收项与常见不合格表现
| 验收项 | 期望结果 | 不合格表现 |
|---|---|---|
| 自动切换 | 无需人工介入即恢复 IO | 需手工重新扫描才恢复 |
| 切换耗时 | 小于应用超时与重试容忍值 | 业务报错或大量重试 |
| 回切 | 故障恢复后回到设计属主关系 | 长期运行在非优化路径 |
| 路径恢复 | 所有路径自动回到 active | 路径停在 failed 需手工清理 |
在生产环境做切换验证必须同时满足:窗口已授权、对端控制器与全部路径健康、备份与回滚方案就绪、有专人盯业务指标。任何一条不满足,都不要开始。
切换验证的结果要以业务侧指标为准,而不是只看阵列界面显示成功。存储层显示切换完成时,上层可能仍在重试队列里挣扎。