vCenter中删除孤立的cp-replica
重大警告与前提说明
- 高风险操作:此流程涉及直接操作vCenter数据库,操作不当可能导致vCenter服务不可用或数据丢失。
- 必须创建备份:在执行任何删除操作前,务必已完成第2步的VC快照,并确认快照创建成功。这是最重大的恢复手段。
- 确认孤立对象:确保您要删除的 VM_ID 的确 代表一个已不存在于清单中的孤立虚拟机(如通过vSphere Client确认其已消失但存储未释放)。
- 环境差异:本指南基于VCSA(vCenter Server Appliance)。如果您使用的是Windows版vCenter,其PostgreSQL路径和命令可能不同。

操作步骤
1. 准备工作与环境隔离
- 暂停VDI使用:通知用户暂停通过VDI连接使用vCenter,以避免在维护期间产生数据不一致。
- 创建vCenter快照:在vSphere Client中为vCenter Server虚拟机创建一个完整的快照,并为其添加描述性名称(例如 Pre-DBCleanup-[日期])。
2. 停止vCenter服务
- 使用SSH客户端连接至VCSA的地址。
- 输入 shell 命令以启用Bash shell。
- 停止核心服务:
- bash
- service-control –stop vmware-vpxd

3. 查询并确认孤立虚拟机ID
- 连接到VCDB数据库:
/opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
- 执行SQL查询,查找所有实体(包括已删除的孤立项):
SELECT id, name FROM vpx_entity WHERE name LIKE '%<孤儿VM名称或关键字>%';

说明:将 <孤儿VM名称或关键字> 替换为你要找的虚拟机的部分或全部名称。仔细核对查询结果中的 id 和 name,确认目标 VM_ID。假设我们确认要删除的ID是 2130。
4. 执行数据库删除操作 (谨慎!)
请务必严格按照以下顺序执行删除语句,以避免外键约束错误。 在PostgreSQL命令行中逐条执行:
sql
-- 注意:将所有语句中的 2130 替换为您确认的实际孤立VM_ID。
BEGIN; -- 提议开启事务,若出错可回滚
DELETE FROM VPX_GUEST_DISK WHERE VM_ID = 2130;
DELETE FROM VPX_VM_VIRTUAL_DEVICE WHERE VM_ID = 2130; -- 修正了原文档中的条件错误
DELETE FROM VPX_VM_CONFIG_INFO WHERE ID = 2130;
DELETE FROM VPX_VM_DS_SPACE WHERE VM_ID = 2130;
DELETE FROM VPX_VM_FLE_DISK_LAYOUT WHERE VM_ID = 2130;
DELETE FROM VPX_VM_FLE_FILE_INFO WHERE VM_ID = 2130;
DELETE FROM VPX_VM_FILE_LAYOUT_EX WHERE VM_ID = 2130;
DELETE FROM VPX_VM WHERE ID = 2130;
DELETE FROM VPX_ENTITY WHERE ID = 2130;
-- 如果所有删除操作均未报错,则提交事务
COMMIT;
-- 如果任何一条语句出错,请执行回滚
-- ROLLBACK;

说明:使用 BEGIN; 和 COMMIT; 可以将所有删除操作包装在一个事务中。如果中间任何一步失败,可以执行 ROLLBACK; 来回滚所有操作,保证数据库一致性。操作完成后,输入 q 退出数据库。
5. 重启vCenter服务
在VCSA的shell中,执行以下命令重启服务:

bash
service-control --start vmware-vpxd
服务启动可能需要几分钟时间。您可以通过以下命令监控启动状态:
bash
service-control --status vmware-vpxd
6. 事后验证
- 通过vSphere Client登录vCenter,确认孤立的虚拟机已彻底消失。
- 检查相关联的存储空间是否已被释放。
- 确认其他虚拟机和功能运行正常。
- (可选) 在稳定运行一段时间后(如24小时),可以思考删除在步骤1中创建的vCenter快照。
总结与提议
- 核心保障:快照是您操作安全的最终保障。
- 精准操作:最关键的一步是准确识别要删除的 VM_ID,切勿误删。
- 事务支持:使用 BEGIN; 和 COMMIT;/ROLLBACK; 是一个良好的实践,增加了操作的安全性。
- 文档更新:优化了表名和删除顺序,使其更符合实际的数据库约束关系。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...

