登录
首页 >  文章 >  linux

Linux系统如何配置多路径(Multipath) 提高存储链路可靠性

时间:2026-05-24 19:26:20 341浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Linux系统如何配置多路径(Multipath) 提高存储链路可靠性》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

multipath服务启动后/dev/mapper/为空,主因是未识别到多路径SCSI设备;需检查LUN映射、多路径可见性、blacklist配置、内核模块加载,并用multipath -v2调试。

Linux系统如何配置多路径(Multipath) 提高存储链路可靠性

为什么 multipath 服务启动后设备没出现在 /dev/mapper/

常见现象是执行 systemctl start multipathd 后,ls /dev/mapper/ 为空,或只有 control 设备。这通常不是服务没起来,而是没有识别到符合多路径条件的 SCSI 设备。

关键检查点:

  • 确认存储阵列已正确映射 LUN 到主机,且主机端能看到多个路径(例如 /dev/sdb/dev/sdc/dev/sdd 等),用 lsblklsscsi -s 验证
  • 运行 multipath -v2(不是 -v3)手动触发发现——它会输出详细匹配过程,重点看是否出现 blacklistedskip: no path
  • 检查 /etc/multipath.conf 中是否误启用了 blacklist,尤其注意 devnode "^sd[a-z]" 这类默认规则会把所有本地 SATA 盘也拦掉;建议先注释整个 blacklist 段再试
  • 确认内核模块已加载:lsmod | grep dm_multipath,若无输出需执行 modprobe dm_multipath 并设为开机加载

multipath.conf 最小可用配置怎么写

新手常被默认配置吓退,其实生产环境起步只需 4 行有效配置。其余全删或注释,避免干扰。

编辑 /etc/multipath.conf,确保包含:

defaults {
    user_friendly_names yes
}
devices {
    device {
        vendor "NETAPP"
        product "LUN"
        path_grouping_policy multibus
        failback immediate
    }
}

说明:

  • vendorproduct 必须与 scsi_id -g -u -d /dev/sdb 输出中的 VENDORPRODUCT 完全一致(大小写敏感),不同厂商值不同,如 "DGC""IBM""HITACHI"
  • path_grouping_policy multibus 表示所有路径都参与 I/O,适合大多数中低端阵列;高端阵列(如 VMAX)需用 group_by_prio + path_checker tur
  • 不要加 wwid 字段——那是单设备硬编码,无法泛化;靠 vendor/product 匹配才是可维护做法

multipath -ll 显示 paths=0 或状态为 failed

这表示 multipathd 认为路径不可用,但底层 SCSI 设备可能仍能读写。典型原因不是线缆松动,而是路径未通过 path_checker 探活。

排查顺序:

  • 查日志:journalctl -u multipathd | grep -i "checker\|fail",看具体哪个设备、哪个路径失败
  • 手动测试路径连通性:sg_turs /dev/sdb(需装 sg3_utils),返回非零即路径不通;部分旧阵列不支持 TUR,得换 readsector0 检查方式
  • 临时修改 checker:multipathd -k"set path_checker readsector0 sdb",再 multipath -r 重载;若恢复,说明原配置的 path_checker tur 不兼容该阵列
  • 检查 HBA 卡驱动是否启用 NPIV 或 ALPA 模式冲突,某些 QLogic 卡需禁用 qla2xxx.qlport_down_retry=1 参数

应用层如何安全使用 multipath 设备

别直接在 /dev/mapper/mpathX 上建文件系统——这是最常见误操作。设备名可能因重启、路径增减而变化(mpathampathb)。

正确做法:

  • wwid 创建符号链接:ln -s /dev/mapper/$(cat /sys/block/mpathX/device/wwid) /dev/disk/by-id/scsi-$(cat /sys/block/mpathX/device/wwid | tr -d '[:space:]'),再让 LVM 或文件系统引用该路径
  • LVM 场景下,直接将 /dev/mapper/mpathX 加入 PV,因为 LVM 自带 UUID 识别,不受设备名变动影响:pvcreate /dev/mapper/mpathX
  • 挂载时用 UUID=...NAME=...(LVM 逻辑卷名),永远别写死 /dev/mapper/mpathX
  • 如果必须脚本化识别,用 multipath -j | jq -r '.maps[].wwid' 解析 JSON 输出,比解析 multipath -ll 文本可靠得多

设备重命名和路径收敛本身不难,难的是让上层不依赖瞬态名字——这点一旦忽略,故障时扩容或替换控制器就会卡住。

本篇关于《Linux系统如何配置多路径(Multipath) 提高存储链路可靠性》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>