通過iSCSI方式連接到ESXi主機上的外掛存儲意外失聯了一段時間,導致部分虛擬主機在集群中呈現出孤立的狀態,單獨登陸到每台ESXi上可以看到這些虛擬主機都變成了unknow狀態。因為有過上一次(VMware-存儲斷網之后無法添加vmx到清單)的經驗,所有操作等待存儲恢復與ESXi連接之后再進行操作,這樣可以盡量避免虛擬主機意外“消失”。
前奏
最終,存儲網絡恢復正常,期間經歷了大約1個小時,有絕大多數的Windows虛擬主機在存儲網絡恢復正常之后繼續正常工作;有少部分的Linux虛擬主機內部EXT文件系統出現了只讀,這個需要重啟后對文件系統修復才能解決;而有一小部分大概占總虛擬主機30%的量的關機虛擬主機,此時需要對他們進行啟動操作,而真正的問題恰巧也來了。
環境介紹
所在集群中開啟了vSphere DRS功能,但未開啟HA功能,這樣會在啟動虛擬主機的時候,根據DRS自動策略會將虛擬主機分配到算法認為最輕松的一台ESXi主機上,最終完成啟動。
可是現在啟動過程中出現了一些問題,有些虛擬主機可以很順利的啟動起來,而有些虛擬主機在等待5~10分鍾之后開始報錯,報錯信息五花八門,
Ø 有在95%啟動過程中報錯的,
Ø 有在久等之后拋出“打開配置文件------.vmx”文件失敗的,還有的干脆啟動之后迅速報錯“打開虛擬機電源:未能啟動虛擬機 (錯誤 -18)”的,
Ø 有報錯通信相關異常的,
Ø 以及注冊虛擬機時候拋出的錯誤“The system returned an error. Communication with the virtual machine might have been interrupted.正在目標主機上注冊虛擬機”。
通過尋找日志線索,找到兩處我認為和啟動有關准確都較高的日志記錄:
Figure 1日志信息一,有詳細的vmx文件無法打開的記錄,此處對應的啟動環境是在vCenter中,通過高級管理員賬號啟動的報錯
Figure 2日志信息二,在登陸到ESXi上看到的錯誤信息,其中綠色圈的是vCenter向ESXi發送指令用來實際操作的用戶,紅色圈的是虛擬主機無響應后VMware內部為用戶記錄錯誤信息的用戶。
問題解決
通過上面對日志的分析與查看,我按照《VMware-存儲斷網之后無法添加vmx到清單》文章中的指導建議,使用vmkfstools 查看了對應無法啟動的虛擬主機的vmx文件占有情況。
Figure 3利用vmkfstools(綠色橫線為命令)了解到該vmx文件並無被占有(紅色橫線全零表示該文件未被任何ESXi主機鎖定)
既然和日志提到的文件對不到一起,而虛擬主機目錄下也就那些文件,索性一個個的去遍歷一遍,看看有沒有其他的思路和線索。
Figure 4當我遍歷到vswp文件的時候我可以看到鎖定這個文件的ESXi主機MAC地址了(VMware-存儲斷網之后無法添加vmx到清單文中有介紹如何通過MAC反查到對應ESXi主機)
由於vSphere DRS的會對虛擬主機啟動自動分配ESXi主機,所以此時我把DRS臨時關閉,將這個不能夠開啟的虛擬主機遷移到反查到的原ESXi物理主機上,再次啟動,非常順利的進行了下去。隨后的那些無法進行啟動的虛擬主機也如法炮制的都啟動好了。
經驗總結
1、等待存儲恢復之后,啟動vCenter,切記第一時間關閉DRS,如果有HA最好也一起關閉,避免批量啟動的時候自動資源分配導致前一次這個vswp文件還未處理掉與原始ESXi主機的關聯關系,這樣如果自動給了一個不是原始ESXi主機的環境,就會導致vmx文件和vswp文件的所有權腦裂。
2、通過判斷Figure 2中的那條user用戶錯誤信息,其實我們已經可以找到這個虛擬主機故障前與那個ESXi主機有做關聯。
3、由於vCenter自身也是安裝在外掛存儲中的,因此在外掛存儲故障了之后vCenter已經無法記錄日志,因此來自於ESXi的信息相當珍貴。
4、實際上通過分析啟動不能的虛擬主機log文件(在外掛存儲的虛擬主機目錄下)也是可以分析到那些文件被什么樣的ESXi主機鎖住了。
5、VMware的知識庫里面告訴我們,在一台虛擬主機啟動之后,這些類型的文件(如下所示)都會被所在ESXi主機通過vmfs這個集群式文件系統給鎖定。
a) VMNAME.vswp
b) DISKNAME-flat.vmdk
c) DISKNAME-ITERATION-delta.vmdk
d) VMNAME.vmx
e) VMNAME.vmxf
f) vmware.log
6、文中日志Figure 1所提到的vmx文件無法讀取,我的理解是vmx可以看作是虛擬主機的機箱,而這個機箱里面有硬盤文件VMDK,虛擬機交換文件vswp,日志文件log等等,因為涉及到的被鎖文件是在眾多,所以系統就會用vmx文件作為統一輸出告知管理員一個大致的錯誤方位。
7、等待所有虛擬主機啟動完畢之后,再將vSphere DRS和HA開啟。
8、充分利用VMware-存儲斷網之后無法添加vmx到清單提及的RVTools,可以讓維護和運行更加順利。
-=EOB=-




