多条路径合成一个设备
多路径的本质是「同一个 LUN 有多条物理可达路径」,主机侧的 I/O 子系统把它们归并成一个逻辑设备,从而同时获得冗余与并发。实现方式是:SCSI 层先识别出多个 sd 设备,多路径软件用唯一标识(WWID,通常由阵列的卷标识推导)判断它们其实是同一个 LUN,再合并为 /dev/mapper 下的逻辑设备。冗余体现在某条路径故障时 I/O 自动转移到其他路径;并发体现在多条路径可同时承载 I/O,前提是这些路径在目标侧属于不同的、都处于可优化状态的端口。
基本信息
| 适用环境 | Linux(dm-multipath)、Windows(MPIO)、ESXi(NMP/PSP)、AIX |
|---|---|
| 归并依据 | WWID,由阵列提供的设备标识推导 |
| 逻辑设备 | /dev/mapper 下的归并设备(名称或别名) |
| 核心概念 | 路径组、优先级、路径选择策略 |
| 冗余目标 | 单条链路或控制器故障不中断 I/O |
| 前置条件 | fabric 分区与阵列映射两侧都支持多路径 |
典型使用场景
- 主机双 HBA 分别接入两台交换机,为每个 LUN 提供两条独立路径
- 阵列双控制器环境:控制器故障时 I/O 切到另一控制器路径
- 存储固件升级或控制器更换期间保持业务连续
- 排障时区分「设备层问题」与「路径层问题」
- 性能场景:让多条优化路径同时承载以提升总吞吐
查看归并结果
查看归并结果
# 多路径归并结果:逻辑设备、路径组、路径状态
multipath -ll
# 当前生效的合并配置(含内置默认值)
multipath -t | head -30
# SCSI 层看到的多个 sd 设备
lsscsi -t | grep -i fc
# 单条路径对应的 WWID
cat /sys/block/sda/device/wwid
# 查看路径的属性:wwid、设备、状态、优先级
multipathd show paths format "%w %d %t %o"概念与异常表现
| 概念 | 含义 | 异常表现 |
|---|---|---|
| WWID | 阵列给出的唯一标识,用于归并 | 归并失败会出现重复设备 |
| 路径组 | 优先级相同的一组路径 | 组内路径全故障则 I/O 中断 |
| 优先级 | 由 ALUA 状态或厂商插件给出 | 优先级错乱导致 I/O 走非优化路径 |
| 路径状态 | active、ghost、failed 等 | ghost 路径让 I/O 卡在错误目标 |
| 逻辑设备 | dev/mapper 下的归并设备 | 业务需绑定逻辑设备而非 sdX |
多路径的前提是路径真正独立:两个 HBA 端口接在同一台交换机,或存储侧两个前端端口属于同一故障域时,路径数看着是两条,实际冗余度只有一条。
文件系统与业务必须使用归并后的逻辑设备,直接用 /dev/sdX 会在设备增删后指向别的卷,属于数据损坏风险。