VMware的vSphere虛擬化平臺以可靠性著稱,內置了諸如高可用(HA)等功能,確保物理服務器故障對最終用戶的影響降到最低,但不是所有Vmware用戶都使用了這些功能或類似的技術,即使使用了這些功能也不能保證不會發生意外,于是一個非常現實的問題就擺在了我們面前:當虛擬機速度變慢或宕機,ESXi服務器或vCenter失去響應等異常發生時,我們該做些什么?
vSphere故障解決概述
為了準備Vmware認證高級專家 – 數據中心管理員認證,以及vSphere故障解決課程,我花了大量時間解決各種vSphere故障,我甚至故意將vSphere破壞掉,然后嘗試進行修復,大多數時候我會成功,但也有失敗的情況。如果你也想在解決vSphere故障時取得成功,需要考慮的事情太多了,只要下面任何一項未考慮到,整個虛擬化基礎設施(VI)可能就會崩潰。
◇ 物理服務器:ESX和ESXi服務器需要電源、CPU、內存和本地磁盤,這些組件都有可能出現故障。
◇ 物理網絡:當你運行vSphere客戶端時,本地LAN為物理服務器、交換機、SAN/NAS、DNS服務器、終端用戶和你(管理員)提供連接保障(vSphere客戶端是一個管理工具,管理vSphere全靠它)。
◇ 共享存儲:存儲通常由SAN或NAS提供,大多數時候,如果SAN或NAS失去響應或連接丟失,虛擬基礎設施將會受到影響。
◇ ESX和ESXi服務器Hypervisor:服務器上的操作系統當然得正常運行,如果ESX或ESXi服務器遇到PSOD(紫屏),預示著馬上要出大問題了。
◇ vCenter:雖然vCenter不是虛擬機或ESX/ESXi服務器正常運行必需的東西,但借助它你可以查看虛擬基礎設施的運行狀態。
◇ 虛擬機(VM):如果Windows VM遇到BSOD(藍屏),恰好這個VM提供關鍵網絡服務,如域名解析服務,活動目錄或vCenter,如果它宕機了,整個基礎設施都將受到影響。
方法論
由于虛擬基礎設施(VI)正常工作涉及到的核心組件太多,你需要一個標準的,系統的問題解決方法,對于不同的組織可以采用不同的方法,但重要的是,無論你使用什么方法,每次遇到VI故障時,都應該使用相同的方法,并按同樣的順序執行操作。
例如,你的方法可能以開放系統互聯(OSI)模型為基礎,那么你應該從物理層開始,然后逐層上升,直到應用程序層,或者從應用程序層向下到物理層。但我建議你從OSI模型的中間層(網絡層)開始,根據問題的具體情況決定是向上還是向下排查。
◇ Ping ESX/ESXi服務器和vCenter服務器:驗證服務器是否開機或網絡是否連通,如果ping失敗,你應該先檢查網絡和電源,如果成功,則可以跳到下一步。
◇ 嘗試使用vSphere客戶端登錄到vCenter:如果不成功,嘗試登錄到ESX/ESXi主機,如果成功,繼續通過vSphere查看存儲是否可用,主機是否出現故障,運行vCenter的VM是否宕機等等。
◇ 檢查vCenter進程:假設vCenter不可用,但VM運行在一個正常的主機上,如果需要,可以重啟vCenter進程。
這些只是解決虛擬基礎設施(VI)常見問題的一般步驟,下面我們一起來看一個更特殊的例子。
vSphere崩潰后該做些什么
有人向你報告問題時,你首先要做的是獲取更多與問題相關的信息,如什么服務不可用?的確如此嗎?物理服務器出了問題嗎?vCenter VM藍屏還是服務被停掉了?核心網絡交換機被鎖住了?SAN電力供應出現問題?僅僅是一個VM宕機,還是所有VM都當掉了嗎?沒錯,你應該先回答這些問題,找到確切的答案。
用戶不知道究竟是什么當掉了,他們也不關心這個,但這是你的工作,你可能猜到問題處在哪里,也許只需要一個小小的測試便能得知問題的根源,但需要注意的是,即使你相信自己真的找到了問題的根源,也要做完全面的測試,我不止一次遇到因測試不完整就確定問題根源而做出的錯誤決定,如原本是網絡問題,誤認為是服務器問題。
僅憑某個用戶報告的不確定問題要查明vSphere的真正問題根源是很困難的,用戶通常只會報告他們的應用程序不能正常工作了,你需要快速地得到該用戶正在使用哪些服務,對應的應用程序是否運行在VM上,然后一步步查找到問題之所在。
例如,如果你通過vSphere客戶端連接到vCenter服務器,這一結果可以得知許多事情 – 網絡肯定是連通的,DNS工作正常,你的PC可以連接到vCenter服務器,SAN運行正常,你的vCenter服務器和ESX主機通信正常等。
換句話說,如果你熟悉基礎設施,只需要簡單的測試,就可以快速找出問題的根源。
虛擬基礎設施(VI)中的大多數問題都與操作系統或應用程序有關,而不是VI自身的問題,在一些有前瞻性的企業里,總是能看到強大的系統管理工具,在終端用戶感知到問題發生之前,你可以提前預知可能出現的問題,但在許多企業中,還是終端用戶最先發現并報告問題,我們還是以上面的例子來解釋,假設終端用戶報告某個應用程序不能使用,你知道這個應用程序運行在VM上。
圖 1 vSphere客戶端圖形化顯示一臺ESXi服務器的性能指標
首先檢查客戶機操作系統和應用程序,你通過vSphere客戶端連接到VM的控制臺來實施檢查,操作系統是否藍屏?服務對應的應用程序出了問題?如果發現是客戶機操作系統或應用程序的問題,首先應該解決它們的問題。
假設你發現ESX/ESXi服務器啟動并運行正常,VM已開機,客戶機操作系統運行也正常,但運行在VM上的應用程序響應仍然很慢。
這時你應該檢查ESX/ESXi主機的性能 – 通常使用vSphere客戶端,但你也可以使用第三方工具,在這個例子中,一切看起來都很正常。
圖 2 vSphere客戶端圖形化顯示一個虛擬機的性能指標
從上圖可以看出,主機只有25%的內存利用率,CPU、磁盤和網絡利用率也都在合理范圍內。
接下來,切換到vSphere客戶端的“性能”標簽,檢查VM的內存性能。
注意觀察性能不佳應用程序駐留的VM的內存利用率,你可以獲得兩個結果:這個VM的內存配置過低,或應用程序本身消耗的內存過多。
使用Windows任務管理器檢查內存利用率,你會發現消耗內存過多的進程,在這個例子中,VM只分配了1GB內存,而這個應用程序就消耗了462MB,幾乎用掉了一半內存。
圖 3 通過Windows任務管理器查看內存消耗過多的進程
如果內存被不是你希望的應用程序使用(如一個惡意軟件或一個游戲),你可以殺掉它對應的進程或卸載那些應用程序。
另一方面,如果它是一個合法的進程,它的內存使用量也是可以調整的,你應該增加VM的內存,為操作系統和應用程序提供更多的內存
如果VM開啟了vSphere熱插拔內存(或熱添加CPU)功能,你可以在VM運行期間動態分配更多的內存,不需要關閉客戶機操作系統或停止終端用戶的應用程序。
圖 4 在虛擬機運行期間動態增加內存
延伸閱讀提示
Vmware發布了一份名叫“Vmware vSphere 4.1性能故障排除”的完整指南,它提供了詳細的故障排除流程圖,這份68頁的文檔比我這篇文章要詳細得多,涵蓋了vSphere故障解決的方方面面。
vSphere通常是非常可靠的,并且內置了許多功能保護終端用戶應用程序,防止服務器故障,但是,隨著使用vSphere(或其它Hypervisor)的時間增長,出現物理硬件(服務器、SAN或網絡)故障或軟件(ESX、ESXi、vCenter或客戶機操作系統)故障的幾率就越大,遇到問題時,要綜合考慮這些組件,才能幫助你快速地解決問題。
原文名:Virtualization: What to do when vSphere goes down 作者:David Davis
譯文鏈接:http://virtual.51cto.com/art/201105/259668.htm