配置要解决的三个问题
Linux 上的 SAN 多路径由 multipathd 与 multipath.conf 组成:内核 device-mapper 提供归并与转发能力,multipathd 负责监控路径状态、按策略切换与恢复,multipath.conf 决定归并规则与路径行为。配置工作可以归纳成三件事:让需要多路径的阵列设备被正确识别并归并(必要时用 devices 段落指定策略)、把不需要归并的设备排除(blacklist)、给关键参数设定合理的故障行为(no_path_retry、failback、path_checker)。
基本信息
| 适用平台 | 主流 Linux 发行版(RHEL/CentOS、SUSE、Ubuntu) |
|---|---|
| 组件 | multipathd 守护进程、multipath 命令、device-mapper |
| 配置文件 | multipath.conf,另有软件自带的默认配置 |
| 生效方式 | 多数参数改动 reload 生效,需持久启用 multipathd |
| 常用命令 | multipath -ll、multipath -v3、multipathd show paths |
| 关键参数 | path_checker、prio、no_path_retry、failback |
配置要点
- 先确认归并正确:每个 LUN 一个条目、路径数符合规划
- 用 blacklist 排除本地磁盘与非 SAN 设备,避免业务盘被误归并
- devices 段落按厂商与型号指定策略,覆盖内置默认值便于统一管理
- path_checker 与 prio 要与阵列能力匹配,支持 ALUA 的阵列交给内核处理
- no_path_retry 决定全路径故障时排队还是立即返错,直接影响应用行为
multipath.conf 精简示例
multipath.conf 精简示例
defaults {
user_friendly_names yes # 使用可读的映射名
find_multipaths yes # 自动判断哪些设备需要多路径
path_checker tur # 路径健康检查方式
failback immediate # 路径恢复后立即回切
no_path_retry 10 # 全路径故障时排队重试的次数
}
blacklist {
devnode "^sda" # 排除本地系统盘
}
devices {
device {
vendor "<厂商代号>" # 按阵列型号指定策略,取值以厂商文档为准
product "*"
path_grouping_policy group_by_prio
prio alua
}
}生效与验证
生效与验证
multipathd -k'show config' # 查看合并后的生效配置
systemctl reload multipathd # 多数参数改动可用 reload 生效
multipath -ll | grep -c running # 路径数量与状态核对
multipath -ll | head -20 # 确认路径组与优先级分布
# 谨慎操作:重建映射会短暂中断 I/O,业务运行中不要执行
multipath -F && multipath关键参数与注意点
| 参数 | 作用 | 注意点 |
|---|---|---|
| path_checker | 判断路径可用性的探测方式 | tur 通用,部分阵列需专用方式 |
| prio | 决定路径优先级 | 配错会让 I/O 长期走非优化路径 |
| path_grouping_policy | 路径如何分组 | group_by_prio 配合 ALUA 常用 |
| no_path_retry | 全路径故障时的行为 | 数值为排队重试,fail 表示立即返错 |
| failback | 路径恢复后是否回切 | 影响时延与负载分布 |
部分发行版把默认配置放在软件目录下,用户配置只做覆盖;排查「改了没生效」时先看合并后的生效配置,而不是只看自己写的那一份。
把本地磁盘意外纳入多路径归并,可能让根设备名变化,重启后系统无法引导。生产环境修改配置前先在测试机验证 blacklist 是否覆盖了所有本地盘。