圖1. 通常以太網(wǎng)卡是不會丟包的
當(dāng)虛擬機的網(wǎng)絡(luò)在突發(fā)大量訪問的情況下,可能會發(fā)生多個包丟失,這樣就需要調(diào)整虛擬機的網(wǎng)絡(luò)設(shè)置。首先,確認(rèn)虛擬機使用了VMXNET3虛擬網(wǎng) 卡驅(qū)動。這樣,在Linux宿主機的特定情況下,當(dāng)大數(shù)據(jù)文件在高帶寬的網(wǎng)絡(luò)上傳輸時會發(fā)生多數(shù)據(jù)包丟失。關(guān)閉接收和轉(zhuǎn)發(fā)校驗總和可以解決這種情況。因為 校驗總和的作用是停止錯誤包的發(fā)送,這樣做會增加風(fēng)險??紤]到以太網(wǎng)卡的錯誤率通常低于百萬分之一,風(fēng)險的級別并不高。
使用Linux ethtool工具來關(guān)閉VMware網(wǎng)絡(luò)設(shè)置中的接收和轉(zhuǎn)發(fā)校驗總和,在命令行窗口中以root賬戶登錄ethtool。例如關(guān)閉網(wǎng)卡eth0的校驗總 和命令如下:readethtool --offload eth0 rx off tx off;
命令生效后,打開相應(yīng)網(wǎng)卡的配置文件:
/etc/sysconfig/network/ifcfg-eth0 ( SUSE) 或 /etc/sysconfig/network-scripts/ifcfg-eth0 (Red Hat )
同時把ETHTOOL_OPTIONS參數(shù)變?yōu)镋THTOOL_OPTIONS='--offload eth0 rx off tx off'
如果依然存在丟包問題,嘗試用ethtool工具增加接收隊列的緩沖區(qū)大小。默認(rèn)情況下,緩存設(shè)為256,可以設(shè)置的最大值為4096。重新設(shè)置緩存大小為512,使用命令ethtool -G eth0 512。如果結(jié)果不理想,嘗試更大的值。
遇到Windows虛擬機的高丟包率就需要調(diào)整VMXNET3驅(qū)動的網(wǎng)絡(luò)設(shè)置。在Device Manager中右鍵單擊VMXNET3驅(qū)動并選擇Properties。在Advanced頁中有兩個參數(shù):Small RX Buffers和RX Ring #1 Size。適當(dāng)增加這些參數(shù)的值然后測試能否有改善。逐步加大該值直到問題解決。
多數(shù)情況下,這些設(shè)置可以降低虛擬機的丟包率。如果調(diào)整網(wǎng)絡(luò)參數(shù)失敗,或許就需要解決虛擬機其它的一些性能相關(guān)問題,而不是虛擬機和ESXi平 臺之間的VMware網(wǎng)絡(luò)設(shè)置。咨詢宿主機OS 的相關(guān)專家,應(yīng)該有很多可以調(diào)整性能的相關(guān)參數(shù)。當(dāng)心更改了錯誤的參數(shù)可能會對虛擬機帶來明顯的負(fù)面影響。