vmx文件被鎖?
解決方法:
1、首先將cluster中的HA功能關(guān)閉。如果該功能不關(guān)閉,容易造成死鎖,,VM不斷跳動,,不斷的在不同的ESXi內(nèi)循環(huán)被鎖,徒勞而無功。
2、虛機(jī)磁盤文件被鎖,必須要知道到底是哪臺ESXI把他給鎖住了,這是關(guān)鍵。
3、在VCenter中,把被鎖的VM從Inventory中remove掉。原因很簡單,這是一個 unregister的過程。找到目標(biāo)主機(jī)后,當(dāng)然是殺死他鎖住VM的進(jìn)程。之所以會被鎖,原因就是HA 把VM從別的HOST遷移過來,但是又沒有unregister和register的過程,所以在你查看VM的Summary的時候,host ip還是屬于出問題的 host。 但是VM又被新的host強(qiáng)行power on,這樣自然不能啟動。
操作步驟:
1、SHELL命令行登陸虛機(jī)所在的物理主機(jī)ESXI(或登陸集群內(nèi)的所有物理主機(jī),以確定在哪個主機(jī)上)
使用如下命令查看虛機(jī)文件是否被鎖定。
# vmkfstools -D /vmfs/volumes/UUID/VMDIR/LOCKEDFILE.xxx(虛機(jī)名稱)
2、使用如下命令查找虛機(jī)進(jìn)程
#ps | grep ruixin (KILL終止)
# esxcli vm process list
(# esxcli vm process kill --type=hard --world-id=xxxxx 終止)
如果上述命令可以找到虛機(jī)被鎖的進(jìn)程ID,則終止該虛機(jī)進(jìn)程,釋放鎖。
3、如上述命令沒找到,還可以使用如下命令來找
# vmkvsitools lsof | grep Virtual_Machine_Name
使用kill -9 PID結(jié)束進(jìn)程。至此文件鎖定被解除。
補(bǔ)充:
在虛擬機(jī)所在主機(jī)用touch命令,也可鎖定解除
解除文件鎖定后,登錄vcenter,從清單移除原虛機(jī)名稱(備注:虛機(jī)關(guān)機(jī)了,這時還可能看到虛機(jī)在集群中不同主機(jī)上跳躍注冊,需要從清單中移除可能多次,名稱為UNKNOWN的樣子,中間添加清單會出現(xiàn)“使用相同名稱的虛擬機(jī)或模板已被注冊”,繼續(xù)移除UNKNOWN樣子的名稱,直至最后不出現(xiàn)錯誤提示,再最后從存儲中成功添加虛機(jī)的VMX,啟動時注意選擇“移動至”不要使用“復(fù)制至”)。在存儲器里用vmx添加虛機(jī)到清單后開機(jī)成功。
備注補(bǔ)充:
文件鎖定的目的
為了防止并行更改關(guān)鍵虛擬機(jī)文件和文件系統(tǒng),ESXi/ESX 主機(jī)對這些文件建立了鎖定。在某些情況下,即使關(guān)閉虛擬機(jī)的電源,這些鎖定也不會解除。文件鎖定后,服務(wù)器將無法訪問這些文件,并且將無法打開虛擬機(jī)的電源。
這些虛擬機(jī)文件通常在運(yùn)行時期間鎖定:
VMNAME.vswp
DISKNAME-flat.vmdk
DISKNAME-ITERATION-delta.vmdk
VMNAME.vmx
VMNAME.vmxf
vmware.log
確定文件是否正在由正在運(yùn)行的虛擬機(jī)使用
如果文件正在由正在運(yùn)行的虛擬機(jī)訪問,則無法強(qiáng)奪或移除該鎖定??赡艹钟性撴i定的主機(jī)正在運(yùn)行虛擬機(jī)且變得無響應(yīng),或者另一臺正在運(yùn)行的虛擬機(jī)在嘗試打開電源前錯誤地將磁盤添加到了其配置中。
要確定虛擬機(jī)進(jìn)程是否正在運(yùn)行,請執(zhí)行以下操作:
確定是否已在主機(jī)上注冊虛擬機(jī),為此請以 root 用戶身份運(yùn)行以下命令:
# vim-cmd vmsvc/getallvms
注意:輸出內(nèi)容會列出每個已注冊虛擬機(jī)的 vmid。請記錄此信息,因為在 ESXi 服務(wù)器上此過程的其余部分將需要此信息。
在主機(jī)上訪問虛擬機(jī)的當(dāng)前狀態(tài),運(yùn)行以下命令:
# vim-cmd vmsvc/power.getstate vmid
另外還要注意SWAP文件
在 VM 啟動時會自動生成SWAP,沒有SWAP文件,其實(shí)就是因為 SWAP 存在了, 因為重名而導(dǎo)致無法正常生成。
進(jìn)入到/vmfs/volumes/lunid/vm_path/下,vmkfs -d virtual_machine.vswp 或者進(jìn)入Datastore Browser,在里面把SWAP文件刪除也可。重新注冊VM。進(jìn)入Datastore Browser,找到VM.vmx,add to inventory。啟動VM正常。