■ 河北 王春海
編者按: 筆者近期遇到部分網卡被識別錯誤的原因,造成了某些業務系統訪問緩慢。雖然這種故障發生的概率很低,但也會影響單位的日常業務運轉,對此問題也要有所了解。
某企業所有業務系統及應用運行在由5臺安裝了ESXi 6.0的服務器組成的虛擬化環境中,已經穩定運行了多年,基本上沒有出過問題。
某天下午企業工程師聯系筆者,說單位的業務系統訪問很慢。在業務系統中ping網關的延時超過2ms,平常都是小于1ms。近期單位服務器與網絡沒有改動。
檢查發現有臺物理主機內存報警(提示第20個內存插槽的內存有問題),將這臺服務器置于維護模式,遷移虛擬機到其他主機時提示“等待數據失敗……”、“遷移被取消,因為虛擬機內存的更改量超過可用網絡帶寬……”,如圖1所示。

圖1 遷移失敗

圖2 部分網卡端口速率識別錯誤

圖3 移動到待機適配器
如果手動遷移虛擬機到其他主機,原來需要幾分鐘的遷移遲遲不能完成(直到下午用了3個多小時才遷移完成一臺)。因為筆者沒在現場,就讓用戶分別登錄每臺ESXi主機ping網關看延時和丟包情況,經檢查這五臺主機中,只有一臺延時在2~3ms,其他都在1ms以內,而延時在2~3ms的就是內存有故障的主機。
下午到現場之后檢查發現,一些服務器的網卡被識別為10Mb、100Mb,如圖3所示。當前一共5臺ESXi主機,其中有4臺主機的部分網卡識別有錯誤。如圖2所示。
這種問題一般是線路或交換機配置問題導致。但這套系統已經使用幾年,原來的網卡都能正確識別到千兆,不應該是交換機配置的問題。網線或網線接頭問題居多,也可能是接觸不好造成的。
因為現在業務系統還比較緩慢,現在也不是著急檢查網絡的時候,因此為了應急,在vSphere Client中選中ESXi主機,在“配置→硬件→網絡”中修改虛擬交換機vSwitch及端口組、Management Network屬性,在“常規→網卡綁定”選項中,可以將錯誤識別為10Mb或100Mb的端口移動到“待機適配器”中,如圖3所示。
修改之后千兆網卡為活動適配器,識別為10Mb或100Mb的網卡為待機適配器。
在配置好每一臺主機后,再次將內存有故障的主機置于維護模式,此時虛擬機遷移很快完成。此時單位訪問業務系統的速度也恢復正常,如圖4所示。
再去機房將識別為10Mb、100Mb 的網卡更換網線,網卡全部識別為1000Mb。

圖4 遷移順利

圖5 設置端口速度
將主機置于維護模式后,將ESXi主機關閉電源,取下20插槽有故障的內存開機,正常啟動后將主機退出維護模式,遷移到其他主機的虛擬機會慢慢遷移回這臺主機,至此故障解決。
在本項目中,每臺服務器管理使用2個千兆端口、虛擬機使用另外2個千兆端口,本來無論是管理還是應用,網絡都是有冗余的。但此次故障在于部分網卡被識別為10Mb或100Mb,用戶在通過物理網絡、物理交換機訪問虛擬機時,有可能使用被識別為10Mb或100Mb的上行鏈路,這就造成了某些業務系統訪問緩慢。
實際上這種故障出現的概率很低,在使用合格的網線時一般不會出現此類故障。那么怎么避免這個問題呢?
可以在虛擬交換機屬性→網絡適配器中,將上行鏈路的“自動協商”改為“1000Mb,全雙工”,如圖5所示。在設置為這種模式后,如果線路速度不能達到千兆,那么這個端口就被斷開,這避免了線路降速運行。
但需要注意,如果兩條都設置為1000Mb,當兩條都不能識別為千兆時,網絡中斷,此時業務可能受到影響;如果設置其中一條為1000Mb,當兩條都不能識別為千兆時,還會有一條降速運行,可以保證業務受影響但不中斷。管理員可以根據實際情況,選擇將其中一條或兩條設置為1000Mb。