vCenter 中孤立虚拟机记录的完美清理方案

vCenter 中孤立虚拟机记录的完美清理方案

故障场景与现象分析

在管理 vCenter Server 时,你是否遇到过这种情况?某个虚拟机显示为“孤立”状态,但在 ESXi 主机上根本看不到它。更令人抓狂的是,“从清单中移除”选项是灰色的,无法直接删除这个无效的记录。

这种现象在 vCenter Server 6.7、7.0.x 和 8.0.x 版本中都可能发生,特别是在虚拟机迁移、快照管理或 ESXi 主机故障恢复后。

孤立虚拟机的原因分析

孤立虚拟机记录通常由以下几种原因导致:

1. 虚拟机迁移或删除过程异常中断:在 vMotion 或 Storage vMotion 过程中,如果网络中断或主机故障,可能导致 vCenter 数据库中的记录与实际 ESXi 主机上的 VM 不一致。

2. 虚拟机快照管理问题:错误的快照操作或快照删除过程可能导致虚拟机在 vCenter 中的状态异常。

3. vCenter 与 ESXi 主机通信故障:如果 vCenter 与 ESXi 主机之间的通信中断时间过长,可能会导致虚拟机记录变成孤立状态。

解决方案一:使用 vSphere Client 图形界面

这是最简单的方法,无需命令行操作,适用于大多数场景:

1. 在 vSphere Client 中切换到“虚拟机和文件夹”视图。
2. 创建一个新的虚拟机文件夹。
3. 将孤立的虚拟机拖放到这个新文件夹中。
4. 删除这个包含孤立虚拟机的文件夹。

这种方法通过文件夹操作间接删除了孤立虚拟机记录,避免了直接操作 vCenter 数据库的风险。

解决方案二:直接操作 vCenter 数据库

如果第一种方法无效,或者你需要更彻底的解决方案,可以通过直接操作 vCenter 的 vPostgres 数据库来删除孤立虚拟机记录。

操作步骤

1. 首先,确保你已经对 vCenter Server Appliance (VCSA) 进行了完整的备份或关闭状态下的快照。

2. 使用 SSH 连接到 VCSA 并以 root 用户登录。

3. 停止 vCenter Server 服务:

service-control --stop vpxd

4. 连接到 vCenter 的 vPostgres 数据库:

/opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres

5. 识别需要删除的虚拟机 ID:

-- 方法一:通过 ID 查找
   select * from vpx_entity where id = '';

 

   -- 方法二:通过名称查找
   select * from vpx_entity where name like '%%';

6. 按照以下顺序执行删除语句(替换其中的 VM_ID 为实际值):

delete from  VPX_COMPUTE_RESOURCE_DAS_VM where VM_ID=9;
   delete from  VPX_COMPUTE_RESOURCE_DRS_VM where VM_ID=9;
   delete from  VPX_COMPUTE_RESOURCE_ORC_VM where VM_ID=9;
   delete from  VPX_VM_SGXINFO where VM_ID=9;
   delete from  VPX_GUEST_DISK where VM_ID=9;
   delete from  VPX_VM_VIRTUAL_DEVICE where ID=9;
   delete from  VPX_VM_DS_SPACE where VM_ID=9;
   delete from  VPX_NON_ORM_VM_CONFIG_INFO where ID=9;
   delete from  VPX_NORM_VM_FLE_FILE_INFO where VM_ID=9;
   delete from  VPX_VDEVICE_BACKING_REL where VM_ID=9;
   delete from  VPX_VIRTUAL_DISK_IOFILTERS where VM_ID=9;
   delete from  VPX_VM_STATIC_OVERHEAD_MAP where VM_ID=9;
   delete from  VPX_VM_TEXT where VM_ID=9;
   delete from  VPX_VM where ID=9;
   delete from  VPX_ENTITY where ID=9;

 

   delete from VPX_DVPORT where connectee='vm-name';

7. 重启 vCenter Server 服务:

service-control --start vpxd

操作风险与注意事项

在执行任何与数据库相关的操作时,必须谨慎并遵循以下原则:

1. 完整备份是必需的:在进行任何数据库修改之前,确保有完整且可恢复的备份。

2. 操作前确认隔离:如果是 Enhanced Linked Mode (ELM) 架构,必须对所有 ELM 节点进行离线快照。

3. 严格按照顺序执行 SQL 语句:SQL 语句的执行顺序非常重要,必须按照提供的顺序执行,以避免违反数据库约束。

4. 考虑专业支持:如果你对数据库操作不熟悉,或者是在生产环境中操作,建议联系 VMware 专业支持团队。

运维经验总结

定期检查 vCenter 清单中的虚拟机状态,及时清理孤立虚拟机记录,可以提高 vCenter 的管理效率。对于大规模部署环境,建议使用 PowerCLI 自动化脚本定期检查和清理孤立虚拟机记录。

同时,确保 ESXi 主机和 vCenter Server 的网络连接稳定,避免在虚拟机迁移过程中发生中断,从而减少孤立虚拟机记录的产生。

通过以上方法,你可以有效地清理 vCenter 数据库中的孤立虚拟机记录,恢复 vCenter 的正常管理功能。


Reference: VMware KB 382350

 

 

有VM问题需要协助?

免费试用VMware技术助理(已接Deepseek)!即时解答VM难题

→ 🤖VM技术助理

解析和诊断各类vCenter错误,ESXi日志,虚拟机vmware.log

→ 📕VMware日志分析器

图书推介 - 京东自营

24小时热门

还有更多VMware问题?

免费试下我们的VMware技术助理(已接Deepseek)!即时解答VM难题 → 🤖VM技术助理

试试 📕VMware日志分析器 免费诊断各类vCenter错误,ESXi日志,虚拟机vmware.log等等

########

扫码加入VM资源共享交流微信群(请备注加群

需要协助?或者只是想技术交流一下,直接联系我们!

推荐更多

NSX 覆盖网络上的虚拟机无法 ping DNS 服务器和解析名称
运维必备

NSX 覆盖网络上的虚拟机无法 ping DNS 服务器和解析名称

NSX 覆盖网络上的虚拟机无法 ping DNS 服务器和解析名称。NSX 覆盖网络上的虚拟机无法 ping DNS 服务器和解析名称?本文介绍根本原因和完整的解决方法。 本文针对该问题提供了深度剖析与实测解决方案。

vLCM 无法解压缩更新文件的解决方法
运维必备

vLCM 无法解压缩更新文件的解决方法

vLCM 无法解压缩更新文件的解决方法。vLCM 导入更新文件时在 20% 失败,提示无法解压缩包?本文介绍根本原因和完整的解决方法。 本文针对该问题提供了深度剖析与实测解决方案。

无法卸载 VMFS 数据存储,提示 Reason: Busy
运维必备

无法卸载 VMFS 数据存储,提示 Reason: Busy

无法卸载 VMFS 数据存储,提示 Reason: Busy。无法卸载 VMFS 数据存储并提示 Reason: Busy?本文介绍根本原因和完整的故障排查方法。 本文针对该问题提供了深度剖析与实测解决方案。

ESXi 主机在 \"activating: storage-path-claim\" 过程中挂起或延迟
运维必备

ESXi 主机在 \”activating: storage-path-claim\” 过程中挂起或延迟

ESXi 主机在 \”activating: storage-path-claim\” 过程中挂起或延迟。ESXi 主机在启动过程中遇到 \”activating: storage-path-claim\” 任务耗时过长的问题?本文介绍根本原因和完整的故障排查方法。 本文针对该问题提供了深度剖析与实测解决方案。

//omg10.com/4/9119499