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

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

我最近拥有了一台 Dell PowerVault MD3600i,遇到了一些奇怪的结果。

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

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

这是我的 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[a-z]"
}

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

经过我的测试;我的读/写速度几乎不能达到 200 Mb/s。

我应该期望更多吗?假设它有双 10 GbE,我的想法是 400 Mb/s 左右。

有什么想法?指南?疑难解答提示?

编辑:

该阵列设置为 5.7TB 的单个逻辑卷,所有磁盘均为 1TB 7.2k SAS 6GB (ST1000NM0001) RAID 为 RAID10

Swith 配置的一些行:

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

多路径输出:

[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]

答案1

根据您的评论和编辑,您的瓶颈可能是存储。首先,假设您已启用写入缓存,在缓存已满之前,所有写入操作都应以线速完成。您可以通过确定缓存量并使用比缓存量更少的数据执行 100% 写入基准测试来轻松测量这一点。其次,一旦缓存开始将数据转储到磁盘,RAID-10 上的写入性能(假设控制器没有引入瓶颈)将是读取性能的一半。这是因为每次写入都是对两个磁盘进行的,但读取仅从一个磁盘进行。RAID-10 的一个好处是无需计算奇偶校验,因此控制器的处理器不太可能无法跟上。

接下来,如果您的基准测试是测量读取和写入的混合,那么您从存储控制器获得的性能将取决于 IO 的类型。如果是连续的,您将获得更高的 MB/s 数,但 IO/s 数会更低。如果是随机小块,您将获得较低的 MB/s 数,但 IO/s 数与磁盘可以提供的数相同。当您不可预测地读取时,每个 7200 RPM 磁盘都会提供一定数量的 IO/s,因此 raid 中的驱动器数乘以每个驱动器的 IO/s 数将是您的理论性能上限。

最后,如果您将所有存储放在一个大卷中,并将其显示为单个 LUN,则命令队列可能会饱和。常规操作系统具有可配置的命令队列深度(它们将为存储排队的未完成 IO 数量),并且每个卷/LUN 都有自己的队列。将所有存储放在同一个 LUN 中的另一个问题是,通常,IO 会被发送到该 LUN 的单个控制器。即使在主动/主动存储系统上(我不确定您的系统是否如此),它们也可能对一个控制器比另一个控制器具有亲和性。目标是创建一堆卷并将它们均匀地分配给控制器。

答案2

使用单个磁盘进行基准测试,然后对 raid 0 中的所有磁盘再次执行该操作。

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

另外,请查看 MD 上的缓存。默认值为 4k 块,但最高可达 32k 块。我发现这两个值之间的速度差异高达 30%。不过,请针对您的工作负载进行测试。

使用 SQLIO 之类的东西,可以使用更多线程。我更加努力后,我的数字终于开始看起来不错了。

并验证 MD 是否配置为 10G。端口上的选项是 10G 或 1G,它不会自动协商。

答案3

也许您想将阵列上的缓存块大小从 4k 增加到 16k 或 32k(特别是当您正在寻找顺序工作负载时)

相关内容