戴尔PowerVault MD3200i dm-multipathconfiguration和性能在Debian 6.0(挤压)

我将把这个iSCSI目标用于几个基于Debian的KVM虚拟机主机。 每个目标的冗余控制器都有4个以太网端口; 发起人也是如此。 我使用两台交换机(ZyXEL GS-2200-24),在它们之间有一条中继线,VLAN隔离每条path。 我也启用巨型帧和stream量控制。

这个Debian版本中的MPIO系统非常棒:只要在login到iSCSI目标之前加载dm-multipath,没有任何configuration文件的所有Just Works TM都提前加载scsi_dh_rdac。

这是第一个障碍:如果我提供一个/etc/multipath.conf文件,我可以改变一些默认值。 我使用use_friendly_names yes进行了testing,它在/dev/mapper/成功创build了mpath0链接,而不是使用不友好的WWID。 但是,如果我尝试将rr_min_io从默认值1000更改为8, rr_min_io被忽略; 所以我做这个漂亮的舞蹈:

 dmsetup suspend mpath0 dmsetup table mpath0 | sed 's, 1000, 8,g' | dmsetup reload mpath0 dmsetup resume mpath0 

这改变了在一个四连接之前发送的请求的数量,在循环过程中发送,并从下一个发送,从默认的1000下降到8.这实际上改变了多path表(按照multipath -v3 | grep params ) 。 如何在新的多path代码中configuration这个默认值? 我假设这个工作之前多path都dynamic和自我configuration…至less我读过的所有供应商文档,以及在networking上的其他讨论假设这工作。

使用dd bs=100M count=50 if=/dev/zero of=/dev/mapper/mpath0-part1 & sync的简单顺序写入从〜135MB / s变为~260MB / s。 这就是第二个障碍:大约2Gbps,而不是我在启动器和目标之间实际拥有的4Gbps。 运行iostat -kd 1 ,运行更新iostat -kd 1秒只显示4条path中的2条被填满。

这个LUN是短暂的:它的16GB驻留在一个12个主轴的RAID10arrays的600个6Gbps SAS磁盘,以15,000rpm的转速开始。 我期待这足以饱和4Gbps我有; 我对么?

在线重新configuration

您用来更改rr_min_io是multipathd为您提供的。 用户友好的方式来调整运行的地图中的值是echo reconfigure | multipathd -k echo reconfigure | multipathd -k

例如:这是一个NetApp,他的rr_min_io目前是128

 #dmsetup表
 360a98000534b504d6834654d53793373:0 33484800多path0 1 alua 2 1循环法0 2 1 8:16 128 8:32 128循环法0 2 1 8:64 128 8:48 128 
 360a98000534b504d6834654d53793373-part1:0 33484736 linear 251:0 64

/etc/multipath.conf被更改了,所以rr_min_io现在是1000 。 然后,

 #echo重新configuration| 多path-k
多path>重新configuration
好

validation更改:

 #dmsetup表
 360a98000534b504d6834654d53793373:0 33484800多path0 1 alua 2 1循环法0 2 1 8:16 1000 8:32 1000循环法0 2 1 8:48 1000 8:64 1000 
 360a98000534b504d6834654d53793373-part1:0 33484736 linear 251:0 64

我同意multipathd可以在广告和报告使用的额外variables方面做得更好。 无论delta多path不报告,dmsetup都可以,但这并不一定意味着直接使用dmsetup是重新configuration这些设置的最佳方法。 重新configuration几乎所有的东西。

主动 – 主动负载平衡

部署指南说,您的SAN是主动 – 主动的,但是这个术语在业内被滥用,实际上它可能是“双重主动”,这意味着一个LUN只能由一个存储处理器在任何时候访问,但是两个控制器可以是活动的并且驱动不同的LUN,它们只是不能对同一个LUN进行负载平衡。

这里在p79下的负载平衡部分。

两个会话与一个TCP连接从主机configuration到每个控制器(一个
 每个端口的会话),总共四个会话。 多path故障转移驱动程序平衡 
跨会话的I / O访问到同一个控制器上的端口。 在一个双面 
configuration,在每个控制器上使用虚拟磁盘,使用每个控制器创build会话 
两个控制器的iSCSI数据端口增加带宽并提供负载平衡

注意在双工configuration的情况下多次使用虚拟磁盘 ,它不叫出相同的磁盘。 这似乎是一个双重活动的部署。 真正的主动 – 主动SAN通常保留用于光纤通道部署。 也许iSCSI SAN存在这样做,我还没有遇到过,尽pipe我也没有广泛部署iSCSI。

被忽略的值rr_min_io背后的真正问题是正在运行的内核和多path工具之间简单且无声的ABI不匹配。