0

0

Linux dm-multipath 的 checker tur / rdac 与 path_checker 超时设置

冷炫風刃

冷炫風刃

发布时间:2026-02-24 15:51:10

|

746人浏览过

|

来源于php中文网

原创

应将 tur 超时设为 5 秒并启用 rdac 检查器:tur 默认 1 秒易误判,需在 multipath.conf 中配置 checker_timeout "5";rdac 阵列须匹配 vendor/product 并设 path_checker "rdac",其检测由 polling_interval(毫秒)控制,建议设为 3000–5000。

linux dm-multipath 的 checker tur / rdac 与 path_checker 超时设置

path_checker tur 超时太短导致路径频繁 flapping

Linux dm-multipath 默认用 tur(Test Unit Ready)做路径健康检查,但它的超时值默认只有 1 秒——对某些响应慢的存储阵列(比如带加密、压缩或高负载的 LUN),tur 很容易误判为路径失效,触发不必要的路径切换甚至 I/O 暂停。

实操建议:

  • tur 的实际超时由内核模块参数 scsi_mod.use_blk_mq=0 和设备队列深度共同影响,但更直接可控的是 multipath.conf 中的 checker_timeout
  • defaults 或具体 devices 块里加:
    checker_timeout "5"
    (单位秒,支持整数,最大建议不超过 10)
  • 改完后必须 sudo systemctl reload multipathd,且需确认 multipath -t 输出中该值已生效
  • 注意:部分老版本 multipath-tools(如 RHEL 7.6 之前)不识别 checker_timeout,得升级到 >= 0.7.4

rdac checker 在 Dell EMC Unity/VNX 上必须配 vendor/product

rdac 是专为 Dell EMC(原 EMC)存储设计的路径检测器,它依赖 SCSI INQUIRY 返回的 vendor/product 字符串匹配才能启用。如果没配对,multipath 会悄悄 fallback 到 directiotur,而后者在 RDAC 阵列上可能无法正确识别“伪离线”状态(比如控制器接管中)。

实操建议:

  • 先查设备真实标识:sudo sg_inq /dev/sdb | grep -E "(vendor|product)",典型输出是 vendor: EMC ,product: SYMMETRIXVNX
  • devices 块中显式声明:
    device {
        vendor "EMC     "
        product "VNX.*"
        path_checker "rdac"
    }
    (注意 vendor 字段必须补足空格到 8 字符)
  • product 支持正则,VNX.* 可覆盖 VNX5100/VNX5300 等变种;但 SYMMETRIXVNX 不可混用
  • 若仍 fallback,检查 /etc/multipath.conf 是否有更高优先级的 generic 规则覆盖了该设备

checker_timeout 对 rdac 实际无效,得靠 polling_interval

rdac 本身不走 SCSI TUR 流程,而是通过定期发 MODE SENSE(page 0xC9)查询阵列控制器状态,所以 checker_timeout 对它完全不起作用。真正控制检测频率的是全局 polling_interval(单位毫秒),默认 5000(即 5 秒)。

Img.Upscaler
Img.Upscaler

免费的AI图片放大工具

下载

实操建议:

  • 降低检测延迟可设:
    polling_interval "2000"
    ,但低于 2000ms 可能增加阵列负担,Dell 官方建议不低于 3000ms
  • 该值影响所有路径检查(包括 tur),不是 per-checker 配置项
  • 修改后同样要 systemctl reload multipathd,并用 multipathd show config | grep polling 确认生效
  • 注意:某些旧固件(如 VNX OE 05.32.000.5.022)在高并发 polling 下会返回错误码 0x29("Command sequence error"),此时反而要调大间隔

路径检查器选错会导致 failover 失败或静默丢包

tur 对 RDAC 阵列、或选 rdac 对非 Dell 存储,不只是“检测不准”,而是可能让 multipathd 误认为路径永远 UP,从而在真实故障时拒绝 failover;更危险的是,某些场景下 I/O 会卡在 pending 状态却不报错,应用层只看到延迟飙升。

实操建议:

  • 确认存储型号和 firmware 版本,再查对应厂商文档(如 Dell EMC 的 “Linux Host Connectivity Guide”)明确推荐的 path_checker
  • 不要仅凭 lsscsi 输出的 vendor 名判断——有些白牌 JBOD 也报 EMC,但实际不支持 RDAC 协议
  • 生产环境上线前,务必模拟单路径拔线,用 multipath -lldmesg | grep -i "multipath\|failover" 观察是否真触发切换、I/O 是否中断
  • 如果阵列同时挂了多个品牌(比如混用 Dell 和 HPE),必须用 devices 块按 vendor/product 分别指定 checker,不能全塞进 defaults

最常被忽略的一点:checker_timeoutpolling_interval 的单位不同(秒 vs 毫秒),且前者只对 tur/directio 生效,后者才管 rdac。配错单位或混用场景,问题不会立刻报错,而是等某次存储微中断时才暴露成间歇性超时。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

391

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

348

2023.10.25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

638

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

217

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1558

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

642

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1027

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

980

2024.04.29

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

1

2026.02.24

热门下载

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

精品课程

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

共48课时 | 9.6万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

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

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