快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
以下来源@ds,记录于
2026年10月28日。
1运维时发现,光纤换机连接存储4个前端端口的其中一个口的利用率超80%(8G hba模块),这个走的是fc san存储网络,另一端是rac物理机。每次告警都出现在晚上的特定时间,例如2点-2点30。请问这个该如何排查呢?
2
3我能想到的是,是不是rac机器multipath的配置有问题呀,到底配置的是主备呢,还是轮训呢?(因为关于rac这里的模式选择我不是很懂)
4
5请根据以上问题给我说明下。端口利用率在特定时间点飙升,确实会首先让人怀疑多路径配置。不过,结合“夜间特定时段”这个特征,问题的根源往往是多路径策略、物理链路健康度与夜间定时任务I/O突增三者叠加的结果。下面从排查思路和RAC多路径模式两个层面来说明。
你的怀疑方向是对的,首先要确认RAC节点上多路径的实际工作模式。
在RAC节点上执行 multipath -ll,观察输出中几个关键字段:
path_grouping_policy:如果是 failover,表示主备模式(一个优先级组只有一条活跃路径);如果是 multibus,表示所有有效路径在同一个组内,具备负载均衡的基础条件。path_selector:即使策略是 multibus,实际选路算法也可能导致不均。round-robin 0 是轮询,service-time 0 或 queue-length 0 会动态选择“服务时间最短”或“队列最短”的路径。active ready running,且分布在不同HBA端口上。如果某一个HBA下的多条路径虽然存在,但实际I/O几乎为零,说明负载没有真正“散”出去。如果配置为 failover,那么所有I/O默认集中在一侧HBA的路径上,夜间定时任务一来,单端口利用率冲到80%+就不足为奇了。如果配置了 multibus 但仍然不均,则要进入步骤二。
这是最容易被忽略、却常常是直接元凶的一环。多路径软件在检测到某条路径的物理层不稳定时(如SFP光模块老化、光纤线缆污染、交换机端口B2B credit耗尽),会主动避开该路径,把I/O集中到“健康”的那条路径上。
此时从操作系统层面看,所有路径可能都显示 active,但实际上I/O几乎全走了其中一条。VMware环境下的类似案例中,单HBA承担了90%以上的I/O,而另一条“健康”路径几乎空闲。
排查动作:
dmesg 或 /var/log/messages 中是否有 Link Flaky、SCSI reset、I/O error、timeout 等字样。夜间定时任务触发I/O压力时,不稳定的链路更容易暴露问题。Loss of Signal、Invalid Tx Word、CRC Error 等计数是否在夜间告警时段前后出现增量。enc_out、crc_err、link_fail 等异常增长。如果端口有物理层错误,多路径会“用脚投票”,把负载推向另一侧。“特定时间”是这条线索中最有价值的锚点。必须把这个时间窗口内的I/O来源找出来,否则调优多路径也只是治标。
log file sync、log file parallel write、direct path read/write 等等待事件是否同步升高。已有案例显示,凌晨2点启动的存储过程导致 direct writes 从0激增至数万,缓冲获取量暴增,存储I/O随之飙升。crontab(包括 oracle 用户的定时任务)、/etc/cron.d/、外部调度工具(如Control-M、Autosys)是否在该时段触发了备份、统计信息收集、批处理作业或数据抽取任务。在确认了夜间I/O突增的来源之后,再回头看多路径策略。failover 模式下,突发I/O的全部压力都由一组路径承担,单端口利用率突破80%是必然结果。即使改为 multibus + round-robin 0,如果I/O是短时脉冲式爆发,轮询粒度(rr_min_io / rr_min_io_rq)设置不当,也可能在短时间内仍集中在某条路径上。
path_grouping_policy failover 的含义是:每条路径独立成一个优先级组,操作系统只使用优先级最高的那一组中的一条路径,其余路径作为待命备份,仅在活跃路径故障时才接管。
failover,并配合 failback manual 来防止路径频繁回切造成抖动。path_grouping_policy multibus 将所有有效路径放入同一个优先级组,然后由 path_selector 决定每条I/O走哪条路径。它才具备真正的负载均衡能力,但效果取决于选择器:
| 选择器 | 行为 | 适用场景 |
|---|---|---|
round-robin 0 | 轮询每条路径,均分I/O | 路径性能相近、I/O均匀的场景 |
service-time 0 | 选择预估服务时间最短的路径 | 路径性能有差异或负载动态变化(RHEL 7+/SLES 11 SP3+ 推荐) |
queue-length 0 | 选择未完成I/O最少的路径 | 队列深度波动大的场景 |
在RAC环境中,multibus + service-time 0(或 round-robin 0)是更常见的高性能配置方向,尤其是在存储阵列支持ALUA、路径性能对等的前提下。但需要注意:RAC的Clusterware对I/O延迟敏感,多路径的路径检查策略(path_checker)应优先使用 tur(Test Unit Ready),它对qdisk和voting disk的干扰最小。
没有脱离场景的绝对“正确模式”,但针对你当前的现象,failover 是一个需要重点审视的配置。 如果确认当前是 failover,且业务对存储带宽有明确需求(夜间定时任务I/O量可观),那么将策略调整为 multibus 并配合合适的 path_selector,是让4个前端端口都参与工作的前提。但如果调整后仍然只有单端口繁忙,问题就不在多路径策略,而回到了步骤二的物理链路降级——多路径软件在“避开”它认为不健康的路径。
推荐排查顺序:先通过 multipath -ll 确认现状 → 查SAN交换机端口误码和系统日志排除物理层降级 → 定位夜间定时任务的I/O来源 → 最后再评估是否需要调整 path_grouping_policy 和 path_selector。直接改多路径配置而不先排除链路问题,可能会把原本被“避开”的不稳定路径重新纳入I/O分发,反而引发更严重的性能抖动。
光纤换机连接存储4个前端端口的其中一个口的利用率超80%(8G hba模块),这个8G hba模块速率是多少呢?
8G FC(8Gbps Fibre Channel)HBA/模块的单端口速率要分“标称线速”和“有效吞吐”两个口径看:
| 口径 | 速率 | 换算 |
|---|---|---|
| 标称速率 | 8 Gbps | 约 1 GB/s 原始比特率 |
| 8GFC 实际线速 | 8.5 Gbps | 厂商常标 8Gb |
| 8b/10b 编码后有效带宽 | 约 6.8 Gbps | 约 850 MB/s |
| 实际业务吞吐经验值 | — | 通常按 800 MB/s 左右估算单口上限 |
所以,8G HBA 单端口理论标称是 8Gbps,编码后有效数据带宽约 6.8Gbps,约 850MB/s;实际能跑到的业务吞吐通常在 800MB/s 左右。
你看到的“端口利用率超 80%”要确认统计口径:
结合你前面说的“4 个前端端口只有 1 个口超 80%”,如果这个 80% 是按 8G 端口线速算的,那这个口在夜间定时任务窗口已经接近单口饱和。这也进一步说明:要么多路径没有把负载分散到 4 个端口,要么其他路径被多路径软件判定为不健康而避开了,要么夜间 I/O 突增集中到了这一条路径上。排查时建议同时确认 SAN 交换机端口利用率的统计口径是“收/发单向”还是“双向合计”,以及是否按线速还是有效带宽计算。
精选 · 友链 · 更多

One的公众号
爱折腾博客的小白