我将把这个 iSCSI 目标用于几台基于 Debian 的 KVM 虚拟机主机。每个目标的冗余控制器都有 4 个以太网端口;启动器也是如此。我使用两个交换机 (ZyXEL GS-2200-24),它们之间有中继,VLAN 隔离每条路径。我还启用了巨型帧和流量控制。
此 Debian 版本中的 MPIO 系统非常棒:只要在登录到 iSCSI 目标之前加载 dm-multipath,一切就可以正常工作,无需任何配置文件,前提是我事先加载 scsi_dh_rdac。
这是第一个障碍:如果我提供文件,我可以更改一些默认值/etc/multipath.conf
。我使用 进行了测试use_friendly_names yes
,成功创建了一个mpath0
链接/dev/mapper/
,而不是使用看起来不友好的 WWID。但如果我尝试将rr_min_io
默认值从 1000 更改为 8,我会被忽略;所以我做了这个漂亮的舞蹈:
dmsetup suspend mpath0
dmsetup table mpath0 | sed 's, 1000, 8,g' | dmsetup reload mpath0
dmsetup resume mpath0
这会更改在循环启动并发送到下一个四链路之前发送到其中一个四链路的请求数,从默认的 1000 减少到 8。这实际上会更改多路径表(按照multipath -v3 | grep params
)。如何在新的多路径代码中配置此默认值?我假设在多路径完全动态和自我配置之前这有效...至少我读过的所有供应商文档和网络上的其他讨论都假设这有效。
经过这一更改,简单的顺序写入速度dd bs=100M count=50 if=/dev/zero of=/dev/mapper/mpath0-part1 & sync
从约 135MB/s 上升到约 260MB/s。这是第二个障碍:启动器和目标之间的速度约为 2Gbps,而不是我实际拥有的 4Gbps。运行iostat -kd 1
1 秒的更新显示 4 条路径中只有 2 条被填满。
这个 LUN 很短:它的 16GB 位于 12 轴 RAID10 阵列的开头,该阵列由 600 个 6Gbps SAS 磁盘组成,以 15,000rpm 的速度旋转。我原本以为这足以满足我拥有的 4Gbps 需求;我说得对吗?
答案1
在线重新配置
您用来更改的技术rr_min_io
是 multipathd 在幕后为您执行的操作。调整正在运行的映射中的值的用户友好方法是echo reconfigure | multipathd -k
例如:这是 NetApp,rr_min_io
目前为 128
# dmsetup 表 360a98000534b504d6834654d53793373: 0 33484800 多路径 0 1 alua 2 1 循环 0 2 1 8:16 128 8:32 128 循环 0 2 1 8:64 128 8:48 128 360a98000534b504d6834654d53793373-部分1:0 33484736 线性 251:0 64
/etc/multipath.conf
已经改变了,rr_min_io
现在也是如此1000
。然后,
# 回显重新配置 | multipathd -k multipathd>重新配置 好的
验证更改:
# dmsetup 表 360a98000534b504d6834654d53793373: 0 33484800 多路径 0 1 alua 2 1 循环 0 2 1 8:16 1000 8:32 1000 循环 0 2 1 8:48 1000 8:64 1000 360a98000534b504d6834654d53793373-部分1:0 33484736 线性 251:0 64
我同意 multipathd 可以更好地宣传和报告其使用的附加变量。delta multipathd 不报告的内容,dmsetup 会报告,但这并不一定意味着直接使用 dmsetup 是重新配置这些设置的最佳方法。重新配置几乎适用于所有情况。
主动-主动负载平衡
部署指南说您的 SAN 是主动-主动的,但这个术语在业界被误用,实际上它可以是“双主动的”,这意味着一个 LUN 只能由一个存储处理器在任何时候访问,但两个控制器都可以处于活动状态并驱动不同的 LUN,它们只是不能将负载平衡到同一个 LUN。
此处,第 79 页在负载平衡部分下。
配置从主机到每个控制器的两个会话,每个会话使用一个 TCP 连接(一个 每个端口 1 个会话),总共 4 个会话。多路径故障转移驱动程序平衡 跨会话对同一控制器上的端口进行 I/O 访问。在双工 配置,每个控制器上都有虚拟磁盘,使用每个 两个控制器的 iSCSI 数据端口增加了带宽并提供负载平衡
注意复数用法虚拟磁盘在...的背景下双工配置,它不会调用同一个磁盘。这似乎是双主动部署。真正的主动-主动 SAN 通常保留用于光纤通道部署。也许存在可以实现这一点的 iSCSI SAN,但我还没有遇到过,尽管我也没有广泛部署 iSCSI。
答案2
忽略值 rr_min_io 背后的真正问题是正在运行的内核和多路径工具之间的简单且无声的 ABI 不匹配。