一、【问题描述】

  1. vCenter目录清单显示虚拟机无效或不可访问

  2. 虚拟机其他操作都显示为灰色,即无法进行界面操作

二、【问题分析】

  1. 清单服务问题

    有时候虚拟机会被标注成无效或者是无法访问,但实际上虚拟机还是正常的,业务也可以正常访问,但是无法对虚拟机做任何操作,这种情况一般都是清单服务的问题。


  2. 虚拟机本身的问题

    虚拟机本身的OS有时候也会有问题,导致虚拟机死机,这时候通过vmtools发送的监控信号就中断了,主机就会把虚拟机标记成无效或者无法访问。如果您开了HA,并且有虚拟机监控,那么正常来说这种情况下会触发HA,把这台虚拟机在原主机或者集群中的其他主机上重启。


  3. 主机进程的问题

    虚拟机对于主机来说就相当于一个word或者excel程序在我们的电脑上一样,就是一个系统中的进程,该进程有较小概率也会由于某些原因出现问题,会导致虚拟机无法正常工作。


三、【解决方法】

 1. 首先需要找到该虚拟机存放在哪个存储上,选择该虚拟机—》右键—》移除清单,此时在存放该虚拟机的存储上,找到虚拟机文件夹,在该文件夹里找到“虚拟机名称.vmx”文件,右键“添加到清单”。如果“添加到清单是灰色”,那是因为该虚拟机还在esxi上运行,所以需要通过ssh登陆到esxi,kill命令结束运行的虚拟机进程。

      SSH进入esxi,用root用户登录

      运行命令:ps | grep VirtualMachineName

输入内容类似于:

      7662 7662 vmx /bin/vmx

      7667 7662 vmx /bin/vmx

      7668 7662 mks:VirtualMachineName /bin/vmx

      7669 7662 vcpu-0:VirtualMachineName/bin/vmx

将返回多个行,每行对应一个vmx 进程。请识别出目标虚拟机的父vmx 进程。第一列包含的是 PID,第二列则包含该父进程的 PID。请确保您仅终止父进程。每个进程的父进程 ID (PID) 在第二列中列出,在本示例中以粗体标识。记下该数字以便在后面的步骤中使用。

警告:请确保您标识的行仅特定于您要修复的虚拟机。如果对该虚拟机以外的虚拟机继续执行此过程,则可能会导致其他虚拟机停机。

终止该进程:

     Kill ProcessID

等待 30 秒后重复执行第 2 步再次检查该进程是否存在。

如果未终止,请运行以下命令:

     kill -9 ProcessID

结束该虚拟机进程后再添加清单。


相关KB链接:

在 ESXi 主机上关闭虚拟机 (2049661)

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2049661


另外:

如果再添加该虚拟机到清单的时候,提示“虚拟机或模板有相同名称,或已存在”,添加清单会失败。因为在清单数据库里还存在该虚拟机vmx文件,所以现在要把该vmx文件在清单数据库移除。

通过SQLManagement studio新建查询

选择vcenter数据库,执行下面命令:

Select * from VPX_VM WHERELOCAL_FILE_NAME like '%MachineName.vmx'

找到该文件后,在执行下面删除命令(删除的时候可能需要执行该命令多次):

Delete from VPX_VM WHERELOCAL_FILE_NAME like '% MachineName.vmx'

其中MachineName是该虚拟机名称。

 

相关知识库:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2004139