VM Guest OS 啟動卡在 95%

今日剛上班就發現有台 DataStore 空間被使用光光,導致其中一台 DB 主機 Hang 住不動,確認訊息選擇取消後,刪除並移動一些檔案後重新啟動該主機,發現啟動後卡在 95% 後就不動,此時除了等由 VI 介面是無法做任何事情,但是上班時間在即所以就上網找了一些資料,發現有許多人也有遇到同樣的情況,此時必須利用 Console 介面下些指令去變更,請參考以下連結

首先重新啟動ESX的服務,此時會導致 VI 或 vCenter 抓不到該主機,這個是正常的,我第一次執行也嚇一跳,上面還有很多服務還繼續存活著。

/sbin/services.sh restart

接下來移動到該虛擬主機的存放路徑 /vmfs/volume/datastore/vmname 底下去把 *.vswp Swap 檔案刪掉

rm –rf /vmfs/volume/datastore/vmname/*.vswp

如果不能刪除的話,代表還有些程序還在執行,導致該檔案被鎖定 (lock or busy),此時要用 ps 指令去找出來那些 PID 是兇手。

ps auxfww | grep vm_guest_name

kill -9 ProcessID

 

重新連結 (reconnect) 這個VM ESX 就可以看到先前正在執行的主機還活得好好的,但是出問題那台 DB 變成 (invalid or unknown),先移除他 (remove) 不能用刪除 (delete from) 喔,之後再打開 DataStore (browse Datastore) 把該主機重新註冊回來。

 

重 新啟動該 DB VM Guest,啟動時很久等了約 20 來分,發現狀況依舊還是卡在 95%,覺得這樣下去不知會等多久,就陸續把同台 VM 上的 VM Guest 陸續關機,等到全部都關閉後,也下指令讓機器重開,等了半天還是硬碟還是在大量存取中,後來就直接把電源關掉 (不建議這樣做,風險很高,因為我都有自動每天備分),啟動該 ESX Server後發現那台 DB VM Guest 又變成 invalid,必須再重複以上步驟。

 

重新開啟 DB VM Guest 還是卡在 95%,這次因為大家都已經上班無法再重啟測試,只好活馬當死馬醫,先把先前的備份先 Clone 出來,同時等候 95% 讓他跑完,等待 Clone 過程中,原來那台居然就開機完成了,心中大石終於放下。

 

後記:

  • 第一次強制停止 Process 後有試過 Clone指令,但是回報說檔案被鎖定,確認是有 Process 沒有跟著被終止。
  • 重 新啟動 DB VM Guest 發現有大量的 I/O 進行中,如果等的夠久或許就不用強制關閉 VM Host,不過因為上班時間將至,選擇較有把握的方式來進行復原,最終還是繞回原點,Unix 系統有問題要針對問題去解決,不像M$ 系統重新開機可以解決大部分的問題。

 

發表迴響