虚拟机在 vCenter Server 中显示为无效或孤立
search cancel

虚拟机在 vCenter Server 中显示为无效或孤立

book

Article ID: 301275

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

本文介绍了什么是孤立虚拟机、它们是如何出现的以及如何修复这些虚拟机。本文概述了与孤立虚拟机相关的最常见错误以及如何解决这些问题。


Symptoms:

免责声明:本文为 Virtual machines appear as invalid or orphaned in vCenter Server (1003742) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。



  • 虚拟机在 vCenter Server 中显示为无效或孤立
  • 虚拟机在 VMware High Availability (VMware HA) 主机出现故障后显示为无效或孤立
  • 虚拟机在 ESX 主机退出维护模式后显示为无效或孤立
  • 虚拟机在 DRS 迁移失败后显示为无效或孤立
  • 虚拟机在出现存储故障后显示为无效或孤立
  • 虚拟机在 vCenter Server 与虚拟机所驻留的主机的连接丢失后显示为无效或孤立
  • 尝试启动虚拟机时看到以下一个或多个错误:

    • Could not power VM, no swap file, failed to power on VM.
    • VMControl error -11: No such virtual machine.
    • A general system error occurred. The system returned on error. Communication with the virtual machine may have been interrupted

  • C:\ProgramData\VMware\VMware VirtualCenter\Logs\vpxd.log 文件中,您会看到类似以下内容的条目:

    [11916 error 'vpxdvpxdVmomi'] [SoapInitWritelocked] GetVpxaInfo failed for host esxi01.domain.com
    [11916 info 'vpxdvpxdVmomi' opID=HB-host-01@3777-1a2b429b] [SoapInitWritelocked] Attempting to get Vpxa version for host esxi01.domain.com
    [10060 warning 'Default' opID=HB-host-01@3777-1a2b429b] Closing Response processing in unexpected state:3
    [11916 info 'vpxdvpxdHostAccess'] [VpxdHostAccess] Failed to get VpxaCnxInfo over SOAP version vpxapi.version.version1 for host esxi01.domain.com:Invalid response code:503 Service Unavailable

    注意:上述日志摘录仅为示例。日期、时间和环境变量可能会因环境而有所不同。


Environment

VMware vCenter Server 5.5.x
VMware vCenter Server 5.1.x
VMware vSphere ESXi 5.5
VMware ESXi 3.5.x Embedded
VMware ESX Server 3.5.x
VMware ESX 4.1.x
VMware ESXi 4.0.x Installable
VMware ESXi 3.5.x Installable
VMware vCenter Server 4.0.x
VMware ESXi 4.1.x Installable
VMware vSphere ESXi 5.0
VMware ESX 4.0.x
VMware vCenter Server 5.0.x
VMware VirtualCenter 2.5.x
VMware ESXi 4.0.x Embedded
VMware vSphere ESXi 5.1
VMware vSphere ESXi 6.0
VMware vCenter Server 6.0.x
VMware ESXi 4.1.x Embedded
VMware vCenter Server 4.1.x

Resolution

注意

在 vCenter Server 中,您可能会发现虚拟机已具有孤立标识或已变为无效。孤立虚拟机存在于 vCenter Server 数据库中,但不再位于 ESX 主机上。如果虚拟机所在的 ESX 主机不同于 vCenter Server 所预期的 ESX 主机,则该虚拟机也会显示为孤立。

在以下情况下,虚拟机可能会显示为无效或孤立。要解决这些问题,请参见针对每一种情况提供的故障排除步骤:


执行 vMotion 或 VMware DRS 迁移后

  1. 使用 SSH 连接到源 ESX/ESXi 主机和目标 ESX/ESXi 主机。有关详细信息,请参见 Opening a command or shell prompt (1003892)
  2. 使用 vmware-cmd -l 命令,检查孤立虚拟机是否在 vCenter Server 所报告的同一 ESX 主机上进行注册,该 ESX 主机可能为源计算机。如果虚拟机未在该主机上注册,则使用 vmware-cmd -l 命令检查是否在目标 ESX 主机上注册。

    注意:在 ESXi 中,使用 vim-cmd vmsvc/getallvms 命令,而不是 vmware-cmd -l 命令。

  3. 如果该虚拟机在目标 ESX/ESXi 主机上注册:

    1. 运行以下命令重新启动 vpxa 和 ESX 主机管理服务:

      service mgmt-vmware restart

      有关详细信息,请参见 Virtual machines unexpectedly reboot after issuing the "mgmt-vmware restart" command (7301769)

      service vmware-vpxa restart

      注意:在 ESXi 中,使用 /sbin/services.sh 命令在主机上重新启动管理服务。

    2. 重新启动 vCenter Server 服务。有关详细信息,请参见 Stopping, starting, or restarting vCenter services (1003895)

