李家宏|博客

vsphere6.0 VM虚机文件被锁如何解决

发布时间:4年前热度: 1206 ℃评论数:

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://xjsunjie.blog.51cto.com/999372/1945989

vsphere6.0上一台数据库虚拟机假死,强行关机后无法POWER ON。在启动时报虚拟机文件被锁定,此时对虚机进行迁移、快照、克隆等,发现操作都不可用。查看虚机状态,发现其在集群内的8台物理主机上来回飘。 
wKioL1lmyq7hRm2xAADJDIcqoSc383.png-wh_50

解决方法:

  1、首先将cluster中的HA功能关闭。如果该功能不关闭,容易造成死锁,,VM不断跳动,,不断的在同一集群内不同的ESXI主机间循环被锁,徒劳而无功。 
2、虚机磁盘文件被锁,必须要知道到底是哪台ESXI把他给锁住了,这是关键。   
 3、在VCenter中,把被锁的VM从Inventory中remove掉。原因很简单,这是一个 unregister的过程。找到目标主机后,当然是杀死他锁住VM的进程。之所以会被锁,原因就是HA 把VM从别的HOST迁移过来,但是又没有unregister和register的过程,所以在你查看VM的Summary的时候,host ip还是属于出问题的 host。 但是VM又被新的host强行power on,这样自然不能启动。

解决办法: 
打开集群内所有EXSI主机的SSH登陆功能 
image_1bobnat0go81abk1joq13ho1989m.png-106.2kB 
然后在每台机子上执行

  1. ~ # vim-cmd vmsvc/getallvms
  2. Vmid      Name             File           Guest OS          Version   Annotation          
  3. 10   C5cpyPdb1  [W56021_SY07_CP07PV1C16] C5cpyPdb1/C5cpyPdb1.vmx  rhel6_64Guest   vmx-08      
  4. 17   C5ioAdm1   [W56021_SY01_CP07PV1C16] C5ioAdm1/C5ioAdm1.vmx   windows8Server64Guest   vmx-08  
  5. 20   C5jkhyPdb1 [W56021_SY01_CP07PV1C16] C5jkhyPdb1/C5jkhyPdb1.vmx rhel6_64Guest   vmx-08              

找到被锁的主机 C5jkhyPdb1 
查询这台虚机的状态

  1. ~ # vim-cmd vmsvc/power.getstate 20
  2. Retrieved runtime info
  3. Powered off

如果虚机状态为ON,可以执行如下命令

  1. ~ # esxcli vm process list
  2. C5jkhyPdb1
  3.   World ID: 109052730
  4.   Process ID: 0
  5.   VMX Cartel ID: 109052727
  6.   UUID: 42 0b d6 eb 00 13 b6 26-a2 c4 86 4e 2d ba 17 db
  7.   Display Name: C5jkhyPdb1
  8.   Config File: /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1.vmx
  9. ~ # esxcli vm process kill --type=hard --world-id=109052730

在集群内每台esxi主机上执行如下命令,找到虚机被锁的文件

  1. # vmkfstools -D /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1.vmx
  2. Lock [type 10c00001 offset 233738240 v 114, hb offset 3780608
  3. gen 85, mode 0, owner 00000000-00000000-0000-000000000000 mtime 46362574
  4. num 0 gblnum 0 gblgen 0 gblbrk 0]
  5. Addr <4, 528, 18>, gen 52, links 1, type reg, flags 0, uid 0, gid 0, mode 100755
  6. len 3706, nb 1 tbz 0, cow 0, newSinceEpoch 1, zla 2, bs 8192
  7. ~ # vmkvsitools lsof | grep   C5jkhyPdb1
  8. 131169563   vmx                   FILE                        4   /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/vmware.log
  9. 131169563   vmx                   FILE                       49   /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1.vmx.lck
  10. 131169563   vmx                   FILE                       50   /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1.vmx
  11. 131169563   vmx                   FILE                       51   /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1.vmx~
  12. 131169563   vmx                   FILE                       94   /vmfs/volumes/56823cb8-c8a37260-f48f-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1-flat.vmdk
  13. 131169563   vmx                   FILE                       96   /vmfs/volumes/56824c84-3e3e868c-5468-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1-flat.vmdk
  14. 131169563   vmx                   FILE                       97   /vmfs/volumes/56824c84-3e3e868c-5468-6c0b84629718/C5jkhyPdb1/C5jkhyPdb1_1-flat.vmdk
  15. 131169563   vmx                   FILE                      123   C5jkhyPdb1.nvram
  16. # ps|grep C5jkhyPdb1
  17. 131136798      vmm0:C5jkhyPdb1    
  18. 131169568      vmm1:C5jkhyPdb1    
  19. 131169569      vmm2:C5jkhyPdb1    
  20. 131136802      vmm3:C5jkhyPdb1    
  21. 131169652 131169563 vmx-vthread-7:C5jkhyPdb1 /bin/vmx
  22. 131169653 131169563 vmx-vthread-8:C5jkhyPdb1 /bin/vmx
  23. 131169654 131169563 vmx-vthread-9:C5jkhyPdb1 /bin/vmx
  24. 131104119 131169563 vmx-mks:C5jkhyPdb1   /bin/vmx
  25. 131169656 131169563 vmx-svga:C5jkhyPdb1  /bin/vmx
  26. 131169658 131169563 vmx-vcpu-0:C5jkhyPdb1 /bin/vmx
  27. 131136891 131169563 vmx-vcpu-1:C5jkhyPdb1 /bin/vmx
  28. 131169660 131169563 vmx-vcpu-2:C5jkhyPdb1 /bin/vmx
  29. 131169661 131169563 vmx-vcpu-3:C5jkhyPdb1 /bin/vmx

然后杀死被锁文件的进程

  1. #kill -9 131169563

image_1bobng6mipfv1iq4kdl1kdh1n7m13.png-88.4kB 
解除后被锁后登录vcenter,从清单移除原虚机名称(备注:虚机即使关机了,这时还可看到虚机在集群中不同主机跳跃注册,需要从清单中移除可能多次,名称为UNKNOWN的样子。

wKioL1lmztiSLWQFAABVVmhWypo185.png-wh_50 
最后从存储中添加该虚机的VMX,启动时选择移动至不要使用复制至)。在vmx添加虚机到清单后开机成功。

备注: 
依据VMware KB 2088157 ESXi 5.5 Patch 4 Release ESXi550-201501001(2015-01-27)之前的版本,存在虚机无响应,状态变灰为不可访问和操作虚拟机,vc控制台黑屏无法操作,网络不可访问,虚机进程锁死无法重置等等问题。

vSphere HA 重置虚拟机失败问题是由于ESXi软件本身的 BUG导致的,需 
要升级 ESXi 版本至ESXi5.5 Patch 4(build-2403361)或更高。但实际上在6.0的版本中依然存在此问题。

本文出自 “滴水穿石孙杰” 博客,请务必保留此出处http://xjsunjie.blog.51cto.com/999372/1945989


文件,解决

手机扫码访问