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