Linux系统如何配置多路径(Multipath) 提高存储链路可靠性
时间:2026-05-24 19:26:20 341浏览 收藏
一分耕耘,一分收获!既然打开了这篇文章《Linux系统如何配置多路径(Multipath) 提高存储链路可靠性》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!
multipath服务启动后/dev/mapper/为空,主因是未识别到多路径SCSI设备;需检查LUN映射、多路径可见性、blacklist配置、内核模块加载,并用multipath -v2调试。

为什么 multipath 服务启动后设备没出现在 /dev/mapper/
常见现象是执行 systemctl start multipathd 后,ls /dev/mapper/ 为空,或只有 control 设备。这通常不是服务没起来,而是没有识别到符合多路径条件的 SCSI 设备。
关键检查点:
- 确认存储阵列已正确映射 LUN 到主机,且主机端能看到多个路径(例如
/dev/sdb、/dev/sdc、/dev/sdd等),用lsblk或lsscsi -s验证 - 运行
multipath -v2(不是-v3)手动触发发现——它会输出详细匹配过程,重点看是否出现blacklisted或skip: 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
}
}
说明:
vendor和product必须与scsi_id -g -u -d /dev/sdb输出中的VENDOR和PRODUCT完全一致(大小写敏感),不同厂商值不同,如"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 上建文件系统——这是最常见误操作。设备名可能因重启、路径增减而变化(mpatha → mpathb)。
正确做法:
- 用
wwid创建符号链接:ln -s /dev/mapper/,再让 LVM 或文件系统引用该路径$(cat /sys/block/mpathX/device/wwid)/dev/disk/by-id/scsi-$(cat /sys/block/mpathX/device/wwid | tr -d '[:space:]') - 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学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
246 收藏
-
186 收藏
-
417 收藏
-
356 收藏
-
147 收藏
-
339 收藏
-
341 收藏
-
335 收藏
-
384 收藏
-
134 收藏
-
256 收藏
-
493 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习