各位前輩大家好, 小弟最近在公司使用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的存取有某種機制嗎還是怎麼樣運作?
能有前輩願意替小弟解惑嗎?
若需要更詳細的資訊, 請前輩們不吝指教, 小弟一定屁顛屁顛的過來奉上
因為你做的是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
前輩您好,感謝您的回應;
看完您的說明後,小弟深感抱歉,可能是小弟的問題描述不清楚讓前輩誤會;
比如在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)"
+1....補充一下, 請參考這理:
Order of frames
LACP 不會死守平均分配封包的原因, 就是怕會發生封包傳遞順序錯置的問題, 雖然這個現象不會造成斷線, 但是 TCP Layer 卻會因此而發出重傳信號, 導致速度降低, 而 UDP Layer 也會因為順序錯置, 造成語音或影像不連續.
上面提到要解決錯置問題, 最好的方法就是如 xsuper0027 所說, 通訊時只綁定一個 Port, 若使用 L3 演算法, 就是 IP 或 Mac address, 除非 Switch 支援 L4 演算法, 才能用 TCP/UDP Port 來綁定, 而後者能達到接近真實平均的機率比較高.
tamiya提到:
兩台ESXi對一台STORAGE(2個IP --> 1個IP)會被"有限制的分流",
兩台Linux對一台STORAGE(2個IP --> 1個IP)就可以"一樣有分流,但沒有被限制(2G)"
這個問題我也想了很久, 但因實驗的條件並不清楚, 我也無法正確判斷. 不過提醒一點:
raytracy前輩您好,抱歉小弟的文章內容有誤;
即便是兩台虛擬機Linux,掛載NFS的方式,執行DD command,從NAS的流量看也是只有1G線路在使用
但跟文中所提ESXi對Datastore的模式不同(ESXi是兩條都有流量,只是被balanece掉)
能夠跑到1+1=2G情況的,是以2台WinServer2012(VM&實體機都測過)以CIFS方式掛載網路磁碟機的方式
不知道raytracy前輩知不知道為什麼走CIFS的時候,兩條網路都有在使用; 但走NFS時就只有一條呢?
附上圖片支援:
兩台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?
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怪怪的阿~~~~不曉得問題有沒有比較清楚....>"<
Hi xsuper0027,可否分享一下你網路流量是怎麼跑出來的(ESXi or 網管設備 or 網路監控軟體?),我最近也在做相關測試,希望你分享一下經驗,謝謝!