如何最好地調整 Dell PowerVault MD3600i SAN/Initiator 以獲得最佳性能?
最近擁有 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 的單個控制器。即使在主動/主動儲存系統(我不確定您的系統是否如此)上,它們也可能對一個控制器比另一個控制器具有親和力。目標是創建一堆卷並在控制器之間平均分配它們。