注意

  • 这些步骤可解决与 ESX/ESXi 上的孤立虚拟机相关的大多数问题。
  • 确保源 ESX/ESXi 主机与目标 ESX/ESXi 主机之间不存在时差。

完成这些步骤后,在尝试启动虚拟机时可能会看到以下错误:

  • A general system error occurred. The system returned on error. Communication with the virtual machine may have been interrupted.
  • VMControl error -11: No such virtual machine.

执行以下步骤可解决这些错误:

  1. 尝试使用 vmware-cmd -s 命令注册虚拟机。

    注意:如果该命令未失败,且未显示 VMControl error -11: No such virtual machine 错误,请转到步骤 5。

    还可以通过在数据存储浏览器中右键单击其 . vmx 文件并选择注册客户机来注册虚拟机。

    有关详细信息,请参见 Registering or adding a virtual machine to the inventory on vCenter Server or on an ESX/ESXi host (1006160)

  2. 尝试使用以下命令从命令行启动虚拟机:

    vmware-cmd config_path start

    其中 config_path 是由 vmware-cmd –l 确定的配置文件的路径。

    有关使用命令行在 ESXi 主机上打开虚拟机电源的详细信息,请参见 Powering on an ESX/ESXi host's virtual machine (1003738)

  3. 查看虚拟机的 . vmx 文件并验证该文件是否具有有效的配置参数。此外,还应确保该文件仅包含 UTF-8 字符。

    注意:如果可以,将 . vmx 文件与其他虚拟机的 . vmx 文件进行比较。

  4. 使用原始虚拟机的虚拟磁盘创建新的虚拟机。
  5. 打开新虚拟机电源。


发生 VMware HA 主机故障后,或 ESX 主机退出维护模式后

  1. 从 vCenter Server 中移除 ESX 主机:

    1. 在 vCenter Server 清单中选择指定的 ESX/ESXi 主机。
    2. 右键单击 ESX/ESXi 主机,然后选择断开连接
    3. ESX/ESXi 主机断开连接后,再次右键单击该主机,然后选择移除

  2. 通过从 ESX 主机的服务控制台运行以下命令来移除 vCenter Server 代理和 VMware HA 代理:

    export LGTO_AAM_VMWARE_REMOVAL=1
    rpm -e LGTOaama
    rpm -e LGTOaamvm
    rpm -e VMware-vpxa


  3. 将 ESX/ESXi 主机重新添加到 vCenter Server:

    1. 选择要向其添加 ESX/ESXi 主机的群集、数据中心或场。
    2. 右键单击群集、数据中心或场,然后选择添加
    3. 输入 ESX/ESXi 主机的 IP 地址。您的用户名和密码必须具有足够的权限来添加主机。
    4. 完成添加主机向导中的步骤。

如果在尝试启动虚拟机时看到此错误:

  • Could not power VM, no swap file, failed to power on VM when trying to start them

执行以下步骤:

  1. 在每个 ESX 主机上运行 ps -auxwww | grep -i vm_name 命令,直到您找到正在运行虚拟机进程并锁定其文件的服务器主机。

    注意:对于 ESXi,命令为:

    ps | grep vmx

  2. 在该 ESX 主机上运行 service vmware-vpxa restart 命令。
  3. 重新启动 VMware VirtualCenter Server 服务。

如果在执行这些步骤之后问题仍然存在:

  1. 关闭虚拟机电源。
  2. 使用 SSH 客户端访问 ESX/ESXi 服务控制台。
  3. 使用文本编辑器打开虚拟机配置文件 (.vmx)。默认位置为:

    /vmfs/volumes/datastore_name/vm_name/vm_name.vmx
  4. 移除配置文件中引用的交换文件的位置。此设置类似于:

    sched.swap.derivedName = ""

  5. 保存此文件。
  6. 重命名现有交换文件或从虚拟机目录中删除该文件。
  7. 取消注册虚拟机并进行重新注册以使更改生效。有关详细信息,请参见 Registering or adding a virtual machine to the inventory on vCenter Server or on an ESX/ESXi host (1006160)
  8. 打开虚拟机电源。

