linux下配置mpio实现双纤多路径高可用,核心是识别同一lun的多条fc路径并聚合为/dev/mapper/mpatha等逻辑设备,通过multipath.conf适配存储厂商参数(如netapp用prio "ontap")、启用multibus策略与tur检测,确保故障自动切换、无感恢复。

Linux 下配置 MPIO(多路径 I/O)实现双纤(即双光纤通道)多路径高可用,核心是让系统识别同一 LUN 的多条物理路径,并统一聚合为一个逻辑设备(如 /dev/mapper/mpatha),在路径故障时自动切换、无感恢复。这不是简单装个包就能跑通的事,关键在路径识别、策略匹配和存储端协同。
确认双纤硬件连通与路径可见性
双纤意味着服务器至少配备两块 FC HBA 卡,分别连接两个独立光纤交换机,再连至存储阵列的两个控制器端口(如 A0、B0)。配置前必须验证:
- 运行
lsscsi -v或lsblk,确认同一 LUN 出现在多个 SCSI 主机总线上(例如[2:0:0:1]和[3:0:0:1]),对应设备名如/dev/sdb、/dev/sdc - 检查 HBA 状态:
systool -c fc_host -v查看端口状态是否为Online,cat /sys/class/fc_host/host*/port_state应返回Online - 用
sg_inq /dev/sdb和sg_inq /dev/sdc对比 Vendor、Model、Serial Number 和 TPGS(Target Port Group Support)字段,确保完全一致——这是 multipath 判定“同一设备”的依据
安装并启用 device-mapper-multipath
这是 Linux 原生、免授权的多路径方案,适用于主流企业存储(含浪潮、华为、NetApp、Dell EMC 等):
- RHEL/CentOS:执行
yum install -y device-mapper-multipath,然后systemctl enable --now multipathd - Ubuntu/Debian:安装
multipath-tools,启动服务:systemctl enable --now multipath-tools - 首次启用建议生成基础配置:
mpathconf --enable --with_multipathd y,它会创建默认/etc/multipath.conf并启用服务
按存储厂商适配关键 multipath.conf 参数
不要直接用默认配置。必须根据存储型号设置 devices 段,否则可能降级为 failover 模式或路径检测失效。常见配置要点:
-
prio:指定优先级策略。浪潮/华为推荐
prio "alua";NetApp 必须用prio "ontap";EMC VMAX 用prio "emc" -
path_grouping_policy:双纤场景推荐
multibus(负载均衡),若存储为严格主备模式(如部分老款 IBM DS),则用failover -
path_checker:FC 环境首选
tur(Test Unit Ready),稳定低开销;避免用readsector0(需 root 权限且易被存储拒绝) -
features & hardware_handler:ALUA 存储需开启队列功能,例如
features "3 queue_if_no_path"+hardware_handler "1 alua" -
failback & no_path_retry:设为
immediate和queue,确保主路径恢复后快速切回,且临时中断不丢 IO
验证聚合设备与模拟故障切换
配置保存后重启服务:systemctl restart multipathd,立即验证:
- 运行
multipath -ll:应看到类似mpatha (3600c0ff00057a8b9e9a8b9e9a8b9e9a8) dm-2 INSPUR,SA5012,下方列出 2 条 active 状态的 FC 路径(如sdb、sdc),且状态为ready running - 检查设备节点:
ls -l /dev/mapper/mpatha应存在,且lsblk中只显示该聚合设备,不再出现重复的sdb/sdc - 手动模拟单路径故障:
echo "fail path 0" | multipathd -k,再运行multipath -ll,观察对应路径变为faulty,但聚合设备仍 online,IO 不中断 - 恢复路径后,
multipath -ll应显示路径重新变为ready,且failback immediate触发自动切回
双纤多路径不是一劳永逸的开关,它依赖存储端 ALUA 启用、HBA 驱动兼容、内核版本支持(建议 RHEL 8.6+/CentOS Stream 9+ 或 Ubuntu 22.04+)。配置完成后,务必在业务低峰期做一次真实链路拔插测试,确认切换时间在应用容忍范围内(通常











