我正在使用 iSCSI MD3200i SAN 设置一组服务器,用于共享存储。一切运行良好,但有一个小细节似乎无法正常工作。多路径似乎只想对 SAN 的 iSCSI 连接进行故障转移。我想让它在负载平衡模式下工作,以便它使用每条路径,而不仅仅是一条或另一条路径。
这里总有一个显示为鬼,这意味着它没有被使用。
[root@kvm-01]~# multipath -ll
mpath2 (36842b2b0006b9d87000004383bf558d9) dm-5 DELL,MD32xxi
[size=2.2T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]
\_ round-robin 0 [prio=100][active]
\_ 8:0:0:0 sdb 8:16 [active][ready]
\_ 7:0:0:0 sdc 8:32 [active][ghost]
我的多路径配置:
[root@kvm-01]~# egrep -v '(#|^$)' /etc/multipath.conf
blacklist {
device {
vendor "*"
product "Universal Xport"
}
device {
vendor "*"
product "MD3000"
}
device {
vendor "*"
product "MD3000i"
}
device {
vendor "*"
product "Virtual Disk"
}
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
devnode "^sda$"
}
defaults {
user_friendly_names yes
polling_interval 5
selector "round-robin 0"
path_checker rdac
path_grouping_policy multibus
rr_weight uniform
no_path_retry 30
failback immediate
rr_min_io 100
prio_callout "/sbin/mpath_prio_rdac /dev/%n"
max_fds 8192
}
devices {
device {
vendor "DELL"
product "MD32xxi"
hardware_handler "1 rdac"
features "2 pg_init_retries 50"
}
device {
vendor "DELL"
product "MD32xx"
hardware_handler "1 rdac"
features "2 pg_init_retries 50"
}
device {
vendor "DELL"
product "MD36xxi"
hardware_handler "1 rdac"
features "2 pg_init_retries 50"
}
}
我尝试了多种 group_by 和 rr_weight 设置,结果都相同。
[root@kvm-01]~# lsmod | grep rdac
dm_rdac 41673 1
dm_multipath 58457 3 dm_round_robin,dm_rdac
scsi_mod 199001 14 dm_rdac,be2iscsi,ib_iser,iscsi_tcp,bnx2i,cxgb3i,libiscsi2,scsi_transport_iscsi2,scsi_dh,sr_mod,sg,libata,megaraid_sas,sd_mod
我也尝试过加载 scsi_dh_rdac,但没有什么区别。
[root@kvm-01]~# egrep -v '(#|^$)' /etc/iscsi/iscsid.conf
node.startup = automatic
node.session.timeo.replacement_timeout = 30
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 15
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 20
node.session.initial_login_retry_max = 8
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
node.conn[0].iscsi.HeaderDigest = None
node.session.iscsi.FastAbort = No
node.session.xmit_thread_priority = -20
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
我已经研究这个问题一段时间了,我发现很多人将此设置与 MD3000i 配合使用,但没有人确认 3200i 是否支持。我发现一个人说它不支持它,因为辅助控制器在设计上是被动的,但我无法在戴尔的文档中证实这一点。
[root@kvm-01]~# uname -a
Linux kvm-01 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
答案1
概括
您唯一可以实现的负载平衡是将 LUN 分散到控制器之间。虽然它宣称自己是主动-主动,但实际上它是一个双主动 SAN。因此,一个 LUN 一次最多只能与一个存储处理器相关联,但两个控制器都可以处于活动状态并驱动专用于每个控制器的 LUN。这就是本例中主动/主动的含义,即 SAN 可以得到充分利用,而不是单个 LUN 可以同时由两个控制器进行负载平衡。
细节
你的 sdc 路径状态说明了一切,鬼魂==被动,因此您的所有多路径配置都适用于故障转移。根据定义,您的配置是主动/被动的。
http://sourceware.org/lvm2/wiki/MultipathUsageGuide
该备用存储控制器需要配置为主动/主动模式才能完成您的要求;这可能是 SAN 的限制。
确认
在使用同一 SAN 回答另一个问题时,我在网上发现了有关 SAN 的文档,并验证了此品牌和型号实际上是双主动的。请参阅:
Dell PowerVault MD3200i dm-多路径配置和 Debian 6.0 中的性能障碍(squeeze)
答案2
MD3200i(以及所有其他 LSI 品牌)使用 RDAC。这是一种 a/p 算法。