Storage-Area-Network

如何最好地調整 Dell PowerVault MD3600i SAN/Initiator 以獲得最佳性能?

  • June 5, 2015

最近擁有 Dell PowerVault MD3600i 我遇到了一些奇怪的結果。

我有一個專用的 24x 10GbE 交換機 (PowerConnect 8024),設置為 9K 巨型幀。

MD3600 有 2 個 RAID 控制器,每個控制器有 2 個 10GbE 乙太網網卡。開關上沒有其他東西;一個用於 SAN 流量的 VLAN。

這是我的 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]

從您的評論和編輯來看,您的瓶頸可能是儲存。首先,假設您啟用了寫入記憶體,在記憶體滿之前的所有寫入都應該以線速完成。您可以通過計算出您擁有多少記憶體並使用更少的數據進行 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 的單個控制器。即使在主動/主動儲存系統(我不確定您的系統是否如此)上,它們也可能對一個控制器比另一個控制器具有親和力。目標是創建一堆卷並在控制器之間平均分配它們。

引用自:https://serverfault.com/questions/402733