iT邦幫忙

0

請教ESXi對Datastore的存取效能設定

各位前輩大家好, 小弟最近在公司使用ESXi發現了一個奇怪的現象,
想問問前輩們有沒有人遇過類似的經驗...

狀況是,
小弟有兩台ESXi主機, 分別用1G網路接在HP2824的switch上,
另外有一台NAS也接在switch,用兩條1G設定LACP綁起來做load balance,
分享空間給ESXi當datastore掛載(NAS試過FreeNAS,Nexenta)

當我用一台ESXi command line對datastore下DD指令時,流量可以1G滿載,但是只有單條線路,如圖

當我用兩台ESXi command line對datastore下DD指令時,流量也是可以1G滿載,但是變成兩條網路只有約一半流量,如圖

But!人生最重要就是這個But!!
如果是用虛擬機把這NFS的空間掛起來,多台一起測試流量的時候,可以跑到接近2G阿!!!
表示NAS的部分,網路LACP是沒有問題的。

所以小弟真的想不懂,為什麼在ESXi直接對Datastore打DD,會有上限只能跑到1G流量的這種感覺,
是ESXi對Datastore的存取有某種機制嗎還是怎麼樣運作?
能有前輩願意替小弟解惑嗎?
若需要更詳細的資訊, 請前輩們不吝指教, 小弟一定屁顛屁顛的過來奉上

James iT邦大師 7 級 ‧ 2015-05-20 08:00:17 檢舉

如果是用虛擬機把這NFS的空間掛起來,多台一起測試流量的時候,可以跑到接近2G阿!!!


很好玩的測試,如果是兩台虛擬機跑出來的結果呢?

tamiya iT邦新手 5 級 ‧ 2015-05-20 17:30:01 檢舉
您好,抱歉小弟的文章內容有誤;

即便是兩台虛擬機Linux,掛載NFS的方式,執行DD command,從NAS的流量看也是只有1G線路在使用
但跟文中所提ESXi對Datastore的模式不同(ESXi是兩條都有流量,只是被balanece掉)

2 個回答

4
xsuper0027
iT邦新手 2 級 ‧ 2015-05-20 09:54:16
最佳解答

因為你做的是LACP的緣故,LACP一般人都會當作他可以把多條線路綁起來當作一條大的線路1G+1G=2G這個是錯的,但大部分的人都是這樣認為,我簡單的說一下LACP運作原理,LACP在運作時會依據你的條件來分配線路所以它有很多原則可以選擇,例如原則是"目的IP跟來源IP",這機制就會根據這個條件來運算2條線路你要用哪一條,當運算結果是第一條那這SERVER到NAS永遠只會用第一條第二條不會用除非第一條掛了,如果你又有第二台SERVER連上來運算結果要用第二條那第二台SERVER永遠都是第二條,絕對不會1+1=2,也有可能運算結果會跑在同一條線所以第二條線永遠都不會用,如果你是做VM因為VM的IP不會一樣所以運算結果可能會一人跑一條而造成你的結果,結論所以你可以GOOGLE很多資料SERVER連接STORAGE一律推薦使用MPIO而不是LACP。
我所碰到的工程師10個有10都認為LACP就是1+1=2

看更多先前的回應...收起先前的回應...
tamiya iT邦新手 5 級 ‧ 2015-05-20 10:36:11 檢舉

前輩您好,感謝您的回應;
看完您的說明後,小弟深感抱歉,可能是小弟的問題描述不清楚讓前輩誤會;

比如在LACP的部分,小弟也同樣測試過
一台Linux(1G+1G:LACP) --> 一台NAS(1G+1G:LACP)
因為是MAC to MAC,所以只會跑一條線路(鳥哥的Linux也寫到他本人也驗證過這件事XD)

我對於這問題不明白的癥結在於,
如果是依據運算原則(當然小弟不曉得是什麼原則...), 同樣是兩個IP對一個IP,為什麼:
兩台ESXi對一台STORAGE(2個IP --> 1個IP)會被"有限制的分流",
兩台Linux對一台STORAGE(2個IP --> 1個IP)就可以"一樣有分流,但沒有被限制(2G)"

raytracy iT邦大神 1 級 ‧ 2015-05-20 10:38:13 檢舉

+1....補充一下, 請參考這理:
Order of frames
LACP 不會死守平均分配封包的原因, 就是怕會發生封包傳遞順序錯置的問題, 雖然這個現象不會造成斷線, 但是 TCP Layer 卻會因此而發出重傳信號, 導致速度降低, 而 UDP Layer 也會因為順序錯置, 造成語音或影像不連續.

