0

0

multipath 多路径设备路径频繁切换或 active 路径不对称的配置坑

舞姬之光

舞姬之光

发布时间:2026-01-19 11:53:29

|

689人浏览过

|

来源于php中文网

原创

Linux multipath路径切换异常主因是配置不匹配:priority未对齐ALUA权重、pgpolicy与failback策略冲突、path_checker误判、ALUA状态同步延迟、WWID绑定冲突;需启用alua插件、设group_by_prio+failback 30、用tur检测、清bindings并校验WWID。

multipath 多路径设备路径频繁切换或 active 路径不对称的配置坑

Linux 下 multipath 多路径设备路径频繁切换或 active 路径不对称,通常不是硬件故障,而是配置不匹配或策略未对齐导致的。核心问题往往出在 路径优先级(priority)、路径组策略(pgpolicy)、failover 模式、以及底层存储侧的 ALUA 状态识别 上。

priority 设置未对齐存储真实路径权重

multipath 默认使用 const 优先级,所有路径权重相同,无法反映存储侧主备路径差异。若存储阵列(如 Dell EMC、HPE 3PAR、NetApp)已通过 ALUA 标明了 optimized/non-optimized 路径,但 multipath 未启用对应 priority 插件(如 aluaemc),就会导致路径权重恒定,负载无法自动倾向最优路径,甚至因探测抖动触发误切换。

  • 确认存储是否支持 ALUA:sg_inq -p 0x83 /dev/sdX 查看 device identifier,再用 sg_rtpg /dev/sdX 观察 TPID 和状态
  • /etc/multipath.conf 中为对应 vendor/product 启用插件:
    defaults {
      user_friendly_names yes
      find_multipaths yes
    }
    devices {
      device {
        vendor "DGC"
        product ".*"
        path_grouping_policy multibus
        getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
        features "2 pg_init_retries 50"
        hardware_handler "1 alua"
        path_checker tur
        priority alua
        failback immediate
        rr_weight priorities
      }
    }
  • 重启服务并重载配置:systemctl restart multipathd && multipath -r

pgpolicy 与 failback 不匹配引发路径震荡

使用 multibus 策略但 failback 设为 manual,会导致某条路径恢复后不会自动切回 preferred group;而设为 immediate 又可能在链路瞬断时反复切换 active group,尤其当底层 HBA 或交换机启用了快速链路检测(如 FCoE FIP keepalive 或 FC E_D_TOV 超时过短)时更明显。

音剪
音剪

喜马拉雅旗下的一站式AI音频创作平台,强大的在线剪辑能力,帮你轻松创作优秀的音频作品

下载
  • 生产环境推荐组合:
    path_grouping_policy group_by_prio(按 priority 自动分组)
    failback 30(30 秒延迟回切,避免瞬断干扰)
    rr_min_io_rq 1(避免 IO 聚集在单路径)
  • 禁用无意义的 path_checker:例如对 ALUA 存储使用 tur 是合适的,但若用 readsector0,在 LUN mask 变更或 ACL 切换时易返回 false negative,触发误 down 路径

底层路径状态未同步(ALUA state stale)

multipathd 默认每 30 秒轮询一次 ALUA 状态,但某些存储固件在 LUN 所属控制器切换后,ALUA target port group state 更新延迟或未广播,导致 multipath 仍认为原路径是 optimized,继续发 IO,直到 timeout 后才 failover —— 此过程表现为“active 路径长期不对称”且无日志报错。

  • 手动刷新 ALUA 状态:multipathd -k"switch group"multipathd -k"reconfigure"
  • 缩短探测间隔(谨慎):defaults { polling_interval 10 },但不宜低于 5 秒,否则增加 SCSI 总线压力
  • 检查存储端是否开启 ALUA implicit transition:部分阵列需显式启用该模式,否则只响应 explicit 命令,multipath 的 alua 插件无法感知动态变化

udev 规则或 WWID 冲突干扰路径识别

当主机曾连接过同型号但不同 LUN 的存储,或更换 HBA 卡后未清理旧路径,/var/lib/multipath/bindings 中残留的 WWID 映射可能导致新设备被错误分配别名(如 mpatha → mpathz),进而使 dm-multipath 表项与实际路径拓扑脱节,表现为 “active 路径数正确但 I/O 全走某两个物理路径”。

  • 清空绑定缓存:rm /var/lib/multipath/bindings && systemctl restart multipathd
  • 验证 WWID 唯一性:scsi_id --whitelisted --device=/dev/sdX 对每条路径执行,确保同一 LUN 下所有路径返回相同 WWID
  • 禁用自动生成别名(可选):user_friendly_names no,直接用 WWID 命名(如 mpath-3600a09803830455a0000000000000000),排除命名混淆

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

534

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

415

2024.03.13

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

524

2023.09.20

css3transition
css3transition

css3transition属性用于指定如何从一个CSS样式过渡到另一个CSS样式,本专题为大家提供transition相关的文章、相关下载和相关课程,大家可以免费体验。

230

2023.06.27

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

703

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号