我们有两台带有多路径 SAS 控制器的机器,每台都连接了 12 个物理磁盘。
我们正在研究一些 I/O 速度异常,并注意到在一台机器上,/dev/mpath/mpath*p1 以各种方式映射到 dm-13 到 dm-24,dm-13 和 dm-14 有一个 io “cfq”的调度程序到位。该列表中的其他 dm 设备具有“无”,并且似乎无法更改。
我相信其他设备呈现为一组不同的 dm-* 映射,并且那些确实有 cfq 集。
在另一台机器上,选择在 /dev/mpath/mpath*p1 中的所有设备都没有相应的带有调度程序集的 dm 设备。
我有点不在我的元素这里,但由于 iostat 确实显示一些请求正在合并到第一个框的 dm-13 和 dm-14 上,而其他任何一个框上都没有,我怀疑我们是为此付出了一些代价。
我是在挖错洞,还是这是一个问题?如果是这样,我该如何解决它,因为echo cfq > /sys/block/dm-15/queue/scheduler
当“无”是当前唯一列出的选项时没有任何效果?
我已经找到了我自己的问题的答案。
我们可能有一个稍微不寻常的设置,其中 /dev/mapper/mpatha 是整个磁盘,而 /dev/mapper/mpathap1 是该磁盘上的第一个分区。
由于我们使用 /dev/mapper/mpath?p1 设备构建了软件 raid 阵列,因此它们从来没有调度程序,因为它们实际上最终会遵循实际的底层磁盘,即 /dev/mapper/mpatha 设备。
我们所有的 /dev/mapper/mpath?设备有一个调度程序(我现在已将其更改为“截止日期”),而所有 /dev/mapper/mpath?p1 设备都没有。这也与 LVM 的工作方式相同——底层磁盘有一个调度程序,但到逻辑分区的各个映射没有。
如果这是 Red Hat 或 CentOS,请使用该
tuned-adm
实用程序将您的配置文件转移到“企业存储”配置文件:tuned-adm profile enterprise storage
了解 RedHat 推荐的调整配置文件