上面提到要解決錯置問題, 最好的方法就是如 xsuper0027 所說, 通訊時只綁定一個 Port, 若使用 L3 演算法, 就是 IP 或 Mac address, 除非 Switch 支援 L4 演算法, 才能用 TCP/UDP Port 來綁定, 而後者能達到接近真實平均的機率比較高.

raytracy iT邦大神 1 級 ‧ 2015-05-20 10:44:29 檢舉

tamiya提到:
兩台ESXi對一台STORAGE(2個IP --> 1個IP)會被"有限制的分流",
兩台Linux對一台STORAGE(2個IP --> 1個IP)就可以"一樣有分流,但沒有被限制(2G)"

這個問題我也想了很久, 但因實驗的條件並不清楚, 我也無法正確判斷. 不過提醒一點:

  1. Esxi 對 Datastore 的通訊是走 VMkernel port 出去
  2. VM 對自己 mount 上來的 NFS 通訊是走 Virtual Machine Port Group 出去
  3. 除非你是將 NFS 透過 VM Setting 掛成一台固定的磁碟機, 他才會走 VMkernel port
  4. ESXi 要啟用 vDS 才會支援 LACP (不過這跟你的環境可能無關)
    由於其他條件尚不清楚, 只能先提醒這些.
tamiya iT邦新手 5 級 ‧ 2015-05-20 17:35:30 檢舉

raytracy前輩您好,抱歉小弟的文章內容有誤;

即便是兩台虛擬機Linux,掛載NFS的方式,執行DD command,從NAS的流量看也是只有1G線路在使用
但跟文中所提ESXi對Datastore的模式不同(ESXi是兩條都有流量,只是被balanece掉)

能夠跑到1+1=2G情況的,是以2台WinServer2012(VM&實體機都測過)以CIFS方式掛載網路磁碟機的方式

不知道raytracy前輩知不知道為什麼走CIFS的時候,兩條網路都有在使用; 但走NFS時就只有一條呢?

tamiya iT邦新手 5 級 ‧ 2015-05-20 17:36:49 檢舉

附上圖片支援:

tamiya iT邦新手 5 級 ‧ 2015-05-21 08:45:09 檢舉

兩台ESXi對一台STORAGE(2個IP --> 1個IP)會被"有限制的分流"

限制分流的意思是?

hi xsuper0027大大,
誠如您在第二張圖片中所看到的, 兩台ESXi的流量送出去時,NAS的兩條線路em1及em0各只有56.423MB/s及54.107MB/s,lagg0的量還是只有1G

限制分流(可能我形容的不好)指的是,就如上述情況,單台ESXi送出的量明明就有辦法到達1G,可是如果是2台、3台一起出去的時候, lagg0的接收不會增加(只有1G), 反而是ESXi的流量被降下來

照理說要像最後一張圖的CIFS一樣,LACP正常的情況下,em0跟em1是滿速的,lagg0的總量可以提升才是不是嗎~~~~Orz

你說你有做LACP但是我印象中標準的Vswitch是不支援的(不確定懶得再建環境看了)會不是會你以為做了NIC Team就是LACP?

tamiya iT邦新手 5 級 ‧ 2015-05-23 11:28:34 檢舉

xsuper0027 說:
你說你有做LACP但是我印象中標準的Vswitch是不支援的(不確定懶得再建環境看了)會不是會你以為做了NIC Team就是LACP?

xsuper0027前輩您好,可能還是誤會小弟意思了; 我沒有要在ESXi端做LACP/bonding/Teaming/Trunk喔~~

是NAS端設定LACP(也確認LACP正常work),
然後兩台ESXi把NAS掛載成datastore時(走NFS),網路傳輸沒有辦法分別跑到1G;

可是兩台Windows把NAS掛成網路磁碟機(走CIFS),網路傳輸就可以跑到1G了,

這樣感覺ESXi怪怪的阿~~~~不曉得問題有沒有比較清楚....>"<

0
pion
iT邦見習生 0 級 ‧ 2017-05-24 16:29:13

Hi xsuper0027,可否分享一下你網路流量是怎麼跑出來的(ESXi or 網管設備 or 網路監控軟體?),我最近也在做相關測試,希望你分享一下經驗,謝謝!

我要發表回答

立即登入回答