我的生活记录

终止被锁定的虚拟机进程

故障现象

解决思路

为了防止并行更改关键虚拟机文件和文件系统,ESXi/ESX 主机对这些文件建立了锁定。在某些情况下,即使关闭虚拟机的电源,这些锁定也不会解除。文件锁定后,服务器将无法访问这些文件,并且将无法打开虚拟机的电源。

这些虚拟机文件通常在运行时期间锁定:

解决方法

  1. 首先将cluster中的HA功能关闭。如果该功能不关闭,容易造成死锁,,VM不断跳动,,不断再不同的ESX内循环被锁,徒劳而无功。   
  2. 磁盘文件被锁,要解决,必须要知道到底是哪台ESX把他给锁住了,这是关键。方法:看/var/log/vmkernel但是,在做这些前, 再准备些别的工作。
  3. 在VC中,把被锁的VM从Inventory中remove掉。原因很简单,这是一个 unregister的过程。
  4. 根据/var/log/vmkernel,搜索owner,可以找到类似以下的语句:   
    Oct 19 04:23:33 esx-hostname vmkernel: 3:06:29:47.992 cpu6:1656)FS3: 1975: Checking if lock holders are live for lock [type 10c00001 offset 52008960 v 380, hb offset 3554304 Oct 19 04:23:33 esx-hostname vmkernel: gen 17, mode 1, owner 48f5f637-462688bc-fd28-0e1a6434b6f8 mtime 38112]   

OK,owner后面的48f5f637-462688bc-fd28-0e1a6434b6f8就是你的target了。 因为他就是锁住VM 的宿主。

  1. 根据以下命令,,找出到底哪台ESX的UUID是 48f5f637-462688bc-fd28-0e1a6434b6f8
[root@esxhostname root]# esxcfg-info |grep -i 'system uuid'
  1. 找到目标主机后,当然是杀死他锁住VM的进程。之所以会被锁,原因就是HA 把VM从别的HOST迁移过来,但是又没有Unregister和Register的过程,所以在第3步的时候,你查看VM的Summary的时候,Host ip还是属于出问题的 Host。 但是VM又被新的Host霸王硬上功的Power on,注册都没注册, 又怎么启动呢。找到 PID 用下面的命令:
ps -efwww|grep virtualmachine.vmx
找到 PID 后, kill -9 PID
  1. 这时候,还要确定一件事情, .vswp文件的事情。这个是给台客处理问题时吸取的经验。就因为忽略了这个,所以在杀掉迚程后,重新注册VM,还说没有 SWAP文件,启动还是失败。
  2. 进入到/vmfs/volumes/lunid/vm_path/下,vmkfs -d virtual_machine.vswp 或者进入Datastore Browser,在里面把SWAP文件删除也可。
  3. 在 VM 启动时会自动生成SWAP,没有SWAP文件,其实就是因为 SWAP 存在了, 因为重名而导致无法正常生成。
  4. 完全之策,你还可以进入到VM的SETTINGS--OPTIONS--SWAPFILE LOCATION, 对该保存的位置做下设置。
  5. 重新注册VM。进入Datastore Browser,找到VM.vmx,add to inventory。
  6. 启动 VM

参考文档:
http://www.searchvirtual.com.cn/showcontent_63264.htm

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »