首页/系统与基础设施/存储速查/多路径轮询策略与队列深度设置
SAN 与光纤通道60 条

多路径轮询策略与队列深度设置

轮询策略决定 I/O 在路径间的分配方式,队列深度决定单路径并发上限,两者共同界定多路径的性能天花板;调优应逐项变更并以业务时延与路径分布为判据。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌‌‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌​​​‌​​‌‌​‌​​‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​‌​‌‌​​‌​‌​‌‌‌​‌​‌​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

策略与队列共同决定上限

路径选择策略决定 I/O 如何在多条可用路径之间分配,队列深度决定单条路径上能同时挂多少未完成 I/O,两者一起决定多路径的性能上限。Linux 多路径里最常用的是轮询与按优先级分组:轮询在多条等价路径间均匀分发,适合双活阵列;按优先级分组则把优化路径放一组、非优化路径放另一组,只在组内轮询。队列深度不足时,即使路径再多,I/O 也会在 SCSI 层排队等待。

基本信息

适用平台Linux dm-multipath
路径选择器round-robin 0、queue-length 0、service-time 0
分组策略failover、multibus、group_by_prio
轮询粒度rr_min_io_rq 与 rr_weight 控制切换频率
队列深度/sys/block/<设备>/device/queue_depth
块层队列/sys/block/<设备>/queue/nr_requests

典型使用场景

  • 双活阵列并发:用按优先级分组加轮询,在优化路径内分发
  • 主备控制器阵列:用 failover,仅在切换时改变路径
  • 提升单卷吞吐:先确认队列深度与并发数才是瓶颈,再调大
  • 排障:确认 I/O 是否集中在单条路径,判断是策略还是优先级问题
  • 调优前后留存路径与队列基线,便于回退与对比

观察与调整入口

观察与调整入口
# 查看映射的路径选择器与分组策略
multipathd show maps format "%n %w %s"
grep -E 'path_selector|path_grouping|rr_min_io' /etc/multipath.conf
# 单条路径的队列深度(可写,范围以 HBA 与阵列能力为准)
cat /sys/block/sdb/device/queue_depth
# 块层请求队列长度
cat /sys/block/sdb/queue/nr_requests
# 间隔采样两次,比较各路径的 I/O 分布是否均衡
multipathd show paths format "%d %t %o"

参数作用与判断

参数作用判断参考
path_selector路径间如何分配 I/O轮询求均匀,按服务时间偏向快路径
path_grouping_policy路径如何分组支持 ALUA 的阵列常用按优先级分组
rr_min_io_rq每条路径连续处理多少请求后切换过大导致偏载到单条路径
queue_depth单路径并发上限过小排队,过大压垮目标端口
nr_requests块层排队长度与队列深度配套调整
调大队列深度会同时增加对存储前端端口与 HBA 的压力,合适取值依赖阵列型号与端口数量。建议一次只改一个参数,并配合业务侧时延观测,具体上限以厂商文档为准。
队列深度是按单个 sd 设备生效的:多路径归并后每个成员的深度都会叠加到目标端口上,估算总量时不能只按单路径的数值推算。

易错点

  • 只看路径数不看队列深度:路径很多但每条深度过低,单卷吞吐仍然上不去
  • 盲目调大队列深度:目标前端端口队列被打满,时延升高并影响其他主机
  • 轮询粒度设置过大:I/O 长时间集中在单条路径,多路径的并发优势丧失
  • 未按阵列能力选分组策略:主备阵列上用轮询,切换后 I/O 会在非优化路径上重试

数据来源与参考

  • Linux multipath.conf(5)(path_selector、rr_min_io_rq 等)
  • Linux 内核块层 sysfs 文档(queue_depth、nr_requests)
  • 阵列厂商性能调优与主机连接指南

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/multipath-policy-round-robin-queue.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌‌‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌​​​‌​​‌‌​‌​​‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​‌​‌‌​​‌​‌​‌‌‌​‌​‌​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​