我們知道,在服務器虛擬化環境中,一旦某臺物理服務器出現問題,位于該服務器上的虛擬機將自動遷移到其他物理服務器上,這就是服務器虛擬化的動態遷移技術。實現動態遷移的一個前提條件就是被遷移的虛擬機必須存放在共享存儲上,也就是說,在虛擬環境中,數據不再分散存放在服務器的本地硬盤,而是集中存放在共享數據存儲。如果某臺共享存儲出現故障,需要淘汰、維護或更換升級時,可能需要卸載,并將出現故障的存儲從vCenter清單中刪除。在卸載或刪除過程中,有時會出現無法卸載或刪除的現象。
筆者在為某單位維護數據中心時,就遇到了這樣一起案例:客戶單位的一臺SAS存儲系統出現了故障,客戶單位網管員想把它從vCenter Server存儲清單里刪除,可是怎么也刪除不了。筆者嘗試了很多辦法,才刪除掉這臺頑固的故障存儲。

圖1 出現“資源xx正在使用”錯誤
打開瀏覽器,輸入vCenter服務器地址,以vSphere Web Client方式登 錄vCenter Server,用vCenter管 理vSphere基礎設施。登錄vCenter Server后,單擊窗口左側存儲選項卡,將樹形目錄切換為存儲的樹形目錄,此時可看到出現故障的存儲在樹形目錄中顯示為“(非活動)”,在數據存儲列表中顯示為“(已卸載)(不可訪問)”。
出現“(已卸載)”字樣,估計是該單位管理員曾經卸載過該存儲。出現“(不可訪問)”,說明存儲故障相當嚴重,根本不能訪問,即便掛載了這個存儲,也可能無法訪問。還有另外一種情況,就是存儲有故障,已被客戶單位管理員刪除過,只是在清單里面刪不掉而已。筆者嘗試刪除這個存儲,發現在刪除過程中報錯,在任務欄報出現“資源xx正在使用”的錯誤(如圖 1所示),確實不能刪除故障磁盤。
事前筆者就知道存儲已有故障,不能使用,客戶單位網管員只是想把故障存儲從存儲清單里面刪除,并不想使用這個存儲,故筆者將分析重點放在為什么不能將故障存儲從存儲清單里面刪除。
據調查,這個存儲出現故障已經有一段時間了,不能刪除故障存儲說明還有其他對象和故障存儲存在某種聯系。也就是說,在vCenter Server層面,還有對象和故障存儲存在映射關系。例如,某些虛擬機、主機、一些虛擬機的CD/ROM,軟驅等設備,部分虛擬機的配置文件、硬盤文件或快照等數據文件,可能仍和故障存儲有關聯,只要存在某種關聯,就不能將故障存儲從vCenter Server清單里面刪除。不過,此時故障存儲確實不存在,故不能對它做任何操作。
例如,在本例中,該故障存儲的右鍵菜單如圖2所示,前面嘗試過右鍵菜單中“刪除數據存儲”,已報該存儲正在使用等錯誤提示。該右鍵菜單中的“維護模式”的兩個子菜單項“進入維護模式”和“退出維護”都是灰色的。

圖2 故障存儲的右鍵菜單顯示

圖3 有一臺虛擬機狀態顯示“不可訪問”

圖4 顯示沒有分配CPU、內存等信息
1.首先查看與存儲關聯的虛擬機,選中故障存儲,單擊“虛擬機”選項卡,發現該存儲上有一臺虛擬機,狀態是“不可訪問”(如圖3所示)。
根據前面的分析,刪除這臺虛擬機或這臺虛擬機上與故障存儲關聯的設備,即可解決故障存儲不能刪除的問題。因這臺虛擬機根本不能用,客戶單位也準備放棄這臺虛擬機,故筆者決定刪除這臺虛擬機。在刪除過程中,筆者發現這臺虛擬機根本不能刪除,也不能對該虛擬機做其他任何操作。
2.已經發現這臺虛擬機與故障存儲之間存在映射關系,又不能刪除該虛擬機,看來只能進一步檢查這臺虛擬機有哪些部件(虛擬機的硬件)和故障存儲存在映射關系,虛擬機的硬盤、CD/DVD驅動器、軟盤驅動器、快照等硬件或狀態數據都可能和故障存儲有關聯。
進一步檢查虛擬機配置發現,該虛擬機和故障存儲沒有任何關聯,甚至出現沒有分配CPU、內存等詭異現象(如圖4所示)。估計這臺虛擬機的配置文件也在故障存儲上,所以無法查看虛擬機的配置。
3.基本可以確定故障存儲和故障虛擬機存在某種映射關系,都無法刪除。此時只能從主機著手,先檢查哪些主機加載并“正在使用”故障存儲。也就是要檢查故障存儲和哪些主機存在映射關系。選中故障存儲后,單擊“主機”選項卡,此時可以看到和故障存儲關聯的主機(如圖5所示)。
筆者嘗試斷開主機連接,發現斷開的是主機和整個vCenter Server的連接,不得已,筆者又將斷開連接的主機再連接回來。
4.斷開主機連接后再連接主機,筆者發現和故障存儲關聯得這臺主機不在故障存儲的主機列表中了,于是筆者如法炮制,依次斷開和故障存儲有關聯得主機,再連接回來,最后只剩下一臺主機無論如何不能切斷這臺主機和存儲之間的關聯。
5.現在是無法切斷主機和存儲之間關聯,也不能切斷故障虛擬機和存儲之間的關聯,只能找到前面不能刪除的故障虛擬機在哪臺主機上,找到主機后,選中主機,單擊“虛擬機”選項卡,刪除故障虛擬機,發現根本不能刪除故障虛擬機(如圖6所示)。

圖5 可以查看和故障存儲關聯的主機

圖6 無法刪除故障虛擬機

圖7 任何兩個對象間均存在映射關系

圖8 顯示之前的故障都消失了
6.至此,通過上述操作,不難分析出故障存儲、故障虛擬機和主機三個對象之中,任何兩個對象之間均存在映射關系(如圖7所示),由此構成了循環,解除循環的方法就是徹底關閉一個對象。我們已在前面的操作中已嘗試了故障存儲和故障虛擬機的操作,也斷開了主機的連接,仍不能解決問題的原因的存儲和虛擬機均是故障設備,不能從物理上解除映射關系。雖然斷開了主機連接,但仍有主和故障存儲存在映射關系。好在主機和虛擬機不一樣,可以讓主機進入維護模式,這樣就可以斷開和主機關聯得其他所有對象,包括存儲和虛擬機。一旦主機進入維護模式,虛擬機會自動遷移到其他主機上,于是筆者考慮讓與故障存儲有關聯的那臺主機進入維護模式。
7.選中需要進入維護模式的主機,依次單擊右鍵菜單“維護模式→進入維護模式”。 一 旦主機進入維護模式,哪怕在進入維護模式過程中,前面刪除的故障虛擬機和故障存儲都自動消失了,如圖8所示。
隨著服務器虛擬化應用的普及和深入,主機、網絡、虛擬機和存儲等都可能發生故障。出現故障時,作為基層的網管員,首先應沉著冷靜地面對故障,要對故障進行分析,要大膽探索,在探索前要對每步操作做出評估,避免造成二次傷害。