在 vCenter Server 外部删除虚拟机


用户可以通过 VMware 管理界面(在 vCenter Server 关闭时)、通过直接连接到 ESX/ESXi 主机的 vSphere Client,或通过从服务控制台删除虚拟机配置文件来删除虚拟机。可以通过右键单击这些虚拟机并选择“删除”来从 vCenter Server 中将其移除。如果“删除”选项不可用,请参见 Deleting an orphaned virtual machine when the Remove option is not available (1011468)

注意:如果删除了配置文件而保留了虚拟磁盘,则可以使用 VMware 管理界面或 vSphere Client 并选择将现有虚拟磁盘附加到新创建的 .vmx 文件来重新创建虚拟机。

正在执行迁移时,vCenter Server 重新启动


这是暂时性状况。启动时,vCenter Server 会重新连接所有主机。如果迁移在 vCenter Server 关闭期间完成,则在 vCenter Server 与虚拟机的目标主机建立连接之前,可将虚拟机报告为孤立。

计划同时进行重定位的虚拟机过多

ODBC 超时可能会导致数据库中出现错误。要解决 ODBC 超时,请执行以下操作:
  1. 在确保原始虚拟机可以打开电源之后删除孤立虚拟机。
  2. 在 vCenter Server 控制台上单击删除虚拟机以从 vCenter Server 数据库中删除虚拟机及其孤立虚拟机。

ESX/ESXi 主机本地磁盘(尤其是 root 分区)已满时尝试删除虚拟机


必须通过右键单击清单中的孤立虚拟机来移除该虚拟机。

有关更正主机的详细信息,请参见 Investigating disk space on an ESX or ESXi host (1003564)

虚拟机移动后或打开电源后 1 小时内重新引导主机

如果在移动虚拟机或打开虚拟机电源后的一小时内重新引导主机,则不再存在 vmInventory.xml 文件,并且 hostd 不会将这些虚拟机报告为已在主机上注册。在启用 HA 的群集中,此状况仅影响禁用 HA 重新启动的虚拟机。

有关详细信息,请参见 Virtual machines are orphaned after rebooting the ESXi host on which they reside (2013301)

某个 .vmx 文件中包含特殊字符或不完整的行项目

使用文本查看器,查看 .vmx 文件的内容。如果所有行都显示不完整或包含尾随空格或特殊字符:
  1. 创建 .vmx 文件的备份副本。
  2. 使用文本编辑器,删除部分行和/或移除任何尾随空格或特殊字符。
  3. 在 vCenter 中,右键单击虚拟机,然后单击从清单中移除
  4. 在 vCenter Server 中,浏览数据存储并查找虚拟机的 .vmx
  5. 右键单击虚拟机,然后单击添加到清单
完成这些步骤后,虚拟机会正常显示。如果尝试打开该虚拟机电源并收到“虚拟机问题”提示,则进行默认响应,随后虚拟机将正常打开电源。

在单台主机上一次重新加载所有无效虚拟机

 
此脚本可在单台主机上一次重新加载所有无效虚拟机:

for a in $(vim-cmd vmsvc/getallvms 2>&1 |grep invalid |awk '{print $4}'|cut -d \' -f2);do vim-cmd vmsvc/reload $a;done

 

vCenter 数据库已满

 
要解决此问题,请手动清理或截断 vCenter Server 数据库。请参见 从 vCenter Server 使用的数据库中清除旧数据 (2075138)

 



Additional Information

有关对孤立虚拟机进行故障排除(如在 vSphere Client 中使用“重定位”选项恢复孤立虚拟机)的详细信息,请参见 vSphere Troubleshooting Guide

有关故障排除的详细信息,请参见 Troubleshooting a failure to deploy or undeploy a virtual machine in VMware vCenter Lab Manager (1006336)

Virtual machines appear as invalid or orphaned in vCenter Server
从 vCenter Server 使用的数据库中清除旧数据