如何最佳调整Dell PowerVault MD3600i SAN / Initiator以获得最佳性能?

最近戴尔PowerVault MD3600i的老板,我正在经历一些奇怪的结果。

我有一个专用的24x 10GbE交换机(PowerConnect 8024),安装到巨型帧9K。

MD3600有2个RAID控制器,每个有2个10GbE以太网NIC。 交换机上没有其他东西了。 一个VLAN用于SANstream量。

这是我的multipath.conf

defaults { udev_dir /dev polling_interval 5 selector "round-robin 0" path_grouping_policy multibus getuid_callout "/sbin/scsi_id -g -u -s /block/%n" prio_callout none path_checker readsector0 rr_min_io 100 max_fds 8192 rr_weight priorities failback immediate no_path_retry fail user_friendly_names yes # prio rdac } blacklist { device { vendor "*" product "Universal Xport" } # devnode "^sd[az]" } devices { device { vendor "DELL" product "MD36xxi" path_grouping_policy group_by_prio prio rdac # polling_interval 5 path_checker rdac path_selector "round-robin 0" hardware_handler "1 rdac" failback immediate features "2 pg_init_retries 50" no_path_retry 30 rr_min_io 100 prio_callout "/sbin/mpath_prio_rdac /dev/%n" } } 

iscsid.conf:

 node.startup = automatic node.session.timeo.replacement_timeout = 15 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 = 10 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 

经过我的testing 我几乎可以达到200 Mb / s的读/写。

我应该期望更多吗? 提供它有两个10 GbE我的想法来到400 Mb / s附近。

有任何想法吗 ? 指引? 疑难解答提示

编辑:

arrays设置为5.7TB的单个逻辑卷磁盘都是1TB 7.2k SAS 6GB(ST1000NM0001)RAID是RAID10

Swithconfiguration的一些行:

 interface Te1/0/23 storm-control broadcast storm-control multicast spanning-tree portfast mtu 9000 switchport access vlan 40 exit ... iscsi cos vpt 5 management access-list "default" permit service ssh priority 1 permit service http priority 2 permit service https priority 3 

和多path输出:

 [root@xnode4 ~]# multipath -ll -v2 multipath.conf line 30, invalid keyword: prio mpath1 (36d4ae520009bd7cc0000030e4fe8230b) dm-2 DELL,MD36xxi [size=5.5T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw] \_ round-robin 0 [prio=400][active] \_ 7:0:0:0 sdc 8:32 [active][ready] \_ 9:0:0:0 sde 8:64 [active][ready] \_ 11:0:0:0 sdi 8:128 [active][ready] \_ 13:0:0:0 sdn 8:208 [active][ready] \_ round-robin 0 [prio=0][enabled] \_ 10:0:0:0 sdj 8:144 [active][ghost] \_ 12:0:0:0 sdh 8:112 [active][ghost] \_ 8:0:0:0 sdd 8:48 [active][ghost] \_ 6:0:0:0 sdb 8:16 [active][ghost] 

根据您的意见和编辑判断,您的瓶颈可能是存储空间。 首先,假设你已经启用了写入caching,所有的写入操作直到caching已满为止都应该以线速完成。 你可以通过计算出你有多less高速caching来测量这个数据,并且用比这less的数据做100%的写入基准testing。 其次,一旦caching开始将数据分区到磁盘,RAID-10的写入性能(假设控制器没有引入瓶颈)将是读取性能的一半。 这是因为每个写入都是在两个磁盘上完成的,但只能从一个磁盘完成读取。 RAID-10的一个好处是不需要计算奇偶校验,所以控制器的处理器不太可能跟不上。

接下来,如果您的基准testing读取和写入混合,您将从存储控制器获得的性能取决于IO的types。 如果顺序的话,你会得到更多的MB / s,但IO / s的数量更less。 如果它是随机的小块,你会得到很less的MB / s,但是你的磁盘可以提供的IO / s数量。 每当您读取不可预知的数据时,每个7200 RPM磁盘都会提供一定数量的IO,因此RAID中的驱动器数量乘以每个驱动器的IO数量将成为理论性能上限。

最后,如果将一个大卷中的所有存储都作为一个LUN呈现,那么您的命令队列可能已经饱和。 正常的操作系统具有可configuration的命令队列深度(它们将为存储排队的未完成IO的数量),并且每个卷/ LUN都有其自己的队列。 在同一个LUN中存储所有存储的另一个问题是,通常将IO发送到该LUN的单个控制器。 即使在主动/主动存储系统(我不知道你是谁),他们可以有一个控制器相对于另一个。 目标是创build一堆卷并在控制器之间均匀分割。

使用单个磁盘对其进行基准testing,然后在RAID 0中重新执行所有磁盘。

Raid 0不会有任何raid 10或raid 5的开销。

也看看你的caching在MD上。 默认是4k块,但可以达到32k块。 这两个数值之间的速度差距达到了30%。 尽pipetesting它的工作量。

使用类似SQLIO的地方,你可以使用更多的线程。 我的数字终于开始看起来很好,一旦我更难。

并validationMDconfiguration为10G。 端口选项为10G或1G,不自动协商。

也许你想增加arrays上的caching块大小从4k到16k或32k(特别是如果你正在寻找一个连续的工作量)