首页/系统与基础设施/存储速查/多路径幽灵路径与异常状态排查
SAN 与光纤通道60 条

多路径幽灵路径与异常状态排查

幽灵路径是多路径软件中有记录但无法承载 I/O 的路径,多来自 ALUA standby 端口组、残留 SCSI 节点或已解除映射的旧 LUN。排查要先分清是阵列为设计保留的 standby 路径还是配置残留,清理前必须确认设备未被挂载、无进程与集群资源引用。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

幽灵路径是什么

幽灵路径(ghost path)指多路径软件里存在记录、但实际无法承载 I/O 的路径,Linux dm-multipath 会把它标为 ghost 或 faulty,Windows MPIO 会显示为 Unavailable 或 Standby。它通常来自三个来源:阵列 ALUA 中处于 standby 状态的端口组、SCSI 层残留(stale)的设备节点、以及主机扫描到但阵列侧已解除映射的旧 LUN。危害是路径数虚高、冗余度被误判,应用或集群可能扫到多余设备造成重复挂载。

基本信息

常见状态ghost、faulty、failed(Linux);Unavailable、Standby(Windows MPIO)
典型成因ALUA standby 端口组、残留 SCSI 设备、已解除映射的旧 LUN
观测工具multipath -ll -v3、multipathd show paths、dmsetup ls --tree、lsscsi
清理前置确认无进程占用、无文件系统挂载、无集群资源引用
权限要求主机 root/管理员;阵列与交换机侧查询权限

典型使用场景

  • 主机重启后路径数比基线多出若干条,需判断是多路径还是残留设备
  • 阵列在线扩容或重新映射 LUN 之后,主机看到重复的 sd 设备
  • 集群节点扫到同一个 LUN 的两个设备节点,引发仲裁盘或共享盘冲突
  • 应用挂载报设备忙或 UUID 冲突,需要确认是否存在幽灵设备
  • 多路径巡检发现 status=ghost,判断这是正常的 standby 路径还是配置残留

定位与清理

定位与清理
# 1) 列出所有路径及其状态、所属 WWID
multipathd show paths raw format '%d %w %t %s %p'
# 2) 关联设备与阵列 LUN 的对应关系
lsscsi -g && dmsetup ls --tree
# 3) 确认没有文件系统、进程或集群资源在使用该设备
findmnt /dev/sdc; lsof /dev/sdc
# 4) 先移除多路径映射,再删除底层 SCSI 设备
multipath -f mpathb
echo 1 > /sys/block/sdc/device/delete
# 5) 重新扫描,确认设备与路径数量回到预期
rescan-scsi-bus.sh -r

状态判读对照

状态含义处理建议
active ready running路径正常且在用无需处理
ghostALUA standby 或不可访问的端口组阵列支持 ALUA 时属正常,需核对优先级配置
faulty failed链路或登录异常先查光功率、CRC 与交换机端口状态
未被多路径纳管仅出现在 lsscsi 中确认是否残留设备,排除后删除节点
ALUA 阵列上出现 ghost 状态路径有时是设计行为:standby 路径被内核保留但不承载 I/O,此时应关注 prio 值是否指向优化路径,而不是急于删除设备。
删除 SCSI 设备前必须确认设备未挂载、无进程占用、未参与集群心跳或仲裁;正在使用的设备被删除会造成 I/O 错误乃至数据损坏。

易错点

  • 把 ALUA standby 路径当成故障路径清理,删掉了阵列设计上保留的冗余路径
  • 只删多路径映射不删底层 SCSI 设备,设备仍在 lsscsi 输出中并可能被再次纳入多路径
  • 删除设备前未检查挂载与进程占用,直接触发 I/O 错误甚至数据损坏
  • 用 rescan 代替清理,残留设备越扫越多,最终设备名漂移导致 fstab 或集群配置指向错误设备
  • 主机侧反复清理却不排查阵列映射与 zone 变更记录,问题每次重启后复发

数据来源与参考

  • Linux multipathd(8) 与 multipath.conf(5) 官方文档
  • Microsoft MPIO 路径状态与 mpclaim 官方文档
  • T10 SPC-4:SCSI 目标端口组与 ALUA 状态定义

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/multipath-ghost-path-troubleshooting.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​